diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java index a961f85037c7..cd57d81ee9be 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/expressions/GrReferenceExpressionImpl.java @@ -418,7 +418,8 @@ public class GrReferenceExpressionImpl extends GrReferenceElementImpl TYPE_TO_RANK = new TObjectIntHashMap(); @@ -491,4 +493,22 @@ public class TypesUtil { public static PsiClassType createTypeByFQClassName(@NotNull String fqName, @NotNull PsiElement context) { return GroovyPsiManager.getInstance(context.getProject()).createTypeByFQClassName(fqName, context.getResolveScope()); } + + @Nullable + public static PsiType createJavaLangClassType(@Nullable PsiType type, + Project project, + GlobalSearchScope resolveScope) { + final JavaPsiFacade facade = JavaPsiFacade.getInstance(project); + PsiType result = null; + PsiClass javaLangClass = facade.findClass(JAVA_LANG_CLASS, resolveScope); + if (javaLangClass != null) { + PsiSubstitutor substitutor = PsiSubstitutor.EMPTY; + final PsiTypeParameter[] typeParameters = javaLangClass.getTypeParameters(); + if (typeParameters.length == 1) { + substitutor = substitutor.put(typeParameters[0], type); + } + result = facade.getElementFactory().createType(javaLangClass, substitutor); + } + return result; + } }