IDEA-120834 Same-class methods should be preferred over static imports

This commit is contained in:
Max Medvedev
2014-02-18 10:42:41 +04:00
parent 1ae2a8244b
commit 81adc91abc
2 changed files with 5 additions and 28 deletions
@@ -24,7 +24,6 @@ import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.codeInspection.untypedUnresolvedAccess.GrUnresolvedAccessInspection;
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase;
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElement;
import org.jetbrains.plugins.groovy.lang.psi.api.GroovyResolveResult;
@@ -36,7 +35,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrRefere
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMember;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod;
import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement;
import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyPsiManager;
import org.jetbrains.plugins.groovy.lang.psi.impl.GroovyResolveResultImpl;
import org.jetbrains.plugins.groovy.lang.psi.impl.PsiImplUtil;
@@ -44,8 +42,6 @@ import org.jetbrains.plugins.groovy.lang.psi.typeEnhancers.ClosureParameterEnhan
import org.jetbrains.plugins.groovy.lang.psi.util.GdkMethodUtil;
import org.jetbrains.plugins.groovy.lang.psi.util.PsiUtil;
import org.jetbrains.plugins.groovy.lang.resolve.ResolveUtil;
import org.jetbrains.plugins.groovy.lang.resolve.processors.CompletionProcessor;
import org.jetbrains.plugins.groovy.lang.resolve.processors.MethodResolverProcessor;
import org.jetbrains.plugins.groovy.lang.resolve.processors.ResolverProcessor;
import java.util.List;
@@ -63,18 +59,11 @@ public class GrReferenceResolveUtil {
static boolean resolveImpl(ResolverProcessor processor, GrReferenceExpression place) {
GrExpression qualifier = place.getQualifier();
if (qualifier == null) {
if (processor instanceof MethodResolverProcessor || processor instanceof CompletionProcessor) {
processStaticImports(place.getContainingFile(), processor, ResolveState.initial(), place);
if (processor instanceof MethodResolverProcessor && ((MethodResolverProcessor)processor).hasApplicableCandidates()) {
return false;
}
}
if (!ResolveUtil.treeWalkUp(place, processor, true)) return false;
if (!processor.hasCandidates()) {
qualifier = PsiImplUtil.getRuntimeQualifier(place);
if (qualifier != null) {
if (!processQualifier(processor, qualifier, place)) return false;
GrExpression runtimeQualifier = PsiImplUtil.getRuntimeQualifier(place);
if (runtimeQualifier != null) {
if (!processQualifier(processor, runtimeQualifier, place)) return false;
}
}
}
@@ -102,18 +91,6 @@ public class GrReferenceResolveUtil {
return true;
}
private static boolean processStaticImports(PsiFile file, ResolverProcessor processor, ResolveState state, PsiElement place) {
if (file instanceof GroovyFile) {
GrImportStatement[] imports = ((GroovyFile)file).getImportStatements();
for (GrImportStatement anImport : imports) {
if (anImport.isStatic()) {
if (!anImport.processDeclarations(processor, state, null, place)) return false;
}
}
}
return true;
}
private static boolean processIfJavaLangClass(ResolverProcessor processor,
@Nullable PsiType type,
GroovyPsiElement resolveContext,
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2013 JetBrains s.r.o.
* Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -906,7 +906,7 @@ class A {
def resolved = ref.resolve()
assertInstanceOf resolved, PsiMethod
assertEquals 'Other', resolved.containingClass.name
assertEquals 'A', resolved.containingClass.name
}
public void testInapplicableStaticallyImportedMethodsVsCurrentClassMethod() {