diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/PsiUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/PsiUtil.java index 78df3148e0c9..6031a9cc659e 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/PsiUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/PsiUtil.java @@ -1133,6 +1133,8 @@ public class PsiUtil { final PsiElement nameElement = ((GrReferenceExpression)qualifier).getReferenceNameElement(); if (((GrReferenceExpression)qualifier).getTypeArguments().length > 0) return false; if (nameElement == null || nameElement.getNode().getElementType() != GroovyTokenTypes.mIDENT) return false; + IElementType dotType = ((GrReferenceExpression)qualifier).getDotTokenType(); + if (dotType != null && dotType != GroovyTokenTypes.mDOT) return false; qualifier = ((GrReferenceExpression)qualifier).getQualifierExpression(); } return qualifier == null; diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.java index 086952506f86..595be1076ed1 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.java @@ -206,6 +206,10 @@ public class TypeInferenceTest extends GroovyResolveTestCase { assertTypeEquals("java.lang.String", "A.groovy"); } + public void testSafeInvocationInClassQualifier() { + assertTypeEquals("java.lang.Class", "SafeInvocationInClassQualifier.groovy"); + } + public void testReturnTypeFromMethodClosure() { assertTypeEquals("java.lang.String","A.groovy"); } diff --git a/plugins/groovy/testdata/resolve/inference/safeInvocationInClassQualifier/SafeInvocationInClassQualifier.groovy b/plugins/groovy/testdata/resolve/inference/safeInvocationInClassQualifier/SafeInvocationInClassQualifier.groovy new file mode 100644 index 000000000000..fbac17ac7525 --- /dev/null +++ b/plugins/groovy/testdata/resolve/inference/safeInvocationInClassQualifier/SafeInvocationInClassQualifier.groovy @@ -0,0 +1,2 @@ +def foo = [] +println foo?.prop?.class \ No newline at end of file