[FIR] Fix 1.(fun Int.() = 1)() call fir conversion
This commit is contained in:
+3
-5
@@ -551,6 +551,7 @@ class ExpressionsConverter(
|
||||
}
|
||||
}
|
||||
|
||||
var result = firSelector
|
||||
(firSelector as? FirQualifiedAccess)?.let {
|
||||
if (isSafe) {
|
||||
@OptIn(FirImplementationDetail::class)
|
||||
@@ -561,13 +562,10 @@ class ExpressionsConverter(
|
||||
)
|
||||
}
|
||||
|
||||
it.replaceExplicitReceiver(firReceiver)
|
||||
|
||||
@OptIn(FirImplementationDetail::class)
|
||||
it.replaceSource(dotQualifiedExpression.toFirSourceElement())
|
||||
result = convertFirSelector(it, dotQualifiedExpression.toFirSourceElement(), firReceiver!!) as? FirExpression
|
||||
}
|
||||
|
||||
return firSelector ?: buildErrorExpression(
|
||||
return result ?: buildErrorExpression(
|
||||
null,
|
||||
ConeSimpleDiagnostic("Qualified expression without selector", DiagnosticKind.Syntax)
|
||||
)
|
||||
|
||||
@@ -2374,10 +2374,7 @@ open class RawFirBuilder(
|
||||
)
|
||||
}
|
||||
|
||||
firSelector.replaceExplicitReceiver(receiver)
|
||||
|
||||
@OptIn(FirImplementationDetail::class)
|
||||
firSelector.replaceSource(expression.toFirSourceElement())
|
||||
return convertFirSelector(firSelector, expression.toFirSourceElement(), receiver)
|
||||
}
|
||||
return firSelector
|
||||
}
|
||||
|
||||
+25
@@ -1266,6 +1266,31 @@ abstract class BaseFirBuilder<T>(val baseSession: FirSession, val context: Conte
|
||||
}
|
||||
}
|
||||
|
||||
protected fun convertFirSelector(
|
||||
firSelector: FirQualifiedAccess,
|
||||
source: KtSourceElement?,
|
||||
receiver: FirExpression
|
||||
): FirQualifiedAccess {
|
||||
return if (firSelector is FirImplicitInvokeCall) {
|
||||
buildImplicitInvokeCall {
|
||||
this.source = source
|
||||
annotations.addAll(firSelector.annotations)
|
||||
typeArguments.addAll(firSelector.typeArguments)
|
||||
explicitReceiver = firSelector.explicitReceiver
|
||||
argumentList = buildArgumentList {
|
||||
arguments.add(receiver)
|
||||
arguments.addAll(firSelector.arguments)
|
||||
}
|
||||
calleeReference = firSelector.calleeReference
|
||||
}
|
||||
} else {
|
||||
firSelector.replaceExplicitReceiver(receiver)
|
||||
@OptIn(FirImplementationDetail::class)
|
||||
firSelector.replaceSource(source)
|
||||
firSelector
|
||||
}
|
||||
}
|
||||
|
||||
protected fun convertValueParameterName(
|
||||
safeName: Name,
|
||||
rawName: String?,
|
||||
|
||||
Reference in New Issue
Block a user