mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-120834 Same-class methods should be preferred over static imports
This commit is contained in:
+3
-26
@@ -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,
|
||||
|
||||
+2
-2
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user