[java] better error message when permits list not allowed (IDEA-350501)

GitOrigin-RevId: 93cc9241dd77e12df1baeda1d06538f3159a6e59
This commit is contained in:
Bas Leijdekkers
2024-04-03 14:14:17 +00:00
committed by intellij-monorepo-bot
parent e614239ca4
commit 0fc08dae0c
4 changed files with 11 additions and 11 deletions
@@ -1211,12 +1211,12 @@ public final class HighlightClassUtil {
PsiIdentifier nameIdentifier = aClass.getNameIdentifier();
if (nameIdentifier == null) return;
if (aClass.isEnum() || aClass.isRecord() || aClass.isAnnotationType()) {
String description = aClass.isEnum() ? JavaErrorBundle.message("permits.after.enum") : null;
if (description == null) {
description = JavaErrorBundle.message(aClass.isRecord() ? "record.permits" : "annotation.type.permits");
}
String description;
if (aClass.isEnum()) description = JavaErrorBundle.message("permits.after.enum");
else if (aClass.isRecord()) description = JavaErrorBundle.message("record.permits");
else description = JavaErrorBundle.message("annotation.type.permits");
HighlightInfo.Builder builder = HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR)
.range(list)
.range(list.getFirstChild())
.descriptionAndTooltip(description);
IntentionAction action = QuickFixFactory.getInstance().createDeleteFix(list);
builder.registerFix(action, null, null, null, null);
@@ -104,7 +104,7 @@ no.interface.expected=No interface expected here
class.expected=Class name expected here
implements.after.interface=No implements clause allowed for interface
extends.after.enum=No extends clause allowed for enum
permits.after.enum=No permits clause allowed for enum
permits.after.enum='permits' not allowed on enum
class.must.be.abstract=Class ''{0}'' must either be declared abstract or implement abstract method ''{1}'' in ''{2}''
enum.constant.must.implement.method=Enum constant ''{0}'' must implement abstract method ''{1}'' in ''{2}''
class.must.implement.method=Class ''{0}'' must implement abstract method ''{1}'' in ''{2}''
@@ -514,7 +514,7 @@ record.accessor=Record component accessor
record.component.not.initialized=Record component ''{0}'' might not be initialized in canonical constructor
compact.constructor.in.regular.class=Parameter list expected
record.compact.constructor.return='return' statement is not allowed in compact constructor
record.permits=No permits clause allowed for record
record.permits='permits' not allowed on record
insufficient.language.level={0} are not supported at language level ''{1}''
@@ -583,7 +583,7 @@ text.improper.formed.type=Improper formed type; some type parameters are missing
text.class.is.not.accessible={0} is not accessible in current context
text.class.cannot.access=Cannot access {0}
auto.closeable.resource=auto-closeable resource
annotation.type.permits=No permits clause allowed for annotation type
annotation.type.permits='permits' not allowed on @interface
too.many.array.dimensions=Too many array dimensions
error.cannot.infer.pattern.type=Cannot infer pattern type: {0}
error.extra.semicolons.between.import.statements.not.allowed=Extra semicolons between import statements are not allowed
@@ -9,7 +9,7 @@ class ClassWithComponents<error descr="Record header declared for non-record">(i
class ClassWithComponents2<error descr="Record header declared for non-record">(int x, int y)</error> {}
<error descr="Modifier 'abstract' not allowed here">abstract</error> record AbstractRecord() {}
record ExtendsObject() <error descr="No extends clause allowed for record">extends Object</error> {}
record PermitsObject() <error descr="No permits clause allowed for record">permits Object</error> {}
record PermitsObject() <error descr="'permits' not allowed on record">permits</error> Object {}
class ExtendsRecord extends <error descr="Cannot inherit from final 'NoComponents'">NoComponents</error> {}
abstract class ExtendsJLR extends <error descr="Classes cannot directly extend 'java.lang.Record'">Record</error> {}
class AnonymousExtendsJLR {
@@ -19,7 +19,7 @@ final class IndirectInheritor implements MiddleMan {}
sealed class AnotherPackage permits <error descr="Class is not allowed to extend sealed class from another package">p1.P1</error> {}
enum ImlicitlySealedWithPermitsClause <error descr="No permits clause allowed for enum">permits FOO</error> {
enum ImlicitlySealedWithPermitsClause <error descr="'permits' not allowed on enum">permits</error> FOO {
FOO {};
}
@@ -27,4 +27,4 @@ sealed class Parent permits TypedChild<error descr="Generics are not allowed in
non-sealed class TypedChild<F> extends Parent {}
@interface AnnotationType <error descr="No permits clause allowed for annotation type">permits I</error> {}
@interface AnnotationType <error descr="'permits' not allowed on @interface">permits</error> I {}