diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompiler.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompiler.java index 57a1455b3fe0..5d55b062f8e1 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompiler.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/compiler/GroovyCompiler.java @@ -51,9 +51,10 @@ import org.jetbrains.plugins.groovy.GroovyFileType; import org.jetbrains.plugins.groovy.GroovyFileTypeLoader; import org.jetbrains.plugins.groovy.GroovyIcons; import org.jetbrains.plugins.groovy.config.GroovyConfigUtils; +import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; -import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GroovyScriptClass; import org.jetbrains.plugins.groovy.util.GroovyUtils; import org.jetbrains.plugins.groovy.util.LibrariesUtil; @@ -169,8 +170,9 @@ public class GroovyCompiler extends GroovyCompilerBase { psi.acceptChildren(new PsiElementVisitor() { @Override public void visitElement(PsiElement element) { - if (element instanceof GrCodeReferenceElement) { - GrCodeReferenceElement referenceElement = (GrCodeReferenceElement)element; + if (element instanceof GrReferenceElement && + (!(element instanceof GrReferenceExpression) || !((GrReferenceExpression)element).isQualified())) { + GrReferenceElement referenceElement = (GrReferenceElement)element; try { final PsiElement target = referenceElement.resolve(); if (target instanceof GrTypeDefinition || target instanceof GroovyScriptClass) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy index 742aa017a61f..1ae008e5d83f 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/compiler/GroovyCompilerTest.groovy @@ -311,6 +311,21 @@ class Foo { assertEmpty make() } + public void testRecompileExpressionReferences() throws Exception { + def rusCon = myFixture.addFileToProject('RusCon.groovy', ''' +interface RusCon { + Closure foo = { Seq.foo() } +}''') + myFixture.addFileToProject "Seq.groovy", """ +class Seq implements RusCon { + static def foo() { } +}""" + assertEmpty make() + + touch(rusCon.virtualFile) + assertEmpty make() + } + public void testRecompileImportedClass() throws Exception { def bar = myFixture.addFileToProject("pack/Bar.groovy", """ package pack