From 4121aed7736ffe060ddc85d649897c859160f2dd Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 5 Jul 2011 10:55:33 +0400 Subject: [PATCH] !is supported in data flow info for ifs --- idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java | 2 +- idea/testData/checker/infos/Autocasts.jet | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index e3590f64ca8..2de83a29291 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -1570,7 +1570,7 @@ public class JetTypeInferrer { condition.accept(new JetVisitor() { @Override public void visitIsExpression(JetIsExpression expression) { - if (conditionValue) { + if (conditionValue && !expression.isNegated() || !conditionValue && expression.isNegated()) { JetPattern pattern = expression.getPattern(); result[0] = patternsToDataFlowInfo.get(pattern); if (scopeToExtend != null) { diff --git a/idea/testData/checker/infos/Autocasts.jet b/idea/testData/checker/infos/Autocasts.jet index 8bfdccd7cea..cd930a4f366 100644 --- a/idea/testData/checker/infos/Autocasts.jet +++ b/idea/testData/checker/infos/Autocasts.jet @@ -147,3 +147,9 @@ fun f15(a : A?) { a.bar() c.bar() } + +fun getStringLength(obj : Any) : Char? { + if (obj !is String) + return null + return obj.get(0) // no cast to String is needed +} \ No newline at end of file