KT-1778 Automatically cast error

#KT-1778 fixed
This commit is contained in:
Svetlana Isakova
2012-04-18 20:42:55 +04:00
parent 08e18e5d9c
commit 1fa4698611
2 changed files with 13 additions and 2 deletions
@@ -48,7 +48,7 @@ public class DataFlowUtils {
@NotNull
public static DataFlowInfo extractDataFlowInfoFromCondition(@Nullable JetExpression condition, final boolean conditionValue, @Nullable final WritableScope scopeToExtend, final ExpressionTypingContext context) {
if (condition == null) return context.dataFlowInfo;
final Ref<DataFlowInfo> result = new Ref<DataFlowInfo>(context.dataFlowInfo);
final Ref<DataFlowInfo> result = new Ref<DataFlowInfo>(null);
condition.accept(new JetVisitorVoid() {
@Override
public void visitIsExpression(JetIsExpression expression) {
@@ -148,7 +148,7 @@ public class DataFlowUtils {
if (result.get() == null) {
return context.dataFlowInfo;
}
return result.get();
return context.dataFlowInfo.and(result.get());
}
@Nullable
@@ -0,0 +1,11 @@
//KT-1778 Automatically cast error
package kt1778
fun main(args : Array<String>) {
val x = args[0]: Any
if(x is java.lang.CharSequence) {
if ("a" == x) x.length() else x.length() // OK
if ("a" == x || "b" == x) x.length() else x.length() // < THEN ERROR
if ("a" == x && "a" == x) x.length() else x.length() // < ELSE ERROR
}
}