IDEA-79078 Groovy: ClassCastException at GroovyPsiElementFactoryImpl.createReferenceExpressionFromText() on Introduce Field called from anonymous class

This commit is contained in:
Maxim.Medvedev
2011-12-20 15:19:58 +04:00
parent b10a4f727f
commit d93c8387fd
4 changed files with 31 additions and 2 deletions
@@ -265,12 +265,14 @@ public class GrIntroduceFieldHandler extends GrIntroduceHandlerBase<GrIntroduceF
private static GrReferenceExpression createRefExpression(GrField field, PsiElement place) {
final PsiClass containingClass = field.getContainingClass();
LOG.assertTrue(containingClass != null);
final String qname = containingClass.getQualifiedName();
final String prefix = qname != null ? qname + "." : "";
final String refText;
if (field.hasModifierProperty(PsiModifier.STATIC)) {
refText = containingClass.getQualifiedName() + "." + field.getName();
refText = prefix + field.getName();
}
else {
refText = containingClass.getQualifiedName() + ".this." + field.getName();
refText = prefix + "this." + field.getName();
}
return GroovyPsiElementFactory.getInstance(place.getProject()).createReferenceExpressionFromText(refText, place);
}
@@ -69,6 +69,10 @@ public class GrIntroduceFieldTest extends LightCodeInsightFixtureTestCase {
public void testReplaceExpressionWithAssignment() {
doTest(false, false, false, CUR_METHOD, false, null);
}
public void testAnonymousClass() {
doTest(false, false, false, CUR_METHOD, false, null);
}
private void doTest(final boolean isStatic,
final boolean removeLocal,
@@ -0,0 +1,10 @@
interface A {
void m1()
}
def a = new A() {
@Override
void m1() {
println <selection>123</selection>
}
}
@@ -0,0 +1,13 @@
interface A {
void m1()
}
def a = new A() {
def f
@Override
void m1() {
f = 123
println <selection>f</selection>
}
}