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