[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:
@@ -150,18 +150,8 @@ class FirSamResolverImpl(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val substitutedFunctionType = substitutor.substituteOrSelf(functionType)
|
|
||||||
val substitutedReturnType =
|
|
||||||
ConeClassLikeTypeImpl(
|
|
||||||
firRegularClass.symbol.toLookupTag(), newTypeParameterTypes.toTypedArray(), isNullable = false,
|
|
||||||
)
|
|
||||||
|
|
||||||
return buildSimpleFunction {
|
return buildSimpleFunction {
|
||||||
session = firSession
|
session = firSession
|
||||||
returnTypeRef = buildResolvedTypeRef {
|
|
||||||
source = null
|
|
||||||
type = substitutedReturnType
|
|
||||||
}
|
|
||||||
name = classId.shortClassName
|
name = classId.shortClassName
|
||||||
status = FirDeclarationStatusImpl(firRegularClass.visibility, Modality.FINAL).apply {
|
status = FirDeclarationStatusImpl(firRegularClass.visibility, Modality.FINAL).apply {
|
||||||
isExpect = firRegularClass.isExpect
|
isExpect = firRegularClass.isExpect
|
||||||
@@ -175,6 +165,19 @@ class FirSamResolverImpl(
|
|||||||
isTailRec = false
|
isTailRec = false
|
||||||
}
|
}
|
||||||
this.symbol = symbol
|
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 {
|
valueParameters += buildValueParameter {
|
||||||
session = firSession
|
session = firSession
|
||||||
returnTypeRef = buildResolvedTypeRef {
|
returnTypeRef = buildResolvedTypeRef {
|
||||||
@@ -188,7 +191,7 @@ class FirSamResolverImpl(
|
|||||||
isVararg = false
|
isVararg = false
|
||||||
}
|
}
|
||||||
|
|
||||||
typeParameters += newTypeParameters.map { it.build() }
|
|
||||||
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
resolvePhase = FirResolvePhase.BODY_RESOLVE
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user