[FIR] Fix order of resolving children of FirProperty

This commit is contained in:
Dmitriy Novozhilov
2019-12-10 11:54:16 +03:00
parent e281d224a3
commit 51560f2f17
@@ -21,8 +21,6 @@ import org.jetbrains.kotlin.fir.resolve.calls.extractLambdaInfoFromFunctionalTyp
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
import org.jetbrains.kotlin.fir.resolve.transformers.* import org.jetbrains.kotlin.fir.resolve.transformers.*
import org.jetbrains.kotlin.fir.resolve.transformers.FirStatusResolveTransformer.Companion.resolveStatus import org.jetbrains.kotlin.fir.resolve.transformers.FirStatusResolveTransformer.Companion.resolveStatus
import org.jetbrains.kotlin.fir.resolve.transformers.StoreType
import org.jetbrains.kotlin.fir.resolve.transformers.transformVarargTypeToArrayType
import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
import org.jetbrains.kotlin.fir.scopes.impl.FirLocalScope import org.jetbrains.kotlin.fir.scopes.impl.FirLocalScope
import org.jetbrains.kotlin.fir.scopes.impl.FirMemberTypeParameterScope import org.jetbrains.kotlin.fir.scopes.impl.FirMemberTypeParameterScope
@@ -126,8 +124,8 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer)
private fun transformLocalVariable(variable: FirProperty): CompositeTransformResult<FirDeclaration> { private fun transformLocalVariable(variable: FirProperty): CompositeTransformResult<FirDeclaration> {
assert(variable.isLocal) assert(variable.isLocal)
val resolutionMode = withExpectedType(variable.returnTypeRef) val resolutionMode = withExpectedType(variable.returnTypeRef)
variable.transformOtherChildren(transformer, resolutionMode) variable.transformInitializer(transformer, resolutionMode)
.transformInitializer(transformer, resolutionMode) .transformOtherChildren(transformer, resolutionMode)
.transformInitializer(integerLiteralTypeApproximator, null) .transformInitializer(integerLiteralTypeApproximator, null)
if (variable.initializer != null) { if (variable.initializer != null) {
storeVariableReturnType(variable) storeVariableReturnType(variable)
@@ -141,7 +139,9 @@ class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer)
private fun FirProperty.transformChildrenWithoutAccessors(returnTypeRef: FirTypeRef): FirProperty { private fun FirProperty.transformChildrenWithoutAccessors(returnTypeRef: FirTypeRef): FirProperty {
val data = withExpectedType(returnTypeRef) val data = withExpectedType(returnTypeRef)
return transformInitializer(transformer, data).transformOtherChildren(transformer, data) return transformReturnTypeRef(transformer, data)
.transformInitializer(transformer, data)
.transformOtherChildren(transformer, data)
} }
private fun <F : FirVariable<F>> FirVariable<F>.transformAccessors() { private fun <F : FirVariable<F>> FirVariable<F>.transformAccessors() {