mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Revert "Sealed classes: restricted keyword/identifier -> contextual keyword (IDEA-257414)"
This reverts commit a3b7cb3c GitOrigin-RevId: bc91ae528d6f836e9cf43c19e9923286c8de0a9c
This commit is contained in:
committed by
intellij-monorepo-bot
parent
70f553a095
commit
79f7d4dd58
+4
-4
@@ -311,11 +311,11 @@ public final class HighlightClassUtil {
|
||||
firstChild.getText().startsWith("#!");
|
||||
}
|
||||
|
||||
static HighlightInfo checkClassContextualKeyword(@NotNull LanguageLevel level, @NotNull PsiIdentifier identifier) {
|
||||
static HighlightInfo checkClassRestrictedKeyword(@NotNull LanguageLevel level, @NotNull PsiIdentifier identifier) {
|
||||
String className = identifier.getText();
|
||||
if (isContextualKeyword(className, level)) {
|
||||
if (isRestrictedIdentifier(className, level)) {
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR)
|
||||
.descriptionAndTooltip(JavaErrorBundle.message("contextual.keyword", className))
|
||||
.descriptionAndTooltip(JavaErrorBundle.message("restricted.identifier", className))
|
||||
.range(identifier)
|
||||
.create();
|
||||
}
|
||||
@@ -327,7 +327,7 @@ public final class HighlightClassUtil {
|
||||
* @param level language level
|
||||
* @return true if given name cannot be used as a type name at given language level
|
||||
*/
|
||||
public static boolean isContextualKeyword(String typeName, @NotNull LanguageLevel level) {
|
||||
public static boolean isRestrictedIdentifier(String typeName, @NotNull LanguageLevel level) {
|
||||
return PsiKeyword.VAR.equals(typeName) && HighlightingFeature.LVTI.isSufficient(level) ||
|
||||
PsiKeyword.YIELD.equals(typeName) && HighlightingFeature.SWITCH_EXPRESSION.isSufficient(level) ||
|
||||
PsiKeyword.RECORD.equals(typeName) && HighlightingFeature.RECORDS.isSufficient(level) ||
|
||||
|
||||
+5
-5
@@ -431,12 +431,12 @@ public final class HighlightUtil {
|
||||
return highlightInfo;
|
||||
}
|
||||
|
||||
static HighlightInfo checkContextualKeywordReference(@NotNull PsiJavaCodeReferenceElement ref,
|
||||
@NotNull PsiClass resolved,
|
||||
@NotNull LanguageLevel languageLevel) {
|
||||
static HighlightInfo checkRestrictedIdentifierReference(@NotNull PsiJavaCodeReferenceElement ref,
|
||||
@NotNull PsiClass resolved,
|
||||
@NotNull LanguageLevel languageLevel) {
|
||||
String name = resolved.getName();
|
||||
if (HighlightClassUtil.isContextualKeyword(name, languageLevel)) {
|
||||
String message = JavaErrorBundle.message("contextual.keyword.reference", name);
|
||||
if (HighlightClassUtil.isRestrictedIdentifier(name, languageLevel)) {
|
||||
String message = JavaErrorBundle.message("restricted.identifier.reference", name);
|
||||
PsiElement range = ObjectUtils.notNull(ref.getReferenceNameElement(), ref);
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).descriptionAndTooltip(message).range(range).create();
|
||||
}
|
||||
|
||||
+2
-2
@@ -736,7 +736,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
myHolder.add(HighlightNamesUtil.highlightClassName(aClass, identifier, colorsScheme));
|
||||
}
|
||||
if (!myHolder.hasErrorResults()) {
|
||||
myHolder.add(HighlightClassUtil.checkClassContextualKeyword(myLanguageLevel, identifier));
|
||||
myHolder.add(HighlightClassUtil.checkClassRestrictedKeyword(myLanguageLevel, identifier));
|
||||
}
|
||||
if (!myHolder.hasErrorResults() && myLanguageLevel.isAtLeast(LanguageLevel.JDK_1_8)) {
|
||||
myHolder.add(GenericsHighlightUtil.checkUnrelatedDefaultMethods(aClass, identifier));
|
||||
@@ -1326,7 +1326,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
|
||||
myHolder.add(HighlightUtil.checkPackageAndClassConflict(ref, myFile));
|
||||
}
|
||||
if (!myHolder.hasErrorResults() && resolved instanceof PsiClass) {
|
||||
myHolder.add(HighlightUtil.checkContextualKeywordReference(ref, (PsiClass)resolved, myLanguageLevel));
|
||||
myHolder.add(HighlightUtil.checkRestrictedIdentifierReference(ref, (PsiClass)resolved, myLanguageLevel));
|
||||
}
|
||||
if (!myHolder.hasErrorResults()) {
|
||||
myHolder.add(HighlightUtil.checkMemberReferencedBeforeConstructorCalled(ref, resolved, myFile, myInsideConstructorOfClass));
|
||||
|
||||
@@ -62,8 +62,8 @@ public class CreateClassAction extends JavaCreateTemplateInPackageAction<PsiClas
|
||||
return JavaErrorBundle.message("create.class.action.this.not.valid.java.qualified.name");
|
||||
}
|
||||
String shortName = StringUtil.getShortName(inputString);
|
||||
if (HighlightClassUtil.isContextualKeyword(shortName, level)) {
|
||||
return JavaErrorBundle.message("contextual.keyword", shortName);
|
||||
if (HighlightClassUtil.isRestrictedIdentifier(shortName, level)) {
|
||||
return JavaErrorBundle.message("restricted.identifier", shortName);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -25,6 +25,6 @@ public class JavaTypeRenameValidator implements RenameInputValidator {
|
||||
Project project = element.getProject();
|
||||
LanguageLevel level = PsiUtil.getLanguageLevel(element);
|
||||
return PsiNameHelper.getInstance(project).isIdentifier(newName, level) &&
|
||||
!HighlightClassUtil.isContextualKeyword(newName, level);
|
||||
!HighlightClassUtil.isRestrictedIdentifier(newName, level);
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,7 @@
|
||||
Reports the Java code constructs that may fail to compile in future Java versions. The following problems are reported:
|
||||
<ul>
|
||||
<li>Use of 'assert', 'enum' or '_' as an identifier</li>
|
||||
<li>Use of contextual keyword 'var' as a type name</li>
|
||||
<li>Use of restricted keyword 'var' as a type name</li>
|
||||
<li>Unqualified calls to method named 'yield'</li>
|
||||
<li>Modifiers on 'requires java.base' statement inside module-info.java</li>
|
||||
</ul>
|
||||
|
||||
@@ -413,8 +413,8 @@ module.access.does.not.read=Package ''{0}'' is declared in module ''{1}'', but m
|
||||
module.access.not.in.graph=Package ''{0}'' is declared in module ''{1}'', which is not in the module graph
|
||||
module.access.bad.name=Package ''{0}'' is declared in module with an invalid name (''{1}'')
|
||||
|
||||
contextual.keyword=''{0}'' is a contextual keyword and cannot be used for type declarations
|
||||
contextual.keyword.reference=Illegal reference to restricted type ''{0}''
|
||||
restricted.identifier=''{0}'' is a restricted identifier and cannot be used for type declarations
|
||||
restricted.identifier.reference=Illegal reference to restricted type ''{0}''
|
||||
|
||||
lvti.no.initializer=Cannot infer type: 'var' on variable without initializer
|
||||
lvti.lambda=Cannot infer type: lambda expression requires an explicit target type
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import java.lang.annotation.*;
|
||||
|
||||
class <error descr="'record' is a contextual keyword and cannot be used for type declarations">record</error> {
|
||||
class <error descr="'record' is a restricted identifier and cannot be used for type declarations">record</error> {
|
||||
void x(<error descr="Illegal reference to restricted type 'record'">record</error> r) {}
|
||||
}
|
||||
record <error descr="Record has no header declared">NoComponentList</error> {}
|
||||
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
class <error descr="'sealed' is a contextual keyword and cannot be used for type declarations">sealed</error> {}
|
||||
class <error descr="'permits' is a contextual keyword and cannot be used for type declarations">permits</error> {}
|
||||
class <error descr="'sealed' is a restricted identifier and cannot be used for type declarations">sealed</error> {}
|
||||
class <error descr="'permits' is a restricted identifier and cannot be used for type declarations">permits</error> {}
|
||||
+2
-2
@@ -1,7 +1,7 @@
|
||||
class Main {
|
||||
class <error descr="'var' is a contextual keyword and cannot be used for type declarations">var</error> {}
|
||||
class <error descr="'var' is a restricted identifier and cannot be used for type declarations">var</error> {}
|
||||
|
||||
<<error descr="'var' is a contextual keyword and cannot be used for type declarations">var</error> extends String> void foo() {}
|
||||
<<error descr="'var' is a restricted identifier and cannot be used for type declarations">var</error> extends String> void foo() {}
|
||||
|
||||
class Usage {
|
||||
<error descr="Illegal reference to restricted type 'var'">var</error> field = new <error descr="Illegal reference to restricted type 'var'">var</error>();
|
||||
|
||||
+1
-1
@@ -48,7 +48,7 @@ class YieldStatements {
|
||||
}
|
||||
}
|
||||
|
||||
class <error descr="'yield' is a contextual keyword and cannot be used for type declarations">yield</error> {
|
||||
class <error descr="'yield' is a restricted identifier and cannot be used for type declarations">yield</error> {
|
||||
void test(<error descr="Illegal reference to restricted type 'yield'">yield</error> yield) {
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user