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