diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java index 5f814fd4069d..6a9e5853bade 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/resolve/ResolveUtil.java @@ -50,6 +50,7 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpres import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrMethodCall; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression; import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrCallExpression; +import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.path.GrIndexProperty; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrAnonymousClassDefinition; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrGdkMethod; @@ -603,7 +604,7 @@ public class ResolveUtil { } public static boolean isKeyOfMap(GrReferenceExpression ref) { - if (isCall(ref)) return false; + if (!(ref.getParent() instanceof GrIndexProperty) && isCall(ref)) return false; if (ref.multiResolve(false).length > 0) return false; return mayBeKeyOfMap(ref); } 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 849f450f5ee6..09ac11f3bdbe 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 @@ -1085,4 +1085,17 @@ def book = new Book(title: "Other Title", author: [name: "Other Name"]) assert book.toString() == 'Other Title by Other Name' ''') } + + void testArrayAccessForMapProperty() { + + testHighlighting('''\ +def bar() { + return [list:[1, 2, 3]] +} + +def testConfig = bar() +print testConfig.list[0] +print testConfig.foo() +''', true, false, false, GrUnresolvedAccessInspection) + } } \ No newline at end of file