[FIR] Change order of initialization synthetic fun in SAM resolution

It's needed because of `substitutedReturnType` relies on bounds
  of type parameters that should be build before access via symbol
  from lookup tag
This commit is contained in:
Dmitriy Novozhilov
2020-02-18 11:13:58 +03:00
parent 6430209074
commit bf11f1892d
@@ -150,18 +150,8 @@ class FirSamResolverImpl(
}
}
val substitutedFunctionType = substitutor.substituteOrSelf(functionType)
val substitutedReturnType =
ConeClassLikeTypeImpl(
firRegularClass.symbol.toLookupTag(), newTypeParameterTypes.toTypedArray(), isNullable = false,
)
return buildSimpleFunction {
session = firSession
returnTypeRef = buildResolvedTypeRef {
source = null
type = substitutedReturnType
}
name = classId.shortClassName
status = FirDeclarationStatusImpl(firRegularClass.visibility, Modality.FINAL).apply {
isExpect = firRegularClass.isExpect
@@ -175,6 +165,19 @@ class FirSamResolverImpl(
isTailRec = false
}
this.symbol = symbol
typeParameters += newTypeParameters.map { it.build() }
val substitutedFunctionType = substitutor.substituteOrSelf(functionType)
val substitutedReturnType =
ConeClassLikeTypeImpl(
firRegularClass.symbol.toLookupTag(), newTypeParameterTypes.toTypedArray(), isNullable = false,
)
returnTypeRef = buildResolvedTypeRef {
source = null
type = substitutedReturnType
}
valueParameters += buildValueParameter {
session = firSession
returnTypeRef = buildResolvedTypeRef {
@@ -188,7 +191,7 @@ class FirSamResolverImpl(
isVararg = false
}
typeParameters += newTypeParameters.map { it.build() }
resolvePhase = FirResolvePhase.BODY_RESOLVE
}
}