diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrTraitMethod.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrTraitMethod.java index a5dc08910bee..6f40467d3cc8 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrTraitMethod.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrTraitMethod.java @@ -17,13 +17,22 @@ package org.jetbrains.plugins.groovy.lang.psi.impl.synthetic; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiSubstitutor; +import com.intellij.psi.PsiType; /** * Created by Max Medvedev on 25/04/14 */ public class GrTraitMethod extends GrMethodWrapper { + private final PsiSubstitutor mySubstitutor; + protected GrTraitMethod(PsiMethod method, PsiSubstitutor substitutor) { super(method, substitutor); + mySubstitutor = substitutor; + } + + @Override + public PsiType getReturnType() { + return mySubstitutor.substitute(super.getReturnType()); } public static GrTraitMethod create(PsiMethod method, PsiSubstitutor substitutor) { diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy index e63557be967d..2dd52c720175 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/ResolveMethodTest.groovy @@ -2222,4 +2222,14 @@ class X { ''', PsiMethod) } + void 'test static trait method generic return type'() { + def method = resolveByText(''' +trait GenericSourceTrait { + static E someOtherStaticMethod() {null} +} +class SourceConcrete implements GenericSourceTrait {}) +SourceConcrete.someOtherStaticMethod() +''', GrTraitMethod) + assertEquals "java.lang.String", method.returnType.canonicalText + } }