From 3053ac78e4c1c12645abb1aa39ab82848495bc18 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Thu, 3 May 2012 19:30:13 +0400 Subject: [PATCH] MUST_BE_WRAPPED_IN_A_REF was renamed to CAPTURED_IN_CLOSURE (immutable variables are stored there as well) --- .../src/org/jetbrains/jet/codegen/JetTypeMapper.java | 7 ++++--- .../jetbrains/jet/lang/cfg/JetFlowInformationProvider.java | 4 ++-- .../src/org/jetbrains/jet/lang/resolve/BindingContext.java | 2 +- .../jet/lang/types/expressions/ExpressionTypingUtils.java | 2 +- .../plugin/highlighter/VariablesHighlightingVisitor.java | 2 +- 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java index d52036b4171..ed2ccb6502c 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JetTypeMapper.java @@ -942,9 +942,10 @@ public class JetTypeMapper { return StackValue.sharedTypeForType(mapType(((FunctionDescriptor) descriptor).getReceiverParameter().getType(), MapTypeMode.VALUE)); } else if (descriptor instanceof VariableDescriptor) { - Boolean aBoolean = bindingContext.get(BindingContext.MUST_BE_WRAPPED_IN_A_REF, (VariableDescriptor) descriptor); - if (aBoolean != null && aBoolean && ((VariableDescriptor) descriptor).isVar()) { - JetType outType = ((VariableDescriptor) descriptor).getType(); + VariableDescriptor variableDescriptor = (VariableDescriptor) descriptor; + Boolean aBoolean = bindingContext.get(BindingContext.CAPTURED_IN_CLOSURE, variableDescriptor); + if (aBoolean != null && aBoolean && variableDescriptor.isVar()) { + JetType outType = variableDescriptor.getType(); return StackValue.sharedTypeForType(mapType(outType, MapTypeMode.VALUE)); } else { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java index 562836b11cf..a30b1de310f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java @@ -41,7 +41,7 @@ import org.jetbrains.jet.plugin.JetMainDetector; import java.util.*; import static org.jetbrains.jet.lang.diagnostics.Errors.*; -import static org.jetbrains.jet.lang.resolve.BindingContext.MUST_BE_WRAPPED_IN_A_REF; +import static org.jetbrains.jet.lang.resolve.BindingContext.CAPTURED_IN_CLOSURE; import static org.jetbrains.jet.lang.types.TypeUtils.NO_EXPECTED_TYPE; /** @@ -599,7 +599,7 @@ public class JetFlowInformationProvider { !DescriptorUtils.isLocal(variableDescriptor.getContainingDeclaration(), variableDescriptor)) return; VariableStatus variableStatus = enterData.get(variableDescriptor); if (instruction instanceof WriteValueInstruction) { - if (trace.get(MUST_BE_WRAPPED_IN_A_REF, variableDescriptor)) return; + if (trace.get(CAPTURED_IN_CLOSURE, variableDescriptor)) return; JetElement element = ((WriteValueInstruction) instruction).getElement(); if (variableStatus != VariableStatus.READ) { if (element instanceof JetBinaryExpression && ((JetBinaryExpression) element).getOperationToken() == JetTokens.EQ) { 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 7ca4410b790..674b7b5fbd4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java @@ -76,7 +76,7 @@ public interface BindingContext { WritableSlice STATEMENT = Slices.createRemovableSetSlice(); WritableSlice DELEGATED = Slices.createRemovableSetSlice(); - WritableSlice MUST_BE_WRAPPED_IN_A_REF = Slices.createSimpleSetSlice(); + WritableSlice CAPTURED_IN_CLOSURE = Slices.createSimpleSetSlice(); // enum DeferredTypeKey {DEFERRED_TYPE_KEY} // WritableSlice> DEFERRED_TYPES = Slices.createSimpleSlice(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java index 8a582199333..a3917558293 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java @@ -137,7 +137,7 @@ public class ExpressionTypingUtils { if (variable != null) { DeclarationDescriptor containingDeclaration = variable.getContainingDeclaration(); if (context.scope.getContainingDeclaration() != containingDeclaration && containingDeclaration instanceof CallableDescriptor) { - context.trace.record(MUST_BE_WRAPPED_IN_A_REF, variable); + context.trace.record(CAPTURED_IN_CLOSURE, variable); } } } diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java b/idea/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java index 12dd7c77fa3..589b343b443 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/VariablesHighlightingVisitor.java @@ -92,7 +92,7 @@ class VariablesHighlightingVisitor extends AfterAnalysisHighlightingVisitor { JetPsiChecker.highlightName(holder, elementToHighlight, JetHighlightingColors.MUTABLE_VARIABLE); } - if (Boolean.TRUE.equals(bindingContext.get(MUST_BE_WRAPPED_IN_A_REF, variableDescriptor))) { + if (Boolean.TRUE.equals(bindingContext.get(CAPTURED_IN_CLOSURE, variableDescriptor))) { holder.createInfoAnnotation(elementToHighlight, "Wrapped into a reference object to be modified when captured in a closure").setTextAttributes( JetHighlightingColors.WRAPPED_INTO_REF); }