From 49087668139fe2a860d05ef4970deb2e12f9dd5e Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 19 Aug 2013 17:45:22 +0400 Subject: [PATCH] Passing DataFlowInfo when analyzing property initializers #KT-2835 In Progress #KT-2225 In Progress #KT-338 In Progress --- .../jet/lang/resolve/DeclarationResolver.java | 7 ++++++- .../jetbrains/jet/lang/resolve/DescriptorResolver.java | 7 ++++--- .../lazy/descriptors/AbstractLazyMemberScope.java | 10 +++++++--- .../tests/dataFlow/local/PropertyInLocalClass.kt | 9 +++++++++ .../jet/checkers/JetDiagnosticsTestGenerated.java | 5 +++++ .../jet/types/JetDefaultModalityModifiersTest.java | 6 ++++-- 6 files changed, 35 insertions(+), 9 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/dataFlow/local/PropertyInLocalClass.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java index 0f3efc2e955..fcc95cd36c9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DeclarationResolver.java @@ -204,7 +204,12 @@ public class DeclarationResolver { @Override public void visitProperty(JetProperty property) { - PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePropertyDescriptor(namespaceLike.getOwnerForChildren(), scopeForPropertyInitializers, property, trace); + PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePropertyDescriptor( + namespaceLike.getOwnerForChildren(), + scopeForPropertyInitializers, + property, + trace, + context.getOuterDataFlowInfo()); namespaceLike.addPropertyDescriptor(propertyDescriptor); context.getProperties().put(property, propertyDescriptor); context.registerDeclaringScope(property, scopeForPropertyInitializers); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index da20441d96f..7de7dfd3a8a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -941,7 +941,8 @@ public class DescriptorResolver { @NotNull DeclarationDescriptor containingDeclaration, @NotNull JetScope scope, @NotNull JetProperty property, - BindingTrace trace + @NotNull BindingTrace trace, + @NotNull DataFlowInfo dataFlowInfo ) { JetModifierList modifierList = property.getModifierList(); @@ -994,7 +995,7 @@ public class DescriptorResolver { JetScope propertyScope = getPropertyDeclarationInnerScope(propertyDescriptor, scope, typeParameterDescriptors, NO_RECEIVER_PARAMETER, trace); - JetType type = getVariableType(propertyDescriptor, propertyScope, property, DataFlowInfo.EMPTY, true, trace); + JetType type = getVariableType(propertyDescriptor, propertyScope, property, dataFlowInfo, true, trace); propertyDescriptor.setType(type, typeParameterDescriptors, getExpectedThisObjectIfNeeded(containingDeclaration), receiverDescriptor); @@ -1031,7 +1032,7 @@ public class DescriptorResolver { @NotNull final JetVariableDeclaration variable, @NotNull final DataFlowInfo dataFlowInfo, boolean notLocal, - final BindingTrace trace + @NotNull final BindingTrace trace ) { JetTypeReference propertyTypeRef = variable.getTypeRef(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java index a5a209ea358..5d411a19fbf 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/AbstractLazyMemberScope.java @@ -186,9 +186,13 @@ public abstract class AbstractLazyMemberScope declarations = aClass.getDeclarations(); JetProperty property = (JetProperty) declarations.get(0); - PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePropertyDescriptor(classDescriptor, scope, property, JetTestUtils.DUMMY_TRACE); + PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePropertyDescriptor(classDescriptor, scope, property, + JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY); assertEquals(expectedPropertyModality, propertyDescriptor.getModality()); } @@ -138,7 +139,8 @@ public class JetDefaultModalityModifiersTest extends JetLiteFixture { List declarations = aClass.getDeclarations(); JetProperty property = (JetProperty) declarations.get(0); - PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePropertyDescriptor(classDescriptor, scope, property, JetTestUtils.DUMMY_TRACE); + PropertyDescriptor propertyDescriptor = descriptorResolver.resolvePropertyDescriptor(classDescriptor, scope, property, + JetTestUtils.DUMMY_TRACE, DataFlowInfo.EMPTY); PropertyAccessorDescriptor propertyAccessor = isGetter ? propertyDescriptor.getGetter() : propertyDescriptor.getSetter();