8246199: 'permits' is a restricted identifier
Reviewed-by: mcimadamore
This commit is contained in:
parent
358714bcd0
commit
e90621c169
src/jdk.compiler/share/classes/com/sun/tools/javac/parser
test/langtools/tools/javac/sealed
@ -3360,6 +3360,13 @@ public class JavacParser implements Parser {
|
||||
log.warning(pos, Warnings.RestrictedTypeNotAllowedPreview(name, Source.JDK15));
|
||||
}
|
||||
}
|
||||
if (name == names.permits) {
|
||||
if (allowSealedTypes) {
|
||||
return Source.JDK15;
|
||||
} else if (shouldWarn) {
|
||||
log.warning(pos, Warnings.RestrictedTypeNotAllowedPreview(name, Source.JDK15));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -267,6 +267,8 @@ public class SealedCompilationTests extends CompilationTestCase {
|
||||
|
||||
for (String s : List.of(
|
||||
"class sealed {}",
|
||||
"enum sealed {}",
|
||||
"record sealed() {}",
|
||||
"interface sealed {}",
|
||||
"@interface sealed {}"
|
||||
)) {
|
||||
@ -281,6 +283,34 @@ public class SealedCompilationTests extends CompilationTestCase {
|
||||
assertFail("compiler.err.restricted.type.not.allowed.here", s);
|
||||
}
|
||||
|
||||
for (String s : List.of(
|
||||
"class SealedTest { String permits; }",
|
||||
"class SealedTest { int permits = 0; }",
|
||||
"class SealedTest { void test(String permits) { } }",
|
||||
"class SealedTest { void permits(String permits) { } }",
|
||||
"class SealedTest { void test() { String permits = null; } }"
|
||||
)) {
|
||||
assertOK(s);
|
||||
}
|
||||
|
||||
for (String s : List.of(
|
||||
"class permits {}",
|
||||
"enum permits {}",
|
||||
"record permits() {}",
|
||||
"interface permits {}",
|
||||
"@interface permits {}"
|
||||
)) {
|
||||
assertFail("compiler.err.restricted.type.not.allowed", s);
|
||||
}
|
||||
|
||||
for (String s : List.of(
|
||||
"class Foo { permits m() {} }",
|
||||
"class Foo { permits i; }",
|
||||
"class Foo { void m(permits i) {} }"
|
||||
)) {
|
||||
assertFail("compiler.err.restricted.type.not.allowed.here", s);
|
||||
}
|
||||
|
||||
String[] testOptions = {/* no options */};
|
||||
String[] previousCompOptions = getCompileOptions();
|
||||
setCompileOptions(testOptions);
|
||||
|
Loading…
x
Reference in New Issue
Block a user