
Inline adoc files when they are included exactly once. Also fix language tags because this inlining gives us better information on what language the code is written in.
74 lines
1.5 KiB
Plaintext
74 lines
1.5 KiB
Plaintext
== Why is this an issue?
|
|
|
|
Even if it is technically possible, https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.8[Restricted Identifiers] should not be used as identifiers. This is only possible for compatibility reasons, using it in Java code is confusing and should be avoided.
|
|
|
|
|
|
Note that this applies to any version of Java, including the one where these identifiers are not yet restricted, to avoid future confusion.
|
|
|
|
|
|
This rule reports an issue when restricted identifiers:
|
|
|
|
* var
|
|
* yield
|
|
* record
|
|
|
|
are used as identifiers.
|
|
|
|
|
|
=== Noncompliant code example
|
|
|
|
[source,java]
|
|
----
|
|
var var = "var"; // Noncompliant: compiles but this code is confusing
|
|
var = "what is this?";
|
|
|
|
int yield(int i) { // Noncompliant
|
|
return switch (i) {
|
|
case 1: yield(0); // This is a yield from switch expression, not a recursive call.
|
|
default: yield(i-1);
|
|
};
|
|
}
|
|
|
|
String record = "record"; // Noncompliant
|
|
----
|
|
|
|
|
|
=== Compliant solution
|
|
|
|
[source,java]
|
|
----
|
|
var myVariable = "var";
|
|
|
|
int minusOne(int i) {
|
|
return switch (i) {
|
|
case 1: yield(0);
|
|
default: yield(i-1);
|
|
};
|
|
}
|
|
|
|
String myRecord = "record";
|
|
----
|
|
|
|
|
|
== Resources
|
|
|
|
* https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.8[JLS16, 3.8: Identifiers]
|
|
|
|
ifdef::env-github,rspecator-view[]
|
|
|
|
'''
|
|
== Implementation Specification
|
|
(visible only on this page)
|
|
|
|
=== Message
|
|
|
|
Rename this [variable|method name] to not match a restricted identifier.
|
|
|
|
|
|
=== Highlighting
|
|
|
|
Identifier
|
|
|
|
|
|
endif::env-github,rspecator-view[]
|