From 28541a3a424b8e1746ecb8ac3f1efcb2e71c5b7c Mon Sep 17 00:00:00 2001 From: "Maxim.Medvedev" Date: Fri, 6 Apr 2012 17:25:22 +0400 Subject: [PATCH] IDEA-67625 Dynamic properties and methods have Object type instead of unresolved ones --- .../psi/impl/synthetic/GrDynamicImplicitMethod.java | 6 +++--- .../psi/impl/synthetic/GrDynamicImplicitProperty.java | 10 ++++++++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitMethod.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitMethod.java index 11c3c3aa4aad..6c7bb83c18c2 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitMethod.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitMethod.java @@ -143,11 +143,11 @@ public class GrDynamicImplicitMethod extends LightElement implements PsiMethod, } public PsiType getReturnType() { - final PsiType typeElement = myMethod.getReturnType(); - if (typeElement == null) { + final PsiType type = myMethod.getReturnType(); + if (type == null || type instanceof PsiClassType && ((PsiClassType)type).resolve() == null) { return TypesUtil.getJavaLangObject(myMethod); } - return typeElement; + return type; } public PsiTypeElement getReturnTypeElement() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitProperty.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitProperty.java index 64b694be8cea..46fc0fa4c5fd 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitProperty.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrDynamicImplicitProperty.java @@ -192,4 +192,14 @@ public class GrDynamicImplicitProperty extends GrImplicitVariableImpl implements public void setInitializer(@Nullable PsiExpression initializer) throws IncorrectOperationException { throw new IncorrectOperationException(); } + + @NotNull + @Override + public PsiType getType() { + PsiType type = super.getType(); + if (type instanceof PsiClassType && ((PsiClassType)type).resolve() == null) { + return PsiType.getJavaLangObject(myManager, getResolveScope()); + } + return type; + } }