mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 05:21:29 +07:00
inference testdata: error message should not depend on evaluation order
GitOrigin-RevId: 5de0efc888c6627537d55f7544eb5af96e716ab6
This commit is contained in:
committed by
intellij-monorepo-bot
parent
5acf90956e
commit
e7f9f733dd
@@ -0,0 +1,14 @@
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
abstract class Overloadsss {
|
||||
abstract <T> List<T> foo(List<T> l);
|
||||
abstract <T> Set<T> foo(Set<T> s);
|
||||
|
||||
abstract <K> List<K> bar1(List<K> l);
|
||||
abstract <K> Set<K> bar1(Set<K> s);
|
||||
|
||||
{
|
||||
List<String> l1 = foo(<caret>bar1(null));
|
||||
}
|
||||
}
|
||||
@@ -91,7 +91,7 @@ public class Java8ExpressionsCheckTest extends LightDaemonAnalyzerTestCase {
|
||||
}
|
||||
|
||||
private void doTestParametersSideEffects() {
|
||||
configureByFile(BASE_PATH + "/" + getTestName(false) + ".java");
|
||||
configure();
|
||||
Collection<PsiParameter> parameters = PsiTreeUtil.findChildrenOfType(getFile(), PsiParameter.class);
|
||||
for (PsiParameter parameter : parameters) {
|
||||
if (parameter.getTypeElement() == null) { //lambda parameter
|
||||
@@ -101,13 +101,13 @@ public class Java8ExpressionsCheckTest extends LightDaemonAnalyzerTestCase {
|
||||
assertNotNull(expression.getText(), expression.resolveMethod());
|
||||
}
|
||||
|
||||
getPsiManager().dropResolveCaches();
|
||||
dropCaches();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void testCachingOfResultsDuringCandidatesIteration() {
|
||||
configureByFile(BASE_PATH + "/" + getTestName(false) + ".java");
|
||||
configure();
|
||||
final Collection<PsiMethodCallExpression> methodCallExpressions = PsiTreeUtil.findChildrenOfType(getFile(), PsiMethodCallExpression.class);
|
||||
|
||||
final PsiResolveHelper helper = JavaPsiFacade.getInstance(getProject()).getResolveHelper();
|
||||
@@ -167,7 +167,7 @@ public class Java8ExpressionsCheckTest extends LightDaemonAnalyzerTestCase {
|
||||
}
|
||||
|
||||
private void doTestCachedUnresolved() {
|
||||
configureByFile(BASE_PATH + "/" + getTestName(false) + ".java");
|
||||
configure();
|
||||
PsiMethodCallExpression callExpression =
|
||||
PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiMethodCallExpression.class);
|
||||
|
||||
@@ -180,17 +180,47 @@ public class Java8ExpressionsCheckTest extends LightDaemonAnalyzerTestCase {
|
||||
}
|
||||
}
|
||||
|
||||
private void configure() {
|
||||
configureByFile(BASE_PATH + "/" + getTestName(false) + ".java");
|
||||
}
|
||||
|
||||
public void testIDEA140035() {
|
||||
doTestAllMethodCallExpressions();
|
||||
final Collection<PsiParameter> parameterLists = PsiTreeUtil.findChildrenOfType(getFile(), PsiParameter.class);
|
||||
for (PsiParameter parameter : parameterLists) {
|
||||
if (parameter.getTypeElement() != null) continue;
|
||||
getPsiManager().dropResolveCaches();
|
||||
dropCaches();
|
||||
final PsiType type = parameter.getType();
|
||||
assertFalse("Failed inference for: " + parameter.getParent().getText(), type instanceof PsiLambdaParameterType);
|
||||
}
|
||||
}
|
||||
|
||||
private static void dropCaches() {
|
||||
getPsiManager().dropResolveCaches();
|
||||
}
|
||||
|
||||
public void testOuterCallOverloads() {
|
||||
configure();
|
||||
PsiMethodCallExpression innerCall =
|
||||
PsiTreeUtil.getParentOfType(getFile().findElementAt(getEditor().getCaretModel().getOffset()), PsiMethodCallExpression.class);
|
||||
|
||||
PsiMethodCallExpression outerCall = (PsiMethodCallExpression) innerCall.getParent().getParent();
|
||||
|
||||
assertAmbiguous(outerCall);
|
||||
assertAmbiguous(innerCall);
|
||||
|
||||
dropCaches();
|
||||
|
||||
assertAmbiguous(innerCall);
|
||||
assertAmbiguous(outerCall);
|
||||
}
|
||||
|
||||
private static void assertAmbiguous(PsiMethodCallExpression call) {
|
||||
assertNull(call.getText(), call.resolveMethod());
|
||||
assertSize(2, call.getMethodExpression().multiResolve(false));
|
||||
assertNull(call.getText(), call.getType());
|
||||
}
|
||||
|
||||
public void testAdditionalConstraintsBasedOnLambdaResolution() {
|
||||
doTestAllMethodCallExpressions();
|
||||
}
|
||||
@@ -204,10 +234,10 @@ public class Java8ExpressionsCheckTest extends LightDaemonAnalyzerTestCase {
|
||||
}
|
||||
|
||||
private void doTestAllMethodCallExpressions() {
|
||||
configureByFile(BASE_PATH + "/" + getTestName(false) + ".java");
|
||||
configure();
|
||||
final Collection<PsiCallExpression> methodCallExpressions = PsiTreeUtil.findChildrenOfType(getFile(), PsiCallExpression.class);
|
||||
for (PsiCallExpression expression : methodCallExpressions) {
|
||||
getPsiManager().dropResolveCaches();
|
||||
dropCaches();
|
||||
if (expression instanceof PsiMethodCallExpression) {
|
||||
assertNotNull("Failed to resolve: " + expression.getText(), expression.resolveMethod());
|
||||
}
|
||||
@@ -216,7 +246,7 @@ public class Java8ExpressionsCheckTest extends LightDaemonAnalyzerTestCase {
|
||||
|
||||
final Collection<PsiNewExpression> parameterLists = PsiTreeUtil.findChildrenOfType(getFile(), PsiNewExpression.class);
|
||||
for (PsiNewExpression newExpression : parameterLists) {
|
||||
getPsiManager().dropResolveCaches();
|
||||
dropCaches();
|
||||
final PsiType[] arguments = newExpression.getTypeArguments();
|
||||
String failMessage = "Failed inference for: " + newExpression.getParent().getText();
|
||||
assertNotNull(failMessage, arguments);
|
||||
|
||||
Reference in New Issue
Block a user