diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/members/GrMethodBaseImpl.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/members/GrMethodBaseImpl.java index 4c3f627b6ba4..d9334c1f0702 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/members/GrMethodBaseImpl.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/members/GrMethodBaseImpl.java @@ -230,7 +230,7 @@ public abstract class GrMethodBaseImpl extends GrStubElementBase i if (block != null) { PsiType inferred = GroovyPsiManager.inferType(method, new MethodTypeInferencer(block)); if (inferred != null) { - if (nominal == null || nominal.isAssignableFrom(inferred)) { + if (nominal == null || (nominal.isAssignableFrom(inferred) && !inferred.equals(PsiType.NULL))) { return inferred; } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy index a75cd5b9752a..55eee5034e1f 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/resolve/TypeInferenceTest.groovy @@ -709,6 +709,24 @@ def foo(List list) { ''', 'java.util.List') } + void testReturnNullWithGeneric() { + doTest(''' + import groovy.transform.CompileStatic + + @CompileStatic + class SomeClass { + protected List foo(String text) { + return null + } + + def bar() { + foo("") + } + } + } +''', 'java.util.List') + } + void testClassExpressions() { doExprTest 'String[]', 'java.lang.Class'