From 33f0ff3eebfb5fc0e046b6c30e66aaa2423adffc Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Mon, 18 Jun 2012 20:32:18 +0400 Subject: [PATCH] BindingContext.EXPRESSION_DATA_FLOW_INFO --- .../jetbrains/jet/lang/resolve/BindingContext.java | 1 + .../ExpressionTypingVisitorDispatcher.java | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java index efe4ab7e9b0..7662f478552 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java @@ -68,6 +68,7 @@ public interface BindingContext { WritableSlice> COMPILE_TIME_VALUE = Slices.createSimpleSlice(); WritableSlice TYPE = Slices.createSimpleSlice(); WritableSlice EXPRESSION_TYPE = new BasicWritableSlice(DO_NOTHING); + WritableSlice EXPRESSION_DATA_FLOW_INFO = new BasicWritableSlice(DO_NOTHING); WritableSlice REFERENCE_TARGET = new BasicWritableSlice(DO_NOTHING); WritableSlice> RESOLVED_CALL = new BasicWritableSlice>(DO_NOTHING); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java index b101f9ccc02..92819b33366 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorDispatcher.java @@ -115,8 +115,11 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor visitor) { if (context.trace.get(BindingContext.PROCESSED, expression)) { - return JetTypeInfo.create(context.trace.getBindingContext().get(BindingContext.EXPRESSION_TYPE, expression), - context.dataFlowInfo); + DataFlowInfo dataFlowInfo = context.trace.get(BindingContext.EXPRESSION_DATA_FLOW_INFO, expression); + if (dataFlowInfo == null) { + dataFlowInfo = context.dataFlowInfo; + } + return JetTypeInfo.create(context.trace.getBindingContext().get(BindingContext.EXPRESSION_TYPE, expression), dataFlowInfo); } JetTypeInfo result; try { @@ -144,7 +147,10 @@ public class ExpressionTypingVisitorDispatcher extends JetVisitor