mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-79078 Groovy: ClassCastException at GroovyPsiElementFactoryImpl.createReferenceExpressionFromText() on Introduce Field called from anonymous class
This commit is contained in:
+4
-2
@@ -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);
|
||||
}
|
||||
|
||||
+4
@@ -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>
|
||||
}
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
interface A {
|
||||
void m1()
|
||||
}
|
||||
|
||||
def a = new A() {
|
||||
def f
|
||||
|
||||
@Override
|
||||
void m1() {
|
||||
f = 123
|
||||
println <selection>f</selection>
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user