diamond: reject diamonds nested inside type arguments as soon as possible (IDEA-155153)

This commit is contained in:
Anna.Kozlova
2016-04-25 11:49:09 +02:00
parent e588d2285a
commit a1ae485b22
3 changed files with 12 additions and 1 deletions

View File

@@ -104,7 +104,8 @@ public class PsiDiamondTypeImpl extends PsiDiamondType {
@Override
public DiamondInferenceResult resolveInferredTypes() {
final PsiNewExpression newExpression = PsiTreeUtil.getParentOfType(myTypeElement, PsiNewExpression.class);
PsiElement typeElementWithDiamondTypeArgument = myTypeElement.getParent();
final PsiNewExpression newExpression = PsiTreeUtil.getParentOfType(typeElementWithDiamondTypeArgument, PsiNewExpression.class, true, PsiTypeElement.class);
if (newExpression == null) {
return PsiDiamondTypeImpl.DiamondInferenceResult.NULL_RESULT;
}

View File

@@ -0,0 +1,9 @@
import java.util.ArrayList;
import java.util.List;
class Test {
{
List<List<String>> l = new ArrayList<List<<error descr="Cannot infer arguments"></error>>>();
}
}

View File

@@ -83,6 +83,7 @@ public class LightAdvHighlightingJdk7Test extends LightDaemonAnalyzerTestCase {
public void testDiamondNeg13() { doTest(false, false); }
public void testDiamondNeg14() { doTest(false, false); }
public void testDiamondMisc() { doTest(false, false); }
public void testNestedDiamond() { doTest(false, false); }
public void testMultipleConstructors() { doTest(false, false); }
public void testHighlightInaccessibleFromClassModifierList() { doTest(false, false); }
public void testInnerInTypeArguments() { doTest(false, false); }