inline: fix qualifier which is inserted to specify type params after inline (IDEA-104536)

This commit is contained in:
anna
2013-04-10 21:34:01 +02:00
parent aeda68c3f0
commit 55d981e071
6 changed files with 75 additions and 1 deletions
@@ -86,7 +86,7 @@ public class InlineUtil {
if (method.getModifierList().hasModifierProperty(PsiModifier.STATIC)) {
methodExpression.setQualifierExpression(elementFactory.createReferenceExpression(containingClass));
} else {
methodExpression.setQualifierExpression(createThisExpression(manager, containingClass, refParent));
methodExpression.setQualifierExpression(createThisExpression(manager, thisClass, refParent));
}
}
}
@@ -0,0 +1,17 @@
import java.util.*;
class GrCaseLabel {
}
class A0 {
protected <T> List<T> findChildrenByType() {
return null;
}
}
class A extends A0 {
void f() {
final List<GrCaseLabel> labels = findChildrenByType();
for (GrCaseLabel label : la<caret>bels) {
}
}
}
@@ -0,0 +1,16 @@
import java.util.*;
class GrCaseLabel {
}
class A0 {
protected <T> List<T> findChildrenByType() {
return null;
}
}
class A extends A0 {
void f() {
for (GrCaseLabel label : this.<GrCaseLabel>findChildrenByType()) {
}
}
}
@@ -0,0 +1,17 @@
import java.util.*;
class GrCaseLabel {
}
class A0 {
protected static <T> List<T> findChildrenByType() {
return null;
}
}
class A extends A0 {
void f() {
final List<GrCaseLabel> labels = findChildrenByType();
for (GrCaseLabel label : la<caret>bels) {
}
}
}
@@ -0,0 +1,16 @@
import java.util.*;
class GrCaseLabel {
}
class A0 {
protected static <T> List<T> findChildrenByType() {
return null;
}
}
class A extends A0 {
void f() {
for (GrCaseLabel label : A0.<GrCaseLabel>findChildrenByType()) {
}
}
}
@@ -205,6 +205,14 @@ public class InlineLocalTest extends LightCodeInsightTestCase {
doTest(true);
}
public void testEnclosingThisExpression() throws Exception {
doTest(true);
}
public void testParentStaticQualifier() throws Exception {
doTest(true);
}
public void testLocalVarInsideLambdaBodyWriteUsage() throws Exception {
doTest(true, "Cannot perform refactoring.\n" +
"Variable 'hello' is accessed for writing.");