From eeff3cc0dab139ade64c8761641304599db510d2 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Fri, 20 May 2016 20:38:57 +0300 Subject: [PATCH] [groovy] transformations: transform anonymous classes --- .../transformations/TransformationContext.java | 2 +- .../TransformationContextImpl.java | 5 ++--- .../groovy/transformations/TransformationUtil.kt | 8 +++----- .../transformations/GrTransformationsTest.groovy | 16 ++++++++++++++++ 4 files changed, 22 insertions(+), 9 deletions(-) diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContext.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContext.java index f1e957a5d99a..6c1e13a5d7da 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContext.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContext.java @@ -68,7 +68,7 @@ public interface TransformationContext { return getCodeClass().getResolveScope(); } - @NotNull + @Nullable String getClassName(); @Nullable diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContextImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContextImpl.java index 153c8629cf89..5af20cc067b3 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContextImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationContextImpl.java @@ -19,7 +19,6 @@ import com.intellij.psi.*; import com.intellij.psi.impl.light.LightMethodBuilder; import com.intellij.psi.impl.light.LightPsiClassBuilder; import com.intellij.psi.util.MethodSignature; -import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import gnu.trove.THashSet; import org.jetbrains.annotations.NotNull; @@ -103,10 +102,10 @@ public class TransformationContextImpl implements TransformationContext { return myExtendsTypes; } - @NotNull + @Nullable @Override public String getClassName() { - return ObjectUtils.notNull(myCodeClass.getName()); + return myCodeClass.getName(); } @Override diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationUtil.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationUtil.kt index c56ee96f284a..277dc9056ff7 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationUtil.kt +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/transformations/TransformationUtil.kt @@ -39,11 +39,9 @@ fun transformDefinition(definition: GrTypeDefinition): TransformationResult { ourTransformationContext.get().put(definition, true) try { val transformationContext = TransformationContextImpl(definition) - if (definition.name != null) { - for (transformation in org.jetbrains.plugins.groovy.transformations.AstTransformationSupport.EP_NAME.extensions) { - ProgressManager.checkCanceled() - transformation.applyTransformation(transformationContext) - } + for (transformation in org.jetbrains.plugins.groovy.transformations.AstTransformationSupport.EP_NAME.extensions) { + ProgressManager.checkCanceled() + transformation.applyTransformation(transformationContext) } return transformationContext.transformationResult } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/transformations/GrTransformationsTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/transformations/GrTransformationsTest.groovy index cadcec4f0163..6d7b21c80454 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/transformations/GrTransformationsTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/transformations/GrTransformationsTest.groovy @@ -37,4 +37,20 @@ new MyInheritor().ppp ''', GrAccessorMethod) assert resolved.getName() == 'getPpp' } + + void 'test transform anonymous classes'() { + myFixture.addFileToProject('Base.groovy', '''\ +abstract class Base { + abstract getFoo() +} +''') + myFixture.configureByText('a.groovy', '''\ +class A { + def baz = new Base() { // no error, getFoo() exists + def foo = 1 + } +} +''') + myFixture.checkHighlighting() + } }