From f1eb66819b46488d1d0369e8b9262266a550dbec Mon Sep 17 00:00:00 2001 From: Simon Ogorodnik Date: Thu, 11 Apr 2019 13:59:19 +0300 Subject: [PATCH] Revert "FIR body resolve: support variable assignments" Performed to make long branch rebasing easier This reverts commit af8c3788 --- .../transformers/FirBodyResolveTransformer.kt | 55 ++++++++----------- .../fromBuilder/noPrimaryConstructor.txt | 2 +- 2 files changed, 24 insertions(+), 33 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt index 1884f758120..22f9c549f3e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirBodyResolveTransformer.kt @@ -153,30 +153,6 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn } } - private fun transformCallee(qualifiedAccess: T): T { - val callee = qualifiedAccess.calleeReference as? FirSimpleNamedReference ?: return qualifiedAccess - - qualifiedAccess.explicitReceiver?.visitNoTransform(this, null) - - val receiver = qualifiedAccess.explicitReceiver - - //val checkers = listOf(VariableApplicabilityChecker(callee.name)) - - val info = CallInfo(true, receiver, 0) - val resolver = CallResolver(jump, session) - resolver.callInfo = info - resolver.scopes = (scopes + localScopes).asReversed() - - val consumer = createVariableConsumer( - session, callee.name, qualifiedAccess.explicitReceiver, qualifiedAccess.explicitReceiver?.resultType - ) - val result = resolver.runTowerResolver(consumer) - val successCandidates = result.successCandidates() - val resultExpression = qualifiedAccess.transformCalleeReference(this, successCandidates) as T - if (resultExpression is FirExpression) storeTypeFromCallee(resultExpression) - return resultExpression - } - override fun transformQualifiedAccessExpression( qualifiedAccessExpression: FirQualifiedAccessExpression, data: Any? @@ -202,15 +178,30 @@ open class FirBodyResolveTransformer(val session: FirSession, val implicitTypeOn } } } - return transformCallee(qualifiedAccessExpression).compose() - } + val callee = qualifiedAccessExpression.calleeReference as? FirSimpleNamedReference ?: return qualifiedAccessExpression.compose() - override fun transformVariableAssignment( - variableAssignment: FirVariableAssignment, - data: Any? - ): CompositeTransformResult { - variableAssignment.rValue.visitNoTransform(this, null) - return transformCallee(variableAssignment).compose() + qualifiedAccessExpression.explicitReceiver?.visitNoTransform(this, null) + + val receiver = qualifiedAccessExpression.explicitReceiver + + //val checkers = listOf(VariableApplicabilityChecker(callee.name)) + + val info = CallInfo(true, receiver, 0) + val resolver = CallResolver(jump, session) + resolver.callInfo = info + resolver.scopes = (scopes + localScopes).asReversed() + + val consumer = createVariableConsumer( + session, + callee.name, + qualifiedAccessExpression.explicitReceiver, + qualifiedAccessExpression.explicitReceiver?.resultType + ) + val result = resolver.runTowerResolver(consumer) + val successCandidates = result.successCandidates() + val resultExpression = qualifiedAccessExpression.transformCalleeReference(this, successCandidates) + storeTypeFromCallee(resultExpression as FirQualifiedAccessExpression) + return resultExpression.compose() } override fun transformFunctionCall(functionCall: FirFunctionCall, data: Any?): CompositeTransformResult { diff --git a/compiler/fir/resolve/testData/resolve/fromBuilder/noPrimaryConstructor.txt b/compiler/fir/resolve/testData/resolve/fromBuilder/noPrimaryConstructor.txt index 1d8de32469f..1e3e3753594 100644 --- a/compiler/fir/resolve/testData/resolve/fromBuilder/noPrimaryConstructor.txt +++ b/compiler/fir/resolve/testData/resolve/fromBuilder/noPrimaryConstructor.txt @@ -5,7 +5,7 @@ FILE: noPrimaryConstructor.kt public constructor(x: R|kotlin/String|): R|NoPrimary| { super() - this#.R|/NoPrimary.x| = R|/x| + this#.x# = R|/x| } public constructor(): R|NoPrimary| {