FIR: pass elvis expected type to lhs/rhs
This commit is contained in:
committed by
Mikhail Glukhikh
parent
41f56729f9
commit
8f2ad57f7a
@@ -587,8 +587,7 @@ class Fir2IrVisitor(
|
||||
fun irGetLhsValue(): IrGetValue =
|
||||
IrGetValueImpl(startOffset, endOffset, irLhsVariable.type, irLhsVariable.symbol)
|
||||
|
||||
// TODO: replace with .coneType
|
||||
val originalType = firLhsVariable.returnTypeRef.coneTypeUnsafe<ConeKotlinType>()
|
||||
val originalType = firLhsVariable.returnTypeRef.coneType
|
||||
val notNullType = originalType.withNullability(ConeNullability.NOT_NULL)
|
||||
val irBranches = listOf(
|
||||
IrBranchImpl(
|
||||
|
||||
+5
-2
@@ -216,9 +216,12 @@ class FirControlFlowStatementsResolveTransformer(transformer: FirBodyResolveTran
|
||||
): CompositeTransformResult<FirStatement> {
|
||||
if (elvisExpression.calleeReference is FirResolvedNamedReference) return elvisExpression.compose()
|
||||
elvisExpression.transformAnnotations(transformer, data)
|
||||
elvisExpression.transformLhs(transformer, ResolutionMode.ContextDependent)
|
||||
val expectedArgumentType =
|
||||
if (data is ResolutionMode.WithExpectedType && data.expectedType !is FirImplicitTypeRef) data
|
||||
else ResolutionMode.ContextDependent
|
||||
elvisExpression.transformLhs(transformer, expectedArgumentType)
|
||||
dataFlowAnalyzer.exitElvisLhs(elvisExpression)
|
||||
elvisExpression.transformRhs(transformer, ResolutionMode.ContextDependent)
|
||||
elvisExpression.transformRhs(transformer, expectedArgumentType)
|
||||
|
||||
val result = syntheticCallGenerator.generateCalleeForElvisExpression(elvisExpression, resolutionContext)?.let {
|
||||
callCompleter.completeCall(it, data.expectedType).result
|
||||
|
||||
Reference in New Issue
Block a user