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 f8dc893854d1..d981a05bb719 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 @@ -69,6 +69,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.clauses.GrForInClaus import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.*; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrIndexProperty; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrMethodCallExpression; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrPropertySelection; import org.jetbrains.plugins.groovy.lang.psi.api.statements.params.GrParameter; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrAnonymousClassDefinition; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; @@ -653,8 +654,12 @@ public class PsiUtil { public static boolean mightBeLValue(@Nullable GrExpression expr) { if (expr instanceof GrParenthesizedExpression) return mightBeLValue(((GrParenthesizedExpression)expr).getOperand()); - if (expr instanceof GrTupleExpression) return true; - if (expr instanceof GrReferenceExpression || expr instanceof GrIndexProperty) return true; + if (expr instanceof GrTupleExpression || + expr instanceof GrReferenceExpression || + expr instanceof GrIndexProperty || + expr instanceof GrPropertySelection) { + return true; + } if ((expr instanceof GrThisReferenceExpression || expr instanceof GrSuperReferenceExpression) && GroovyConfigUtils.getInstance().isVersionAtLeast(expr, GroovyConfigUtils.GROOVY1_8)) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy index de3eaf4d8586..ca662474daf2 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy @@ -884,6 +884,18 @@ class X { } } } +''') + } + + void testPropertySelectionMayBeLValue() { + testHighlighting('''\ +def methodMissing(String methodName, args) { + def closure = { + callSomeOtherMethodInstead() + } + this.metaClass."$methodName" = closure + closure() = 2 +} ''') } } \ No newline at end of file