diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.kt b/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.kt index bc34284f413..1ae02d557a8 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.kt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.kt @@ -1,4 +1,4 @@ -// IGNORE_FIR -// ISSUE: KTIJ-26465 (Unignore the test after the issue fixed) +// ISSUE: KTIJ-26465 +// TODO: arrayOf() should be resolved because it's from builtins that are always presented annotation class Ann(vararg val a: String = ["/"]) \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.out_of_src_roots.txt b/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.out_of_src_roots.txt new file mode 100644 index 00000000000..6eb41a4f4d4 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.out_of_src_roots.txt @@ -0,0 +1,167 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] arrayOfCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(COMPANION_GENERATION)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(SUPER_TYPES)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(TYPES)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(STATUS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(CONTRACTS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(BODY_RESOLVE)] annotation class Ann : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Ann.a] vararg a: R|kotlin/Array| = #(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array| = R|/a| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array| + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(BODY_RESOLVE)] annotation class Ann : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Ann.a] vararg a: R|kotlin/Array| = #(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array| = R|/a| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array| + + } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.txt b/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.txt new file mode 100644 index 00000000000..b90795aed44 --- /dev/null +++ b/analysis/low-level-api-fir/testdata/lazyResolve/noRuntime/arrayOfCall.txt @@ -0,0 +1,167 @@ +RAW_FIR: +FILE: [ResolvedTo(RAW_FIR)] arrayOfCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +IMPORTS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(RAW_FIR)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +COMPILER_REQUIRED_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(COMPILER_REQUIRED_ANNOTATIONS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +COMPANION_GENERATION: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(COMPANION_GENERATION)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +SUPER_TYPES: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(SUPER_TYPES)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +TYPES: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public? final? [ResolvedTo(TYPES)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +STATUS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(STATUS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +EXPECT_ACTUAL_MATCHING: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(EXPECT_ACTUAL_MATCHING)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +ARGUMENTS_OF_ANNOTATIONS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(ARGUMENTS_OF_ANNOTATIONS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +CONTRACTS: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(CONTRACTS)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +IMPLICIT_TYPES_BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +ANNOTATIONS_ARGUMENTS_MAPPING: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] annotation class Ann : R|kotlin/Annotation| { + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] constructor([ResolvedTo(RAW_FIR)] [CorrespondingProperty=/Ann.a] vararg a: String = LAZY_EXPRESSION): R|Ann| { + LAZY_super + } + + public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|/a| + public? [ResolvedTo(RAW_FIR)] [ContainingClassKey=Ann] get(): String + + } + +BODY_RESOLVE: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(BODY_RESOLVE)] annotation class Ann : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Ann.a] vararg a: R|kotlin/Array| = #(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array| = R|/a| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array| + + } + +FILE RAW TO BODY: +FILE: [ResolvedTo(IMPORTS)] arrayOfCall.kt + public final [ResolvedTo(BODY_RESOLVE)] annotation class Ann : R|kotlin/Annotation| { + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] constructor([ResolvedTo(BODY_RESOLVE)] [CorrespondingProperty=/Ann.a] vararg a: R|kotlin/Array| = #(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| { + super() + } + + public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array| = R|/a| + public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array| + + } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSyntheticCallGenerator.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSyntheticCallGenerator.kt index 0d1c3df9c9e..e1d971ca5fd 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSyntheticCallGenerator.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirSyntheticCallGenerator.kt @@ -34,15 +34,13 @@ import org.jetbrains.kotlin.fir.references.builder.buildResolvedErrorReference import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference import org.jetbrains.kotlin.fir.references.impl.FirStubReference import org.jetbrains.kotlin.fir.references.isError -import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents -import org.jetbrains.kotlin.fir.resolve.ResolutionMode +import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.calls.* -import org.jetbrains.kotlin.fir.resolve.createErrorReferenceWithExistingCandidate import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider -import org.jetbrains.kotlin.fir.resolve.toErrorReference +import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype import org.jetbrains.kotlin.fir.symbols.SyntheticCallableId import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol @@ -176,9 +174,10 @@ class FirSyntheticCallGenerator( context: ResolutionContext ): FirFunctionCall { val argumentList = arrayLiteral.argumentList + val arrayOfSymbol = calculateArrayOfSymbol(expectedTypeRef) return buildFunctionCall { this.argumentList = argumentList - calleeReference = calculateArrayOfSymbol(expectedTypeRef)?.let { + calleeReference = arrayOfSymbol?.let { generateCalleeReferenceWithCandidate( arrayLiteral, it.fir, @@ -191,6 +190,10 @@ class FirSyntheticCallGenerator( diagnostic = ConeUnresolvedNameError(ArrayFqNames.ARRAY_OF_FUNCTION) } source = arrayLiteral.source + }.also { + if (arrayOfSymbol == null) { + it.resultType = components.typeFromCallee(it) + } } }