mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: more clear error message on trying to reference member of primitive type (IDEA-321123)
GitOrigin-RevId: 7244dcae3a1a93396930b6a7e4b1303a8482dbf0
This commit is contained in:
committed by
intellij-monorepo-bot
parent
4daa4f49ea
commit
b2cc1fde75
+13
-4
@@ -868,11 +868,20 @@ public final class HighlightMethodUtil {
|
||||
}
|
||||
else if (candidates.length == 0) {
|
||||
PsiClass qualifierClass = RefactoringChangeUtil.getQualifierClass(referenceToMethod);
|
||||
String qualifier = qualifierClass != null ? qualifierClass.getName() : null;
|
||||
String className = qualifierClass != null ? qualifierClass.getName() : null;
|
||||
PsiExpression qualifierExpression = referenceToMethod.getQualifierExpression();
|
||||
|
||||
description = qualifier != null
|
||||
? JavaErrorBundle.message("ambiguous.method.call.no.match", referenceToMethod.getReferenceName(), qualifier)
|
||||
: JavaErrorBundle.message("cannot.resolve.method", referenceToMethod.getReferenceName() + buildArgTypesList(list, true));
|
||||
if (className != null) {
|
||||
description = JavaErrorBundle.message("ambiguous.method.call.no.match", referenceToMethod.getReferenceName(), className);
|
||||
}
|
||||
else {
|
||||
description =
|
||||
qualifierExpression != null &&
|
||||
qualifierExpression.getType() instanceof PsiPrimitiveType primitiveType &&
|
||||
!primitiveType.equals(PsiTypes.nullType()) && !primitiveType.equals(PsiTypes.voidType())
|
||||
? JavaErrorBundle.message("cannot.call.method.on.type", qualifierExpression.getText(), primitiveType.getPresentableText(false))
|
||||
: JavaErrorBundle.message("cannot.resolve.method", referenceToMethod.getReferenceName() + buildArgTypesList(list, true));
|
||||
}
|
||||
highlightInfoType = HighlightInfoType.WRONG_REF;
|
||||
}
|
||||
else {
|
||||
|
||||
+9
@@ -3266,6 +3266,15 @@ public final class HighlightUtil {
|
||||
}
|
||||
else {
|
||||
description = JavaErrorBundle.message("cannot.resolve.symbol", refName.getText());
|
||||
if (ref instanceof PsiReferenceExpression expression) {
|
||||
PsiExpression qualifierExpression = expression.getQualifierExpression();
|
||||
if (qualifierExpression != null &&
|
||||
qualifierExpression.getType() instanceof PsiPrimitiveType primitiveType &&
|
||||
!primitiveType.equals(PsiTypes.nullType()) && !primitiveType.equals(PsiTypes.voidType())) {
|
||||
description = JavaErrorBundle.message("cannot.access.member.on.type", qualifierExpression.getText(),
|
||||
primitiveType.getPresentableText(false));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
HighlightInfo.Builder info =
|
||||
|
||||
@@ -305,6 +305,8 @@ deprecated.symbol=''{0}'' is deprecated
|
||||
marked.for.removal.symbol=''{0}'' is deprecated and marked for removal
|
||||
qualifier.must.be.expression=Qualifier must be an expression
|
||||
cannot.resolve.symbol=Cannot resolve symbol ''{0}''
|
||||
cannot.access.member.on.type=Cannot access member because ''{0}'' has primitive type {1}
|
||||
cannot.call.method.on.type=Cannot call method because ''{0}'' has primitive type {1}
|
||||
class.is.already.defined.in.single.static.import=Class ''{0}'' is already defined in a single static import
|
||||
class.is.ambiguous.in.single.static.import=Class ''{0}'' is ambiguous in a single static import
|
||||
field.is.already.defined.in.single.static.import=Field ''{0}'' is already defined in a single static import
|
||||
|
||||
+3
@@ -50,6 +50,9 @@ public class a12 {
|
||||
|
||||
<error descr="Cannot resolve method 'foo123Unresolved' in 'a12'">foo123Unresolved</error>(<error descr="Expression expected">String</error>);
|
||||
<error descr="Cannot resolve method 'foo123Unresolved' in 'a12'">foo123Unresolved</error>(<error descr="Cannot resolve symbol 'xxxx'">xxxx</error>);
|
||||
int i = 0;
|
||||
System.out.println(i.<error descr="Cannot access member because 'i' has primitive type int">x</error>);
|
||||
System.out.println(true.<error descr="Cannot call method because 'true' has primitive type boolean">toString</error>());
|
||||
|
||||
<error descr="Cannot resolve method 'xxxxxx' in 'a12'">xxxxxx</error>(<error descr="Cannot resolve symbol 'xxxxxx'">xxxxxx</error>);
|
||||
|
||||
|
||||
+1
@@ -2,5 +2,6 @@ class Test {
|
||||
void test() {
|
||||
var x = <error descr="Cannot resolve method 'unresolved' in 'Test'">unresolved</error>();
|
||||
System.out.println(x.<error descr="Cannot resolve method 'hashCode()'">hashCode</error>());
|
||||
System.out.println(x.<error descr="Cannot resolve symbol 'x'">x</error>);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user