From d072c7cad27e7cd26f4b7614443473c68479d714 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Fri, 16 Feb 2018 20:14:36 +0300 Subject: [PATCH] [groovy] use compiled parameter mirror (IDEA-186457) --- .../groovy/lang/psi/impl/synthetic/mirrors.kt | 13 +++++++++ .../groovy/lang/psi/util/GrTraitUtil.java | 19 ++++++------- .../resolve/ResolveCompiledTraitTest.groovy | 26 ++++++++++++++++-- .../groovy/testdata/lib/some-library-src.jar | Bin 2489 -> 2593 bytes plugins/groovy/testdata/lib/some-library.jar | Bin 26078 -> 20611 bytes 5 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/mirrors.kt diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/mirrors.kt b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/mirrors.kt new file mode 100644 index 000000000000..720860eeaad2 --- /dev/null +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/mirrors.kt @@ -0,0 +1,13 @@ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. +package org.jetbrains.plugins.groovy.lang.psi.impl.synthetic + +import com.intellij.psi.PsiParameter +import com.intellij.psi.PsiType + +private open class PsiParameterMirror(original: PsiParameter) : PsiParameter by original + +fun PsiParameter.withType(newType: PsiType): PsiParameter { + return object : PsiParameterMirror(this) { + override fun getType(): PsiType = newType + } +} diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java index 129554bf2d0e..0d76c08df0d0 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java @@ -1,6 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - */ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package org.jetbrains.plugins.groovy.lang.psi.util; import com.intellij.codeInsight.AnnotationUtil; @@ -9,6 +7,7 @@ import com.intellij.openapi.util.Ref; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.impl.compiled.ClsClassImpl; +import com.intellij.psi.impl.light.LightMethodBuilder; import com.intellij.psi.util.CachedValueProvider; import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.InheritanceUtil; @@ -22,7 +21,6 @@ import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrField; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.GrTypeDefinition; import org.jetbrains.plugins.groovy.lang.psi.impl.GrAnnotationUtil; import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightField; -import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrLightMethodBuilder; import org.jetbrains.plugins.groovy.lang.resolve.GroovyTraitFieldsFileIndex; import org.jetbrains.plugins.groovy.lang.resolve.GroovyTraitFieldsFileIndex.TraitFieldDescriptor; import org.jetbrains.plugins.groovy.lang.resolve.GroovyTraitMethodsFileIndex; @@ -33,6 +31,7 @@ import java.util.Map; import static com.intellij.psi.PsiModifier.ABSTRACT; import static org.jetbrains.plugins.groovy.lang.psi.api.auxiliary.modifiers.GrModifierFlags.*; +import static org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.MirrorsKt.withType; import static org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames.GROOVY_TRAIT; import static org.jetbrains.plugins.groovy.lang.psi.util.GroovyCommonClassNames.GROOVY_TRAIT_IMPLEMENTED; @@ -120,12 +119,12 @@ public class GrTraitUtil { } private static PsiMethod createTraitMethodFromCompiledHelperMethod(PsiMethod compiledMethod, ClsClassImpl trait) { - final GrLightMethodBuilder result = new GrLightMethodBuilder(trait.getManager(), compiledMethod.getName()); + final LightMethodBuilder result = new LightMethodBuilder(trait.getManager(), compiledMethod.getName()); result.setOriginInfo("via @Trait"); result.addModifier(PsiModifier.STATIC); for (PsiTypeParameter parameter : compiledMethod.getTypeParameters()) { - result.getTypeParameterList().addParameter(parameter); + result.addTypeParameter(parameter); } final PsiTypeVisitor corrector = createCorrector(compiledMethod, trait); @@ -134,18 +133,16 @@ public class GrTraitUtil { for (int i = 1; i < methodParameters.length; i++) { final PsiParameter originalParameter = methodParameters[i]; final PsiType correctedType = originalParameter.getType().accept(corrector); - final String name = originalParameter.getName(); - assert name != null : compiledMethod; - result.addParameter(name, correctedType, false); + result.addParameter(withType(originalParameter, correctedType)); } for (PsiClassType type : compiledMethod.getThrowsList().getReferencedTypes()) { final PsiType correctedType = type.accept(corrector); - result.getThrowsList().addReference(correctedType instanceof PsiClassType ? (PsiClassType)correctedType : type); + result.addException(correctedType instanceof PsiClassType ? (PsiClassType)correctedType : type); } final PsiType originalType = compiledMethod.getReturnType(); - result.setReturnType(originalType == null ? null : originalType.accept(corrector)); + result.setMethodReturnType(originalType == null ? null : originalType.accept(corrector)); final PsiClass traitSource = trait.getSourceMirrorClass(); final PsiMethod sourceMethod = traitSource == null ? null : traitSource.findMethodBySignature(result, false); diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveCompiledTraitTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveCompiledTraitTest.groovy index 640458a63a82..2bdd24ef3568 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveCompiledTraitTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveCompiledTraitTest.groovy @@ -1,6 +1,4 @@ -/* - * Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. - */ +// Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package org.jetbrains.plugins.groovy.lang.resolve import com.intellij.openapi.module.Module @@ -305,6 +303,28 @@ class CC implements somepackage.TT { ) } + void 'test static trait method with @DelegatesTo(type)'() { + configureTraitInheritor() + def method = resolveByText '''\ +def usage(ExternalConcrete ec) { + ec.delegatesTo { toUpperCase() } +} +''', PsiMethod + assert method.name == 'toUpperCase' + assert method.containingClass.qualifiedName == 'java.lang.String' + } + + void 'test static trait method with @ClosureParams(FromString)'() { + configureTraitInheritor() + def method = resolveByText '''\ +def usage(ExternalConcrete ec) { + ec.closureParams { it.toUpperCase() } +} +''', PsiMethod + assert method.name == 'toUpperCase' + assert method.containingClass.qualifiedName == 'java.lang.String' + } + private PsiClass configureTraitInheritor() { myFixture.addFileToProject "inheritors.groovy", '''\ class PojoInheritor extends somepackage.Pojo {} diff --git a/plugins/groovy/testdata/lib/some-library-src.jar b/plugins/groovy/testdata/lib/some-library-src.jar index 8fb098e65a7fb6f7475529843328d65345d9d447..a6e97e7c20530c16bde6503cf18dd6c98538daca 100644 GIT binary patch delta 718 zcmdlfyii0Zz?+$ci-CcIfnmdf03QY8!&B0()L-Pn#oS@UO|_ zNMWXbV-vIO>QBeSE*|#CzAW_TeW=d%Qf|`-@we;B(o8RHiHWJ~eX#bJ*|8qayHV}| z*4e-Ndt}W2CCxo&)43+#S~*|*j>ot3%j_&ydly~0($gyJ`JsnxuE_K1O{aq`mIW~E z6P|U-d0)G9vOrippVZ2YS644ddo#Dd&hpT0S*2|S%$GG;on1mI8e@017q!{+UNqmr zBFCop@G$GA`j4%T_HhPHs_8r~tggxA%j2h=>hod66aAx7w(%~Dm!vKVJyfN=`a=X) zw%?2MW|lVRCjGb>Jwt~{>792>(z|6(KAev6JRjQrfx+I*>)Im~qX9k%@}|cRV3Q8<2?_YYYsN z6F9Y)^cW`ha7s=#=ir+x#VN&Pz&QCGixyCZXYxCCIi}}~z=#r??8YQGc|N-qQ#;e- z)9lKVFLKB+nKDoQ$e}v956Ha6JozBAI55dDGKnyVFmP~iFn}T)*)Q@aE=ghmnyPAt z%jF^{ig&XzFccJJmL-;?h7=`cmiVTYWaOt5>rcMOrp5G@b@E>}52ie}$?oh5BCKp6 Po!meu!OXz$8O#F!z`)^t delta 601 zcmZ1|vQyY3z?+$ci-CcIfkAp#728!7nJt6VuamLB3bFH$&^*3v$FXovpIg!1`;QO+J zA{?&aDydzcnsugqar5TbU(o%X{lokkqkA0D*}<+gr<3OvL{<5696cwcEjO!1``eew z&S_q^7yUn~_KhXLo1LT8@%+;zK>u83oT#HSi6v*UJ@Z1KC$>+t_@%|j#KnL+@Q}ii zVR9m;7|Xv?3=EUYIklL~z6WtS9TWdj++4TKWR3=G|1 F9smICsU!dZ diff --git a/plugins/groovy/testdata/lib/some-library.jar b/plugins/groovy/testdata/lib/some-library.jar index 303c7470512b53c42e23157465a62657650c52cc..56d0901efa35407549c04e43856232134957a185 100644 GIT binary patch delta 18039 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