diff --git a/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java b/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java index e96eb36c6385..a6ee18c6e4a1 100644 --- a/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java +++ b/java/java-impl/src/com/intellij/codeInsight/completion/JavaInheritorsGetter.java @@ -160,20 +160,23 @@ public class JavaInheritorsGetter extends CompletionProvider()", parameters.getOriginalFile()); - final PsiVariable declaredVar = (PsiVariable)((PsiDeclarationStatement)statement).getDeclaredElements()[0]; - final PsiNewExpression initializer = (PsiNewExpression)declaredVar.getInitializer(); - final boolean hasDefaultConstructorOrNoGenericsOne = PsiDiamondTypeImpl.hasDefaultConstructor(psiClass) || - !PsiDiamondTypeImpl.haveConstructorsGenericsParameters(psiClass); - if (hasDefaultConstructorOrNoGenericsOne) { - final PsiDiamondTypeImpl.DiamondInferenceResult inferenceResult = PsiDiamondTypeImpl.resolveInferredTypes(initializer); - if (inferenceResult.getErrorMessage() == null && - !psiClass.hasModifierProperty(PsiModifier.ABSTRACT) && - areInferredTypesApplicable(inferenceResult.getTypes(), parameters.getPosition())) { - psiType = initializer.getType(); + try { + final PsiStatement statement = elementFactory + .createStatementFromText(canonicalText + " v = new " + erasedText + "<>()", parameters.getOriginalFile()); + final PsiVariable declaredVar = (PsiVariable)((PsiDeclarationStatement)statement).getDeclaredElements()[0]; + final PsiNewExpression initializer = (PsiNewExpression)declaredVar.getInitializer(); + final boolean hasDefaultConstructorOrNoGenericsOne = PsiDiamondTypeImpl.hasDefaultConstructor(psiClass) || + !PsiDiamondTypeImpl.haveConstructorsGenericsParameters(psiClass); + if (hasDefaultConstructorOrNoGenericsOne) { + final PsiDiamondTypeImpl.DiamondInferenceResult inferenceResult = PsiDiamondTypeImpl.resolveInferredTypes(initializer); + if (inferenceResult.getErrorMessage() == null && + !psiClass.hasModifierProperty(PsiModifier.ABSTRACT) && + areInferredTypesApplicable(inferenceResult.getTypes(), parameters.getPosition())) { + psiType = initializer.getType(); + } } } + catch (IncorrectOperationException ignore) {} } } final PsiTypeLookupItem item = PsiTypeLookupItem.createLookupItem(psiType, position);