From fad3030e37c0b2ee8eef4ac6ac498813e1a625a1 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Fri, 15 Apr 2011 19:09:22 +0400 Subject: [PATCH] Fix for 'null is Nothing' false-positive --- .../src/org/jetbrains/jet/lang/types/JetTypeInferrer.java | 3 +-- idea/testData/checker/UnreachableCode.jet | 8 ++++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index 822d622ff77..5be9feb485d 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -120,7 +120,6 @@ public class JetTypeInferrer { return resolutionResult.isSuccess() ? resolutionResult.getFunctionDescriptor() : null; } - private OverloadDomain getOverloadDomain( @NotNull final JetScope scope, @NotNull JetExpression calleeExpression, @@ -409,7 +408,7 @@ public class JetTypeInferrer { expression.accept(this); if (result != null) { trace.recordExpressionType(expression, result); - if (JetStandardClasses.isNothing(result)) { + if (JetStandardClasses.isNothing(result) && !result.isNullable()) { markDominatedExpressionsAsUnreachable(expression); } } diff --git a/idea/testData/checker/UnreachableCode.jet b/idea/testData/checker/UnreachableCode.jet index 899e8167678..f06223709ed 100644 --- a/idea/testData/checker/UnreachableCode.jet +++ b/idea/testData/checker/UnreachableCode.jet @@ -151,3 +151,11 @@ fun foo(a : Nothing) : Unit { fun fail() : Nothing { throw new java.lang.RuntimeException() } + +fun nullIsNotNothing() : Unit { + val x : Int? = 1 + if (x != null) { + return + } + fail() +} \ No newline at end of file