mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 13:31:28 +07:00
java: adjusted "Cannot resolve method" message (IDEA-206898)
GitOrigin-RevId: 40fc7d00d6bcc4792dc097dde63dd40d08864068
This commit is contained in:
committed by
intellij-monorepo-bot
parent
154e2f757f
commit
cf944efffb
@@ -30,6 +30,7 @@ import com.intellij.psi.impl.source.resolve.graphInference.InferenceSession;
|
||||
import com.intellij.psi.infos.CandidateInfo;
|
||||
import com.intellij.psi.infos.MethodCandidateInfo;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.refactoring.util.RefactoringChangeUtil;
|
||||
import com.intellij.ui.ColorUtil;
|
||||
import com.intellij.util.JavaPsiConstructorUtil;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
@@ -714,15 +715,16 @@ public class HighlightMethodUtil {
|
||||
|
||||
description = HighlightUtil.staticContextProblemDescription(element);
|
||||
}
|
||||
else if (candidates.length == 0) {
|
||||
PsiClass qualifierClass = RefactoringChangeUtil.getQualifierClass(referenceToMethod);
|
||||
String qualifier = qualifierClass != null ? qualifierClass.getName() : null;
|
||||
|
||||
description = qualifier != null ? JavaErrorMessages.message("ambiguous.method.call.no.match", referenceToMethod.getReferenceName(), qualifier)
|
||||
: JavaErrorMessages.message("cannot.resolve.method", referenceToMethod.getReferenceName() + buildArgTypesList(list));
|
||||
highlightInfoType = HighlightInfoType.WRONG_REF;
|
||||
}
|
||||
else {
|
||||
String methodName = referenceToMethod.getReferenceName() + buildArgTypesList(list);
|
||||
description = JavaErrorMessages.message("cannot.resolve.method", methodName);
|
||||
if (candidates.length == 0) {
|
||||
highlightInfoType = HighlightInfoType.WRONG_REF;
|
||||
}
|
||||
else {
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
String toolTip = XmlStringUtil.escapeString(description);
|
||||
|
||||
@@ -161,6 +161,7 @@ method.call.expected=Method call expected
|
||||
ambiguous.method.call=Ambiguous method call: both ''{0}'' and ''{1}'' match
|
||||
ambiguous.reference=Reference to ''{0}'' is ambiguous, both ''{1}'' and ''{2}'' match
|
||||
cannot.resolve.method=Cannot resolve method ''{0}''
|
||||
ambiguous.method.call.no.match=Cannot resolve method ''{0}'' in ''{1}''
|
||||
missing.method.body=Missing method body, or declare abstract
|
||||
abstract.method.in.non.abstract.class=Abstract method in non-abstract class
|
||||
missing.return.type=Invalid method declaration; return type required
|
||||
|
||||
@@ -48,10 +48,10 @@ public class a12 {
|
||||
++<error descr="Variable expected">5</error>;
|
||||
<error descr="Variable expected">5</error> += 5;
|
||||
|
||||
<error descr="Cannot resolve method 'foo123Unresolved(?)'">foo123Unresolved</error>(<error descr="Expression expected">String</error>);
|
||||
<error descr="Cannot resolve method 'foo123Unresolved(?)'">foo123Unresolved</error>(<error descr="Cannot resolve symbol 'xxxx'">xxxx</error>);
|
||||
<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>);
|
||||
|
||||
<error descr="Cannot resolve method 'xxxxxx(?)'">xxxxxx</error>(<error descr="Cannot resolve symbol 'xxxxxx'">xxxxxx</error>);
|
||||
<error descr="Cannot resolve method 'xxxxxx' in 'a12'">xxxxxx</error>(<error descr="Cannot resolve symbol 'xxxxxx'">xxxxxx</error>);
|
||||
|
||||
// incomplete code should not cause 'expr expected'
|
||||
Object<error descr="';' expected"> </error>
|
||||
|
||||
@@ -4,9 +4,9 @@ public class Main {
|
||||
public static void main(String[] args) {
|
||||
pkg.sub.Test obj = new pkg.sub.Test();
|
||||
obj.m1();
|
||||
obj.<error descr="Cannot resolve method 'm2()'">m2</error>();
|
||||
obj.<error descr="Cannot resolve method 'm2' in 'Test'">m2</error>();
|
||||
|
||||
pkg.sub.Test.s1();
|
||||
pkg.sub.Test.<error descr="Cannot resolve method 's2()'">s2</error>();
|
||||
pkg.sub.Test.<error descr="Cannot resolve method 's2' in 'Test'">s2</error>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,6 @@ class Example {
|
||||
public void run() {}
|
||||
public void m2() {}
|
||||
};
|
||||
r.<error descr="Cannot resolve method 'm2()'">m2</error>();
|
||||
r.<error descr="Cannot resolve method 'm2' in 'Runnable'">m2</error>();
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,7 @@ class Main1 {
|
||||
|
||||
public static void main(String[] args) {
|
||||
List x = null;
|
||||
foo(x).iterator().next().<error descr="Cannot resolve method 'iterator()'">iterator</error>();
|
||||
foo(x).iterator().next().<error descr="Cannot resolve method 'iterator' in 'Object'">iterator</error>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ class Main {
|
||||
public static void main(String[] args) {
|
||||
List x = null;
|
||||
<error descr="Incompatible types. Found: 'java.lang.Object', required: 'java.lang.String'">String s = foo(x).get(0);</error>
|
||||
foo(x).iterator().next().<error descr="Cannot resolve method 'toLowerCase()'">toLowerCase</error>();
|
||||
foo(x).iterator().next().<error descr="Cannot resolve method 'toLowerCase' in 'Object'">toLowerCase</error>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ import java.util.*;
|
||||
class Main {
|
||||
|
||||
void foo(List<Integer> list) {
|
||||
bar(list, <error descr="Failed to resolve argument">i -> i.intValue()</error>, i -> i.<error descr="Cannot resolve method 'unknown()'">unknown</error>());
|
||||
bar1(list, <error descr="Failed to resolve argument">i -> i.intValue()</error>, i -> i.<error descr="Cannot resolve method 'unknown()'">unknown</error>());
|
||||
bar(list, <error descr="Failed to resolve argument">i -> i.intValue()</error>, i -> i.<error descr="Cannot resolve method 'unknown' in 'Integer'">unknown</error>());
|
||||
bar1(list, <error descr="Failed to resolve argument">i -> i.intValue()</error>, i -> i.<error descr="Cannot resolve method 'unknown' in 'Integer'">unknown</error>());
|
||||
}
|
||||
|
||||
<U, S_IN, S_OUT, R> R bar(List<S_IN> list,
|
||||
|
||||
@@ -48,7 +48,7 @@ class Test2 {
|
||||
{
|
||||
Class c = D.class;
|
||||
|
||||
D<String> d = new D<>(s -> s.<error descr="Cannot resolve method 'isEmpty()'">isEmpty</error>(), c);
|
||||
D<String> d1 = D.create(s -> s.<error descr="Cannot resolve method 'isEmpty()'">isEmpty</error>(), c);
|
||||
D<String> d = new D<>(s -> s.<error descr="Cannot resolve method 'isEmpty' in 'Object'">isEmpty</error>(), c);
|
||||
D<String> d1 = D.create(s -> s.<error descr="Cannot resolve method 'isEmpty' in 'Object'">isEmpty</error>(), c);
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ class C {
|
||||
interface II extends I {
|
||||
default void m() {
|
||||
I.super.m();
|
||||
<error descr="Unqualified super reference is not allowed in extension method">super.<error descr="Cannot resolve method 'm()'">m</error></error>();
|
||||
<error descr="Unqualified super reference is not allowed in extension method">super.<error descr="Cannot resolve method 'm' in 'Object'">m</error></error>();
|
||||
|
||||
System.out.println(<error descr="'C.I' is not an enclosing class">I.super</error>.i);
|
||||
System.out.println(<error descr="Unqualified super reference is not allowed in extension method">super.<error descr="Cannot resolve symbol 'i'">i</error></error>);
|
||||
|
||||
@@ -14,7 +14,7 @@ class MySymbol<T extends String> {
|
||||
|
||||
void findUsages(MySymbol s) {
|
||||
s.processSameSymbols(symbol -> {
|
||||
String definition = symbol.<error descr="Cannot resolve method 'locateDefinition()'">locateDefinition</error>();
|
||||
String definition = symbol.<error descr="Cannot resolve method 'locateDefinition' in 'Object'">locateDefinition</error>();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class MyTest {
|
||||
void m(String[] refInfos){
|
||||
refInfos = <error descr="Cannot resolve method 'unresolved(java.lang.String[], <lambda expression>)'">unresolved</error>(refInfos, refInfo -> {
|
||||
refInfos = <error descr="Cannot resolve method 'unresolved' in 'MyTest'">unresolved</error>(refInfos, refInfo -> {
|
||||
refInfo = n<error descr="'n(java.lang.String)' in 'MyTest' cannot be applied to '(<lambda parameter>)'">(refInfo)</error>;
|
||||
return refInfo;
|
||||
});
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import static a.A.foo;
|
||||
class Test {
|
||||
{
|
||||
foo(<error descr="Cannot resolve method 'unresolvedMethodCall()'">unresolvedMethodCall</error>());
|
||||
foo(<error descr="Cannot resolve method 'unresolvedMethodCall' in 'Test'">unresolvedMethodCall</error>());
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,6 @@ package p;
|
||||
|
||||
class Sample {
|
||||
public static void main(String[] args) {
|
||||
ChildClass.<error descr="Cannot resolve method 'foo()'">foo</error>();
|
||||
ChildClass.<error descr="Cannot resolve method 'foo' in 'ChildClass'">foo</error>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,6 @@ import java.util.concurrent.*;
|
||||
|
||||
abstract class B extends A {
|
||||
void foo() throws Exception {
|
||||
call().<error descr="Cannot resolve method 'stream()'">stream</error>();
|
||||
call().<error descr="Cannot resolve method 'stream' in 'Collection'">stream</error>();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
package p;
|
||||
public abstract class B extends A {
|
||||
public String getOrDefault(Object key, String defaultValue) {
|
||||
return super.<error descr="Cannot resolve method 'getOrDefault(java.lang.Object, java.lang.String)'">getOrDefault</error>(key, defaultValue);
|
||||
return super.<error descr="Cannot resolve method 'getOrDefault' in 'A'">getOrDefault</error>(key, defaultValue);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package p;
|
||||
abstract class B extends A {
|
||||
{
|
||||
<error descr="Cannot resolve method 'filter(null)'">filter</error>(null);
|
||||
<error descr="Cannot resolve method 'filter' in 'B'">filter</error>(null);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package p;
|
||||
abstract class B extends A implements java.util.Comparator {
|
||||
{
|
||||
<error descr="Cannot resolve method 'reversed()'">reversed</error>();
|
||||
<error descr="Cannot resolve method 'reversed' in 'B'">reversed</error>();
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,6 @@ package p;
|
||||
abstract class B {
|
||||
void foo(A<?> a)
|
||||
{
|
||||
a.get().<error descr="Cannot resolve method 'reversed()'">reversed</error>();
|
||||
a.get().<error descr="Cannot resolve method 'reversed' in 'Comparator'">reversed</error>();
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,7 @@ public class Finally {
|
||||
typePattern = parseTypePattern();
|
||||
} catch (FileNotFoundException followsFailure) {
|
||||
if (o != null) {
|
||||
typePattern = followsFailure.<error descr="Cannot resolve method 'getParsingResult()'">getParsingResult</error>();
|
||||
typePattern = followsFailure.<error descr="Cannot resolve method 'getParsingResult' in 'FileNotFoundException'">getParsingResult</error>();
|
||||
} else {
|
||||
throw followsFailure;
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
class Test {
|
||||
|
||||
public static void test() {
|
||||
for(int i = <error descr="Cannot resolve method 'launchMissiles()'">launchMissiles</error>(); (<warning descr="Condition is always false">fa<caret>lse</warning>);) {
|
||||
for(int i = <error descr="Cannot resolve method 'launchMissiles' in 'Test'">launchMissiles</error>(); (<warning descr="Condition is always false">fa<caret>lse</warning>);) {
|
||||
System.out.println("Hello");
|
||||
}
|
||||
int i = 1;
|
||||
|
||||
@@ -22,7 +22,7 @@ public class LongRangeKnownMethods {
|
||||
if(<warning descr="Condition 'Integer.bitCount(i) == -1' is always 'false'">Integer.bitCount(i) == -1</warning>) {
|
||||
System.out.println("Impossible");
|
||||
}
|
||||
if(Long.<error descr="Cannot resolve method 'numberOfLeadingZeroes(long)'">numberOfLeadingZeroes</error>(l) <= 64) {
|
||||
if(Long.<error descr="Cannot resolve method 'numberOfLeadingZeroes' in 'Long'">numberOfLeadingZeroes</error>(l) <= 64) {
|
||||
System.out.println("Always");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -83,7 +83,7 @@ public class MutabilityJdk {
|
||||
<error descr="Variable 'list' might not have been initialized">final List<String> list</error>;
|
||||
|
||||
IncompleteCode() {
|
||||
list = (IncompleteCode)((<error descr="Expression expected">)</error><error descr="')' expected"><error descr="';' expected">b</error></error>ar()<error descr="';' expected"><error descr="Unexpected token">)</error></error><error descr="Unexpected token">.</error><error descr="Cannot resolve method 'baz()'">baz</error>();
|
||||
list = (IncompleteCode)((<error descr="Expression expected">)</error><error descr="')' expected"><error descr="';' expected">b</error></error>ar()<error descr="';' expected"><error descr="Unexpected token">)</error></error><error descr="Unexpected token">.</error><error descr="Cannot resolve method 'baz' in 'IncompleteCode'">baz</error>();
|
||||
}
|
||||
|
||||
static native Object bar();
|
||||
|
||||
@@ -27,7 +27,7 @@ public class <error descr="Default method 'remove' is not overridden. It would c
|
||||
}
|
||||
|
||||
public <T extends Iterator<String>> T typedIterator() {
|
||||
return (T) <error descr="Cannot resolve method 'iterator()'">iterator</error>();
|
||||
return (T) <error descr="Cannot resolve method 'iterator' in 'DefaultMethods'">iterator</error>();
|
||||
}
|
||||
|
||||
{
|
||||
|
||||
@@ -213,7 +213,7 @@ public class B extends A {
|
||||
class Class3 {
|
||||
{
|
||||
new B().m1();
|
||||
new B().<error descr="Cannot resolve method 'm2()'">m2</error>();
|
||||
new B().<error descr="Cannot resolve method 'm2' in 'B'">m2</error>();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,11 +23,7 @@ import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.openapi.vfs.VfsUtil
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.project.IntelliJProjectConfiguration
|
||||
import com.intellij.psi.JavaPsiFacade
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiClassType
|
||||
import com.intellij.psi.PsiMethod
|
||||
import com.intellij.psi.PsiReferenceExpression
|
||||
import com.intellij.psi.*
|
||||
import com.intellij.psi.impl.JavaPsiFacadeEx
|
||||
import com.intellij.psi.impl.source.PsiFileImpl
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
@@ -37,6 +33,7 @@ import com.intellij.psi.stubs.StubTreeLoader
|
||||
import com.intellij.testFramework.IdeaTestUtil
|
||||
import com.intellij.testFramework.PsiTestUtil
|
||||
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
@@ -192,7 +189,7 @@ class ResolveInLibrariesTest extends JavaCodeInsightFixtureTestCase {
|
||||
myFixture.configureFromExistingVirtualFile(myFixture.addFileToProject("TestCase.java", """
|
||||
class TestCase {
|
||||
public static void main( String[] args ) {
|
||||
new B().<error descr="Cannot resolve method 'a()'">a</error>(); // should not work, because the A in lib1 has no method a
|
||||
new B().<error descr="Cannot resolve method 'a' in 'B'">a</error>(); // should not work, because the A in lib1 has no method a
|
||||
new B().a2(); // should work, because the A with this method is in lib1
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,6 @@ import static <error descr="Cannot resolve symbol 'foo'">foo</error>.bar.Goo.abs
|
||||
class Simple {
|
||||
|
||||
void f0o() {
|
||||
<error descr="Cannot resolve method 'abs(double)'">abs</error>(1.0);
|
||||
<error descr="Cannot resolve method 'abs' in 'Simple'">abs</error>(1.0);
|
||||
}
|
||||
}
|
||||
@@ -16,7 +16,7 @@ public class ConstantOnRHS
|
||||
}
|
||||
class C {
|
||||
void t() {
|
||||
<error descr="Cannot resolve method 'method(java.lang.String, ?, ?)'">method</error>(String.format("", <error descr="Expression expected">StringBuffer</error>)<error descr="',' or ')' expected">"</error>" +<EOLError descr="Expression expected"></EOLError>
|
||||
<error descr="Cannot resolve method 'method' in 'C'">method</error>(String.format("", <error descr="Expression expected">StringBuffer</error>)<error descr="',' or ')' expected">"</error>" +<EOLError descr="Expression expected"></EOLError>
|
||||
<<error descr="')' expected"><error descr="Expression expected">/</error></error><error descr="Cannot resolve symbol 'plugin'">plugin</error>><error descr="Illegal line end in string literal">" +</error><EOLError descr="';' expected"></EOLError>
|
||||
""<error descr="';' expected"><error descr="Unexpected token">)</error></error>;
|
||||
}
|
||||
|
||||
@@ -71,8 +71,8 @@ public class UnnecessaryParenthesesInspection
|
||||
private float pageHeight; // in cm.
|
||||
|
||||
public void foo() {
|
||||
final float width = <error descr="Cannot resolve method 'getSize()'">getSize</error>().width; // actual width in dots
|
||||
final float height = <error descr="Cannot resolve method 'getSize()'">getSize</error>().height; // actual height in dots
|
||||
final float width = <error descr="Cannot resolve method 'getSize' in 'ParenBug'">getSize</error>().width; // actual width in dots
|
||||
final float height = <error descr="Cannot resolve method 'getSize' in 'ParenBug'">getSize</error>().height; // actual height in dots
|
||||
|
||||
// to determine the ratio, do the following:
|
||||
final float ratio;
|
||||
|
||||
Reference in New Issue
Block a user