This commit is contained in:
Maxim.Medvedev
2012-06-26 10:46:29 +04:00
parent 720ae9faa5
commit ce82ebdfe3
6 changed files with 21 additions and 22 deletions
@@ -119,8 +119,8 @@ public class UnnecessaryQualifiedReferenceInspection extends BaseInspection {
@Override
protected void doFix(Project project, ProblemDescriptor descriptor) throws IncorrectOperationException {
final PsiElement startElement = descriptor.getStartElement();
LOG.assertTrue(startElement instanceof GrReferenceElement);
GrReferenceAdjuster.shortenReference((GrQualifiedReference)startElement);
LOG.assertTrue(startElement instanceof GrReferenceElement<?>);
GrReferenceAdjuster.shortenReference((GrQualifiedReference<?>)startElement);
}
@NotNull
@@ -15,7 +15,6 @@
*/
package org.jetbrains.plugins.groovy.intentions.style;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiClass;
@@ -39,8 +38,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatem
* @author Maxim.Medvedev
*/
public class ImportOnDemandIntention extends Intention {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.plugins.groovy.intentions.style.ImportOnDemandIntention");
@Override
protected void processIntention(@NotNull PsiElement element, Project project, Editor editor) throws IncorrectOperationException {
@@ -62,8 +59,8 @@ public class ImportOnDemandIntention extends Intention {
final PsiElement refElement = reference.getElement();
if (refElement == null) continue;
final PsiElement parent = refElement.getParent();
if (parent instanceof GrQualifiedReference) {
GrReferenceAdjuster.shortenReference((GrQualifiedReference)parent);
if (parent instanceof GrQualifiedReference<?>) {
GrReferenceAdjuster.shortenReference((GrQualifiedReference<?>)parent);
}
}
}
@@ -15,7 +15,6 @@
*/
package org.jetbrains.plugins.groovy.intentions.style;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Key;
@@ -31,14 +30,15 @@ import org.jetbrains.plugins.groovy.lang.psi.GrQualifiedReference;
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile;
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrExpression;
import org.jetbrains.plugins.groovy.lang.psi.api.statements.expressions.GrReferenceExpression;
import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement;
import org.jetbrains.plugins.groovy.lang.psi.api.types.GrTypeArgumentList;
/**
* @author Maxim.Medvedev
*/
public class ImportStaticIntention extends Intention {
private static final Logger LOG = Logger.getInstance("#org.jetbrains.plugins.groovy.intentions.style.ImportStaticIntention");
private static final Key<PsiElement> TEMP_REFERENT_USER_DATA = new Key<PsiElement>("TEMP_REFERENT_USER_DATA");
@Override
@@ -52,6 +52,7 @@ public class ImportStaticIntention extends Intention {
if (containingClass == null) return;
final String qname = containingClass.getQualifiedName();
final String name = ((PsiMember)resolved).getName();
if (name == null) return;
final PsiFile containingFile = element.getContainingFile();
if (!(containingFile instanceof GroovyFile)) return;
@@ -77,8 +78,8 @@ public class ImportStaticIntention extends Intention {
for (PsiReference reference : ReferencesSearch.search(resolved, new LocalSearchScope(containingFile))) {
final PsiElement refElement = reference.getElement();
if (refElement instanceof GrQualifiedReference) {
GrReferenceAdjuster.shortenReference((GrQualifiedReference)refElement);
if (refElement instanceof GrQualifiedReference<?>) {
GrReferenceAdjuster.shortenReference((GrQualifiedReference<?>)refElement);
}
}
@@ -88,8 +89,8 @@ public class ImportStaticIntention extends Intention {
public void visitReferenceExpression(GrReferenceExpression expression) {
super.visitReferenceExpression(expression);
if (expression.getTypeArgumentList() != null &&
expression.getTypeArgumentList().getFirstChild() != null) {
GrTypeArgumentList typeArgumentList = expression.getTypeArgumentList();
if (typeArgumentList != null && typeArgumentList.getFirstChild() != null) {
expression.putUserData(TEMP_REFERENT_USER_DATA, null);
return;
@@ -97,8 +98,9 @@ public class ImportStaticIntention extends Intention {
if (name.equals(expression.getReferenceName())) {
if (expression.isQualified()) {
if (expression.getQualifierExpression() instanceof GrReferenceExpression) {
PsiElement aClass = ((GrReferenceExpression)expression.getQualifierExpression()).resolve();
GrExpression qualifier = expression.getQualifierExpression();
if (qualifier instanceof GrReferenceExpression) {
PsiElement aClass = ((GrReferenceExpression)qualifier).resolve();
if (aClass == ((PsiMember)resolved).getContainingClass()) {
GrReferenceAdjuster.shortenReference(expression);
}
@@ -50,15 +50,15 @@ public class GrReferenceAdjuster {
process(element, start, end, addImports, incomplete);
}
public static void shortenReference(GrQualifiedReference ref) {
public static <T extends PsiElement> void shortenReference(GrQualifiedReference<T> ref) {
shortenReferenceInner(ref, true, false);
final TextRange range = ref.getTextRange();
process(ref, range.getStartOffset(), range.getEndOffset(), true, false);
}
private static void process(PsiElement element, int start, int end, boolean addImports, boolean incomplete) {
if (element instanceof GrQualifiedReference && ((GrQualifiedReference)element).resolve() instanceof PsiClass) {
shortenReferenceInner((GrQualifiedReference)element, addImports, incomplete);
if (element instanceof GrQualifiedReference<?> && ((GrQualifiedReference)element).resolve() instanceof PsiClass) {
shortenReferenceInner((GrQualifiedReference<?>)element, addImports, incomplete);
}
else if (element instanceof GrReferenceExpression && ((GrReferenceExpression)element).getQualifier() instanceof GrThisSuperReferenceExpression) {
@@ -141,6 +141,7 @@ public class GrReferenceAdjuster {
}
@SuppressWarnings("unchecked")
private static <Qualifier extends PsiElement> GrQualifiedReference<Qualifier> getCopy(GrQualifiedReference<Qualifier> ref) {
if (ref.getParent() instanceof GrMethodCall) {
final GrMethodCall copy = ((GrMethodCall)ref.getParent().copy());
@@ -20,7 +20,6 @@ import com.intellij.util.VisibilityUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.plugins.groovy.lang.GrReferenceAdjuster;
import org.jetbrains.plugins.groovy.lang.psi.GrQualifiedReference;
import org.jetbrains.plugins.groovy.lang.psi.GroovyFileBase;
import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory;
import org.jetbrains.plugins.groovy.lang.psi.GroovyRecursiveElementVisitor;
@@ -151,7 +150,7 @@ public class GrIntroduceConstantHandler extends GrIntroduceHandlerBase<GrIntrodu
PsiUtil.escalateVisibility(field, replaced);
}
if (replaced instanceof GrReferenceExpression) {
GrReferenceAdjuster.shortenReference((GrQualifiedReference)replaced);
GrReferenceAdjuster.shortenReference((GrReferenceExpression)replaced);
}
}
@@ -287,8 +287,8 @@ public class GrIntroduceFieldHandler extends GrIntroduceHandlerBase<GrIntroduceF
} else {
replaced = occurrence.replace(newExpr);
}
if (replaced instanceof GrQualifiedReference) {
GrReferenceAdjuster.shortenReference((GrQualifiedReference)replaced);
if (replaced instanceof GrQualifiedReference<?>) {
GrReferenceAdjuster.shortenReference((GrQualifiedReference<?>)replaced);
}
}