mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-06 03:21:12 +07:00
java overload resolution: check constructors by name of the containing class (IDEA-249525)
GitOrigin-RevId: 30fe9e5615f36361bba40b740719a274c9f6786b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
f8b3d071f1
commit
056ee5b158
@@ -171,7 +171,7 @@ public class PsiResolveHelperImpl implements PsiResolveHelper {
|
||||
};
|
||||
if (call instanceof PsiMethodCallExpression) {
|
||||
PsiReferenceExpression methodExpression = ((PsiMethodCallExpression)call).getMethodExpression();
|
||||
processor.setIsConstructor(true);
|
||||
processor.setIsConstructor(false);
|
||||
processor.setName(methodExpression.getReferenceName());
|
||||
PsiScopesUtil.resolveAndWalk(processor, methodExpression, null);
|
||||
}
|
||||
@@ -179,6 +179,7 @@ public class PsiResolveHelperImpl implements PsiResolveHelper {
|
||||
PsiJavaCodeReferenceElement classReference = ((PsiNewExpression)call).getClassOrAnonymousClassReference();
|
||||
if (classReference != null) {
|
||||
processor.setIsConstructor(true);
|
||||
processor.setName(classReference.getReferenceName());
|
||||
PsiScopesUtil.resolveAndWalk(processor, classReference, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
import java.util.*;
|
||||
class MyTest extends AbstractList {
|
||||
MyTest(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
protected Task getF(List<String> files) {
|
||||
return new Foo<>(new ArrayL<caret>ist<>(files)) {
|
||||
@Override
|
||||
protected void a() { }
|
||||
};
|
||||
}
|
||||
|
||||
private abstract class Foo<T extends String> extends Task<T> {
|
||||
public Foo(List<T> files) {
|
||||
super();
|
||||
}
|
||||
|
||||
protected abstract void a();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Task<K> {
|
||||
protected Task() {
|
||||
}
|
||||
|
||||
protected Task(String name) {}
|
||||
}
|
||||
@@ -64,6 +64,14 @@ public class Java8ExpressionsCheckTest extends LightDaemonAnalyzerTestCase {
|
||||
|
||||
assertNotNull(fooCall.getType());
|
||||
}
|
||||
|
||||
public void testTypeOfDiamonds() {
|
||||
configure();
|
||||
PsiNewExpression nestedConstructor =
|
||||
PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiNewExpression.class);
|
||||
|
||||
assertNotNull(nestedConstructor.resolveConstructor());
|
||||
}
|
||||
|
||||
public void testRecursiveApplicabilityCheck() {
|
||||
configure();
|
||||
|
||||
Reference in New Issue
Block a user