[FIR] Resolve <implicit> to FirErrorTypeRef for unresolved synthetic arrayOf call

This commit is contained in:
Ivan Kochurkin
2023-08-01 19:19:22 +02:00
committed by Space Team
parent 4d7e54b2bb
commit f31786c2a0
4 changed files with 344 additions and 7 deletions
@@ -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
<caret>annotation class Ann(vararg val a: String = ["/"])
@@ -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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<out ERROR CLASS: Symbol not found for String>| = <Unresolved name: arrayOf>#(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array<out ERROR CLASS: Symbol not found for String>| = R|<local>/a|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array<out ERROR CLASS: Symbol not found for String>|
}
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<out ERROR CLASS: Symbol not found for String>| = <Unresolved name: arrayOf>#(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array<out ERROR CLASS: Symbol not found for String>| = R|<local>/a|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array<out ERROR CLASS: Symbol not found for String>|
}
@@ -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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<R|kotlin/Any|>
}
public? final? [ResolvedTo(RAW_FIR)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: String = R|<local>/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<out java/lang/String>| = <Unresolved name: arrayOf>#(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array<out java/lang/String>| = R|<local>/a|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array<out java/lang/String>|
}
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<out java/lang/String>| = <Unresolved name: arrayOf>#(ERROR_EXPR(Missing stdlib class: kotlin/String))): R|Ann| {
super<R|kotlin/Any|>()
}
public final [ResolvedTo(BODY_RESOLVE)] [IsFromPrimaryConstructor=true, IsFromVarargKey=true] val a: R|kotlin/Array<out java/lang/String>| = R|<local>/a|
public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Ann] get(): R|kotlin/Array<out java/lang/String>|
}
@@ -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)
}
}
}