[groovy] don't resolve to field in method call (IDEA-189966)

This commit is contained in:
Daniil Ovchinnikov
2018-04-13 20:59:16 +03:00
parent 256317754e
commit d2cf6479d5
2 changed files with 17 additions and 8 deletions
@@ -166,21 +166,20 @@ private fun GrReferenceExpression.doResolveStatic(): GroovyResolveResult? {
}
}
if (qualifier == null || qualifier.isThisExpression()) {
val field = resolveToField(name).singleOrNull()
if (field != null && checkCurrentClass(field.element, this)) {
return field
}
}
if (parent !is GrMethodCall) {
if (qualifier == null || qualifier.isThisExpression()) {
val field = resolveToField(name).singleOrNull()
if (field != null && checkCurrentClass(field.element, this)) {
return field
}
}
if (qualifier == null) {
// at this point:
// - the reference is org.codehaus.groovy.ast.expr.VariableExpression
// - the reference doesn't resolve to a variable, meaning it accesses org.codehaus.groovy.ast.DynamicVariable
return resolveUnqualifiedType(name)
}
else if (qualifier is GrReferenceExpression) {
if (qualifier is GrReferenceExpression) {
return resolveQualifiedType(name, qualifier)
}
}
@@ -1516,4 +1516,14 @@ println A.<caret>name
''', PsiMethod
assert property.containingClass.qualifiedName == 'java.lang.Class'
}
void "test don't resolve to field in method call"() {
resolveByText '''\
class Fff {
List<String> testThis = [""]
def usage() { <caret>testThis(1) }
def testThis(a) {}
}
''', GrMethod
}
}