Java: add quick-fix and clarify error message (IDEA-318627)

GitOrigin-RevId: ef8be0f040f1321b85d8751fe8b59825d2298da9
This commit is contained in:
Bas Leijdekkers
2023-04-21 15:21:01 +02:00
committed by intellij-monorepo-bot
parent e71f1d2194
commit d433c91b2a
8 changed files with 26 additions and 9 deletions

View File

@@ -1372,8 +1372,11 @@ public final class GenericsHighlightUtil {
PsiReferenceParameterList parameterList = ((PsiJavaCodeReferenceElement)qualifier).getParameterList();
if (parameterList != null && parameterList.getTypeArguments().length > 0) {
String message = JavaErrorBundle.message("generics.select.static.class.from.parameterized.type",
HighlightUtil.formatClass((PsiClass)resolved));
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(parameterList).descriptionAndTooltip(message);
HighlightUtil.formatClass((PsiClass)resolved));
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR)
.range(parameterList)
.descriptionAndTooltip(message)
.registerFix(QUICK_FIX_FACTORY.createDeleteFix(parameterList), null, null, null, null);
}
}
}

View File

@@ -51,7 +51,7 @@ generics.type.or.method.does.not.have.type.parameters={0} ''{1}'' does not have
generics.wrong.number.of.type.arguments=Wrong number of type arguments: {0}; required: {1}
generics.cannot.be.inherited.with.different.type.arguments=''{0}'' cannot be inherited with different type arguments: ''{1}'' and ''{2}''
generics.cannot.be.inherited.as.raw.and.generic=''{0}'' cannot be inherited as a raw type and with generic type arguments ''{1}''
generics.select.static.class.from.parameterized.type=Cannot select static class ''{0}'' from parameterized type
generics.select.static.class.from.parameterized.type=Type arguments are not allowed here because class ''{0}'' is static
generics.methods.have.same.erasure={0}; both methods have same erasure
generics.methods.have.same.erasure.override={0}; both methods have same erasure, yet neither overrides the other
generics.methods.have.same.erasure.hide={0}; both methods have same erasure, yet neither hides the other

View File

@@ -16,10 +16,10 @@ class OuterClient {
GenericOuter.GenericInner v3 = null;
GenericOuter<String>.GenericInner<String> v4 = null;
GenericOuter<error descr="Cannot select static class 'GenericOuter.StaticGenericInner' from parameterized type"><String></error>.StaticGenericInner sv1 = null;
GenericOuter<error descr="Type arguments are not allowed here because class 'GenericOuter.StaticGenericInner' is static"><String></error>.StaticGenericInner sv1 = null;
GenericOuter.StaticGenericInner<String> sv2 = null;
GenericOuter.StaticGenericInner sv3 = null;
GenericOuter<error descr="Cannot select static class 'GenericOuter.StaticGenericInner' from parameterized type"><String></error>.StaticGenericInner<String> sv4 = null;
GenericOuter<error descr="Type arguments are not allowed here because class 'GenericOuter.StaticGenericInner' is static"><String></error>.StaticGenericInner<String> sv4 = null;
GenericOuter<String>.SimpleInner iv1 = null;
GenericOuter.SimpleInner<error descr="Type arguments given on a raw type"><String></error> iv2 = null;

View File

@@ -121,7 +121,7 @@ class Foo {
//end of IDEADEV-6103
class IDontCompile {
Map<error descr="Cannot select static class 'java.util.Map.Entry' from parameterized type"><?, ?></error>.Entry map;
Map<error descr="Type arguments are not allowed here because class 'java.util.Map.Entry' is static"><?, ?></error>.Entry map;
}
abstract class GenericTest99<E extends Enum<E>> {

View File

@@ -16,10 +16,10 @@ class OuterClient {
GenericOuter.GenericInner v3 = null;
GenericOuter<String>.GenericInner<String> v4 = null;
GenericOuter<error descr="Cannot select static class 'GenericOuter.StaticGenericInner' from parameterized type"><String></error>.StaticGenericInner sv1 = null;
GenericOuter<error descr="Type arguments are not allowed here because class 'GenericOuter.StaticGenericInner' is static"><String></error>.StaticGenericInner sv1 = null;
GenericOuter.StaticGenericInner<String> sv2 = null;
GenericOuter.StaticGenericInner sv3 = null;
GenericOuter<error descr="Cannot select static class 'GenericOuter.StaticGenericInner' from parameterized type"><String></error>.StaticGenericInner<String> sv4 = null;
GenericOuter<error descr="Type arguments are not allowed here because class 'GenericOuter.StaticGenericInner' is static"><String></error>.StaticGenericInner<String> sv4 = null;
GenericOuter<String>.SimpleInner iv1 = null;
GenericOuter.SimpleInner<error descr="Type arguments given on a raw type"><String></error> iv2 = null;

View File

@@ -121,7 +121,7 @@ class Foo {
//end of IDEADEV-6103
class IDontCompile {
Map<error descr="Cannot select static class 'java.util.Map.Entry' from parameterized type"><?, ?></error>.Entry map;
Map<error descr="Type arguments are not allowed here because class 'java.util.Map.Entry' is static"><?, ?></error>.Entry map;
}
abstract class GenericTest99<E extends Enum<E>> {

View File

@@ -0,0 +1,7 @@
// "Remove type arguments" "true-preview"
import java.util.Map;
class X {
private Map.Entry entry;
}

View File

@@ -0,0 +1,7 @@
// "Remove type arguments" "true-preview"
import java.util.Map;
class X {
private Map<caret><?, ?>.Entry entry;
}