diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java index 13b3bccb0ea..e11bbeff5f8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java @@ -817,9 +817,8 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor { assert operationSign.getReferencedNameElementType() == JetTokens.EXCLEXCL; Call call = createCallForSpecialConstruction(expression, Collections.singletonList(baseExpression)); - ResolvedCall resolvedCall = resolveSpecialConstructionAsCall( + resolveSpecialConstructionAsCall( call, "ExclExcl", Collections.singletonList("baseExpr"), Collections.singletonList(true), context, null); - resolvedCall.getResultingDescriptor(); JetTypeInfo baseTypeInfo = BindingContextUtils.getRecordedTypeInfo(baseExpression, context.trace.getBindingContext()); assert baseTypeInfo != null : "Base expression was not processed: " + expression; JetType baseType = baseTypeInfo.getType(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java index c3d974c61e5..a67962fa813 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ControlStructureTypingUtils.java @@ -122,7 +122,7 @@ public class ControlStructureTypingUtils { return function; } - /*package*/ static MutableDataFlowInfoForArguments createDataFlowInfoForArgumentsForCall( + /*package*/ static MutableDataFlowInfoForArguments createIndependentDataFlowInfoForArgumentsForCall( final Map dataFlowInfoForArgumentsMap ) { return new MutableDataFlowInfoForArguments() { @@ -135,6 +135,7 @@ public class ControlStructureTypingUtils { @Override public void updateInfo(@NotNull ValueArgument valueArgument, @NotNull DataFlowInfo dataFlowInfo) { + //todo } @NotNull @@ -146,6 +147,7 @@ public class ControlStructureTypingUtils { @NotNull @Override public DataFlowInfo getResultInfo() { + //todo merge and use return initialDataFlowInfo; } }; @@ -159,7 +161,7 @@ public class ControlStructureTypingUtils { Map dataFlowInfoForArgumentsMap = Maps.newHashMap(); dataFlowInfoForArgumentsMap.put(callForIf.getValueArguments().get(0), thenInfo); dataFlowInfoForArgumentsMap.put(callForIf.getValueArguments().get(1), elseInfo); - return createDataFlowInfoForArgumentsForCall(dataFlowInfoForArgumentsMap); + return createIndependentDataFlowInfoForArgumentsForCall(dataFlowInfoForArgumentsMap); } /*package*/ static Call createCallForSpecialConstruction( diff --git a/compiler/testData/diagnostics/tests/smartCasts/inference/intersectionTypes.kt b/compiler/testData/diagnostics/tests/smartCasts/inference/intersectionTypes.kt index cdb34a140d5..c61989e1ebf 100644 --- a/compiler/testData/diagnostics/tests/smartCasts/inference/intersectionTypes.kt +++ b/compiler/testData/diagnostics/tests/smartCasts/inference/intersectionTypes.kt @@ -15,6 +15,7 @@ fun test(a: A, b: B, c: C) { val d: C = id(a) val e: Any = id(a) val f = id(a) + f: A val g = two(a, b) g: B g: A