mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
Java: fix and improve error message (IDEA-356573)
GitOrigin-RevId: 0b3ff17ed8d439ff99ce1e2294a6fac2dcb83770
This commit is contained in:
committed by
intellij-monorepo-bot
parent
291bb89726
commit
5b1dbe4383
@@ -1448,14 +1448,16 @@ public final class GenericsHighlightUtil {
|
||||
static HighlightInfo.Builder checkRawOnParameterizedType(@NotNull PsiJavaCodeReferenceElement parent, @Nullable PsiElement resolved) {
|
||||
PsiReferenceParameterList list = parent.getParameterList();
|
||||
if (list == null || list.getTypeArguments().length > 0) return null;
|
||||
PsiElement qualifier = parent.getQualifier();
|
||||
if (qualifier instanceof PsiJavaCodeReferenceElement &&
|
||||
((PsiJavaCodeReferenceElement)qualifier).getTypeParameters().length > 0 &&
|
||||
resolved instanceof PsiTypeParameterListOwner &&
|
||||
((PsiTypeParameterListOwner)resolved).hasTypeParameters() &&
|
||||
!((PsiTypeParameterListOwner)resolved).hasModifierProperty(PsiModifier.STATIC)) {
|
||||
String message = JavaErrorBundle.message("text.improper.formed.type");
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(parent).descriptionAndTooltip(message);
|
||||
if (parent.getQualifier() instanceof PsiJavaCodeReferenceElement ref &&
|
||||
ref.getTypeParameters().length > 0 &&
|
||||
resolved instanceof PsiTypeParameterListOwner typeParameterListOwner &&
|
||||
typeParameterListOwner.hasTypeParameters() &&
|
||||
!typeParameterListOwner.hasModifierProperty(PsiModifier.STATIC)) {
|
||||
PsiElement referenceNameElement = parent.getReferenceNameElement();
|
||||
if (referenceNameElement != null) {
|
||||
String message = JavaErrorBundle.message("text.improper.formed.type", referenceNameElement.getText());
|
||||
return HighlightInfo.newHighlightInfo(HighlightInfoType.ERROR).range(parent).descriptionAndTooltip(message);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -585,7 +585,7 @@ annotation.cannot.be.local=Local annotations are not allowed
|
||||
create.class.action.this.not.valid.java.qualified.name=This is not a valid Java qualified name
|
||||
text.class.inherits.abstract.and.default={0} inherits abstract and default for {1} from types {2} and {3}
|
||||
text.class.inherits.unrelated.defaults={0} inherits unrelated defaults for {1} from types {2}
|
||||
text.improper.formed.type=Improper formed type; some type parameters are missing
|
||||
text.improper.formed.type=Improperly formed type: ''{0}'' needs type arguments because its qualifier has type arguments
|
||||
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
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class A<T> {
|
||||
class B<S> {
|
||||
<error descr="Improper formed type; some type parameters are missing">A<T>.B</error> x;
|
||||
<error descr="Improperly formed type: 'B' needs type arguments because its qualifier has type arguments">A<T>.B</error> x;
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,7 @@ class GenericOuter<T> {
|
||||
|
||||
class OuterClient {
|
||||
public void context() {
|
||||
<error descr="Improper formed type; some type parameters are missing">GenericOuter<String>.GenericInner</error> v1 = null;
|
||||
<error descr="Improperly formed type: 'GenericInner' needs type arguments because its qualifier has type arguments">GenericOuter<String>.GenericInner</error> v1 = null;
|
||||
GenericOuter.GenericInner<error descr="Type arguments given on a raw type"><String></error> v2 = null;
|
||||
GenericOuter.GenericInner v3 = null;
|
||||
GenericOuter<String>.GenericInner<String> v4 = null;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class A<T> {
|
||||
class B<S> {
|
||||
<error descr="Improper formed type; some type parameters are missing">A<T>.B</error> x;
|
||||
<error descr="Improperly formed type: 'B' needs type arguments because its qualifier has type arguments">A<T>.B</error> x;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ class GenericOuter<T> {
|
||||
|
||||
class OuterClient {
|
||||
public void context() {
|
||||
<error descr="Improper formed type; some type parameters are missing">GenericOuter<String>.GenericInner</error> v1 = null;
|
||||
<error descr="Improperly formed type: 'GenericInner' needs type arguments because its qualifier has type arguments">GenericOuter<String>.GenericInner</error> v1 = null;
|
||||
GenericOuter.GenericInner<error descr="Type arguments given on a raw type"><String></error> v2 = null;
|
||||
GenericOuter.GenericInner v3 = null;
|
||||
GenericOuter<String>.GenericInner<String> v4 = null;
|
||||
|
||||
Reference in New Issue
Block a user