[FIR] Remove FirNamedArgumentExpressions during completion
They are mostly necessary for argument mapping during resolution. To support a couple checkers, we transform named args for varargs into "fake" spread expressions. Other than that, named arguments aren't needed for anything and often lead to bugs where we forget to unwrap them for something, so it's better to get rid of them. #KT-66124
This commit is contained in:
committed by
Space Team
parent
03fc0fd381
commit
8443daf78d
+2
-1
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.fir.declarations.builder.buildAnonymousFunction
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildRegularClass
|
||||
import org.jetbrains.kotlin.fir.declarations.builder.buildValueParameter
|
||||
import org.jetbrains.kotlin.fir.declarations.impl.FirResolvedDeclarationStatusImpl
|
||||
import org.jetbrains.kotlin.fir.expressions.FirEmptyArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
||||
import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildAnonymousFunctionExpression
|
||||
@@ -225,7 +226,7 @@ class DataFrameLikeCallsRefinementExtension(session: FirSession) : FirFunctionCa
|
||||
dispatchReceiver = call.dispatchReceiver
|
||||
this.explicitReceiver = call.explicitReceiver
|
||||
extensionReceiver = call.extensionReceiver
|
||||
argumentList = buildResolvedArgumentList(linkedMapOf(argument to parameter.fir))
|
||||
argumentList = buildResolvedArgumentList(original = null, linkedMapOf(argument to parameter.fir))
|
||||
calleeReference = buildResolvedNamedReference {
|
||||
name = Name.identifier("let")
|
||||
resolvedSymbol = resolvedLet
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ FILE: foo.kt
|
||||
Module: main
|
||||
FILE: main.kt
|
||||
@R|org/jetbrains/kotlin/fir/plugin/MyComposable|() public final fun Bar(): R|kotlin/Unit| {
|
||||
R|p3/Foo|(text = Foo@fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
R|p3/Foo|(Foo@fun <anonymous>(): R|kotlin/Unit| <inline=NoInline> {
|
||||
^@Foo Unit
|
||||
}
|
||||
)
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ FILE: a.kt
|
||||
Module: b
|
||||
FILE: b.kt
|
||||
public final fun bar(onClick: R|(() -> kotlin/Unit)?| = Null(null)): R|kotlin/Unit| {
|
||||
R|/RMenuItem|(onClick = R|<local>/onClick|, trailing = R|<local>/onClick|?.{ $subj$.R|kotlin/let|<R|() -> kotlin/Unit|, R|@R|org/jetbrains/kotlin/fir/plugin/MyComposable|() some/MyComposableFunction0<kotlin/Unit>?|>(<L> = let@fun <anonymous>(it: R|() -> kotlin/Unit|): R|@R|org/jetbrains/kotlin/fir/plugin/MyComposable|() some/MyComposableFunction0<kotlin/Unit>?| <inline=Inline, kind=EXACTLY_ONCE> {
|
||||
R|/RMenuItem|(R|<local>/onClick|, R|<local>/onClick|?.{ $subj$.R|kotlin/let|<R|() -> kotlin/Unit|, R|@R|org/jetbrains/kotlin/fir/plugin/MyComposable|() some/MyComposableFunction0<kotlin/Unit>?|>(<L> = let@fun <anonymous>(it: R|() -> kotlin/Unit|): R|@R|org/jetbrains/kotlin/fir/plugin/MyComposable|() some/MyComposableFunction0<kotlin/Unit>?| <inline=Inline, kind=EXACTLY_ONCE> {
|
||||
^ let@fun <anonymous>(): R|kotlin/Unit| <inline=Unknown> {
|
||||
^@let Unit
|
||||
}
|
||||
|
||||
+1
-2
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlinx.serialization.compiler.fir
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.fir.FirAnnotationContainer
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.declarations.*
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
@@ -267,7 +266,7 @@ fun FirDeclaration.excludeFromJsExport() {
|
||||
val jsExportIgnoreConstructor = jsExportIgnoreAnnotation.declarationSymbols.firstIsInstanceOrNull<FirConstructorSymbol>() ?: return
|
||||
|
||||
val jsExportIgnoreAnnotationCall = buildAnnotationCall {
|
||||
argumentList = buildResolvedArgumentList(linkedMapOf())
|
||||
argumentList = FirEmptyArgumentList
|
||||
annotationTypeRef = buildResolvedTypeRef {
|
||||
type = jsExportIgnoreAnnotation.defaultType()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user