From d9883067e6b84783e832aa3b4c41178a149da81c Mon Sep 17 00:00:00 2001 From: "simon.ogorodnik" Date: Tue, 11 Feb 2020 16:10:00 +0300 Subject: [PATCH] [FIR] Hide primary constructor parameters from accessors --- .../body/resolve/FirDeclarationsResolveTransformer.kt | 9 ++++++--- .../diagnostics/tests/PropertyInitializers.fir.kt | 2 +- .../primaryConstructorParameter.fir.kt | 8 ++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 075a8bf2dbb..e678c9bcdcc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -100,10 +100,13 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) dataFlowAnalyzer.enterProperty(property) withFullBodyResolve { withScopeCleanup(localScopes) { - localScopes.addIfNotNull(primaryConstructorParametersScope) + components.withContainer(property) { - property.transformChildrenWithoutAccessors(returnTypeRef) - property.transformInitializer(integerLiteralTypeApproximator, null) + withScopeCleanup(localScopes) { + localScopes.addIfNotNull(primaryConstructorParametersScope) + property.transformChildrenWithoutAccessors(returnTypeRef) + property.transformInitializer(integerLiteralTypeApproximator, null) + } if (property.initializer != null) { storeVariableReturnType(property) } diff --git a/compiler/testData/diagnostics/tests/PropertyInitializers.fir.kt b/compiler/testData/diagnostics/tests/PropertyInitializers.fir.kt index feecafe9145..08153981e4d 100644 --- a/compiler/testData/diagnostics/tests/PropertyInitializers.fir.kt +++ b/compiler/testData/diagnostics/tests/PropertyInitializers.fir.kt @@ -5,5 +5,5 @@ class Foo(val a: Int, b: Int) { get() = a val e: Int - get() = b + get() = b } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/properties/inferenceFromGetters/primaryConstructorParameter.fir.kt b/compiler/testData/diagnostics/tests/properties/inferenceFromGetters/primaryConstructorParameter.fir.kt index 9eb73a466d3..45c62b274d7 100644 --- a/compiler/testData/diagnostics/tests/properties/inferenceFromGetters/primaryConstructorParameter.fir.kt +++ b/compiler/testData/diagnostics/tests/properties/inferenceFromGetters/primaryConstructorParameter.fir.kt @@ -8,16 +8,16 @@ fun delegateFactory(p: Any) = Delegate class C(p: Any, val v: Any) { - val test1 get() = p + val test1 get() = p val test2 get() = v // NB here we can use both 'T' (property type parameter) and 'p' (primary constructor parameter) val List.test3 by delegateFactory(p) - val test4 get() { return p } + val test4 get() { return p } var test5 - get() { return p } - set(nv) { p.let {} } + get() { return p } + set(nv) { p.let {} } } \ No newline at end of file