extract delegate: ensure class fqns are not lost (IDEA-163265)

This commit is contained in:
Anna.Kozlova
2016-11-14 19:05:03 +01:00
parent eafa08cb9b
commit 034a7db3e3
5 changed files with 33 additions and 3 deletions
@@ -18,7 +18,6 @@ package com.intellij.refactoring.extractclass;
import com.intellij.codeInsight.generation.GenerateMembersUtil;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.*;
import com.intellij.psi.codeStyle.JavaCodeStyleManager;
@@ -26,7 +25,6 @@ import com.intellij.psi.codeStyle.VariableKind;
import com.intellij.psi.tree.IElementType;
import com.intellij.psi.util.PsiUtil;
import com.intellij.refactoring.psi.MethodInheritanceUtils;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls;
@@ -438,6 +436,12 @@ class ExtractedClassBuilder {
}
}
}
else if (referent instanceof PsiClass) {
String qualifiedName = ((PsiClass)referent).getQualifiedName();
if (qualifiedName != null) {
out.append(qualifiedName);
}
}
else {
visitElement(expression);
}
@@ -0,0 +1,11 @@
import java.util.Collections;
import java.util.List;
public class Extracted {
public Extracted() {
}
List<Test> foo() {
return Collections.emptyList();
}
}
@@ -0,0 +1,2 @@
public class Test {
}
@@ -0,0 +1,9 @@
import java.util.Collections;
import java.util.List;
public class Test {
List<Test> foo() {
return Collections.emptyList();
}
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2016 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.
@@ -160,6 +160,10 @@ public class ExtractClassTest extends MultiFileTestCase{
doTestInnerClass();
}
public void testEnsurePreservedQualifier() throws Exception {
doTestMethod();
}
private void doTestFieldAndMethod(final String methodName) throws Exception {
doTest((rootDir, rootAfter) -> {
PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject));