diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/invalidCode/typeParameterAsValue.descriptors.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/invalidCode/typeParameterAsValue.descriptors.txt new file mode 100644 index 00000000000..19765bd501b --- /dev/null +++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/invalidCode/typeParameterAsValue.descriptors.txt @@ -0,0 +1 @@ +null diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/invalidCode/typeParameterAsValue.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/invalidCode/typeParameterAsValue.txt index ec747fa47dd..731086a886f 100644 --- a/analysis/analysis-api/testData/components/callResolver/resolveCall/invalidCode/typeParameterAsValue.txt +++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/invalidCode/typeParameterAsValue.txt @@ -1 +1,3 @@ -null \ No newline at end of file +KtErrorCallInfo: + candidateCalls = [] + diagnostic = ERROR \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors/unusedTypeHiddenByTypeParameter_invalidAsArgument.importsAnalysis b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors/unusedTypeHiddenByTypeParameter_invalidAsArgument.importsAnalysis index bbbeefbaba4..5763ac3b14f 100644 --- a/analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors/unusedTypeHiddenByTypeParameter_invalidAsArgument.importsAnalysis +++ b/analysis/analysis-api/testData/components/importOptimizer/analyseImports/referencesWithErrors/unusedTypeHiddenByTypeParameter_invalidAsArgument.importsAnalysis @@ -1,4 +1,7 @@ USED DECLARATIONS: +Declaration: dependency.T +By names: [T] + UNRESOLVED NAMES: println diff --git a/analysis/low-level-api-fir/testData/contextCollector/innerClasses.txt b/analysis/low-level-api-fir/testData/contextCollector/innerClasses.txt index c5651bda08c..e5120eba7c6 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/innerClasses.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/innerClasses.txt @@ -12,13 +12,13 @@ Tower Data Context: Element 5 Scope: FirExplicitSimpleImportingScope Element 6 - Scope: FirMemberTypeParameterScope - Classifiers: - FirTypeParameterSymbol F - Element 7 Scope: FirNestedClassifierScopeImpl Classifiers: FirRegularClassSymbol public final inner class Bar : R|kotlin/Any| + Element 7 + Scope: FirMemberTypeParameterScope + Classifiers: + FirTypeParameterSymbol F Element 8 Implicit receiver: FirRegularClassSymbol public final class Foo : R|kotlin/Any| diff --git a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeBound.txt b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeBound.txt index 3c3e43d3574..232cc95aaaf 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeBound.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeBound.txt @@ -12,13 +12,13 @@ Tower Data Context: Element 5 Scope: FirExplicitSimpleImportingScope Element 6 - Scope: FirMemberTypeParameterScope - Classifiers: - FirTypeParameterSymbol MyParam - Element 7 Scope: FirNestedClassifierScopeImpl Classifiers: FirRegularClassSymbol public final inner class Inner : R|kotlin/Any| + Element 7 + Scope: FirMemberTypeParameterScope + Classifiers: + FirTypeParameterSymbol MyParam Element 8 Implicit receiver: FirRegularClassSymbol public final class Outer : R|kotlin/Any| diff --git a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeRefInMember.txt b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeRefInMember.txt index c79bf18d600..5367a798e2f 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeRefInMember.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromInner_typeRefInMember.txt @@ -12,13 +12,13 @@ Tower Data Context: Element 5 Scope: FirExplicitSimpleImportingScope Element 6 - Scope: FirMemberTypeParameterScope - Classifiers: - FirTypeParameterSymbol MyParam - Element 7 Scope: FirNestedClassifierScopeImpl Classifiers: FirRegularClassSymbol public final inner class Inner : R|kotlin/Any| + Element 7 + Scope: FirMemberTypeParameterScope + Classifiers: + FirTypeParameterSymbol MyParam Element 8 Implicit receiver: FirRegularClassSymbol public final class Outer : R|kotlin/Any| diff --git a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt index 7ced1a23558..064c5a3533f 100644 --- a/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt +++ b/analysis/low-level-api-fir/testData/contextCollector/typeParameters/declaredInClass_fromNested_typeBound.txt @@ -12,13 +12,13 @@ Tower Data Context: Element 5 Scope: FirExplicitSimpleImportingScope Element 6 - Scope: FirMemberTypeParameterScope - Classifiers: - FirTypeParameterSymbol MyParam - Element 7 Scope: FirNestedClassifierScopeImpl Classifiers: FirRegularClassSymbol public final class Nested> : R|kotlin/Any| + Element 7 + Scope: FirMemberTypeParameterScope + Classifiers: + FirTypeParameterSymbol MyParam Element 8 Implicit receiver: FirRegularClassSymbol public final class Outer : R|kotlin/Any| diff --git a/compiler/fir/analysis-tests/testData/resolve/diagnostics/multipleBounds.fir.txt b/compiler/fir/analysis-tests/testData/resolve/diagnostics/multipleBounds.fir.txt index ff8d6ca3944..8e0de1c1512 100644 --- a/compiler/fir/analysis-tests/testData/resolve/diagnostics/multipleBounds.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/diagnostics/multipleBounds.fir.txt @@ -53,8 +53,8 @@ FILE: multipleBounds.kt } public final fun test(t: R|T|): R|kotlin/Unit| { - R|?|.#() - R|?|.#() + R|?#|.#() + R|?#|.#() R|/t|.R|Jet87/A.foo|() R|/t|.R|Jet87/B.bar|() } @@ -96,8 +96,8 @@ FILE: multipleBounds.kt } public final fun test2(t: R|T|): R|kotlin/Unit| { - R|?|.#() - R|?|.#() + R|?#|.#() + R|?#|.#() R|/t|.R|Jet87/A.foo|() R|/t|.R|Jet87/B.bar|() } diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt index cfd4ec1854b..7bc8f521d03 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/diagnostics/coneDiagnosticToFirDiagnostic.kt @@ -362,6 +362,9 @@ private fun mapInapplicableCandidateError( qualifiedAccessSource ) + // Reported later + is TypeParameterAsExpression -> null + else -> genericDiagnostic } }.distinct() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt index 7f8c72438ed..b17c50e33fc 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/ResolveUtils.kt @@ -608,7 +608,13 @@ fun createConeDiagnosticForCandidateWithError( } CandidateApplicability.INAPPLICABLE_WRONG_RECEIVER -> ConeInapplicableWrongReceiver(listOf(candidate)) CandidateApplicability.K2_NO_COMPANION_OBJECT -> ConeNoCompanionObject(candidate) - else -> ConeInapplicableCandidateError(applicability, candidate) + else -> { + if (TypeParameterAsExpression in candidate.diagnostics) { + ConeTypeParameterInQualifiedAccess(candidate.symbol as FirTypeParameterSymbol) + } else { + ConeInapplicableCandidateError(applicability, candidate) + } + } } } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt index 481dc03c364..ba95854842e 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/CallKind.kt @@ -24,6 +24,7 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) { LowerPriorityIfDynamic, ConstraintSystemForks, CheckIncompatibleTypeVariableUpperBounds, + TypeParameterAsCallable, ) object SyntheticSelect : CallKind( @@ -59,6 +60,7 @@ sealed class CallKind(vararg resolutionSequence: ResolutionStage) { LowerPriorityIfDynamic, ConstraintSystemForks, CheckIncompatibleTypeVariableUpperBounds, + TypeParameterAsCallable, ) object DelegatingConstructorCall : CallKind( diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt index 88193dc0049..df759d722e9 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionStages.kt @@ -780,3 +780,11 @@ internal object ConstraintSystemForks : ResolutionStage() { } } } + +internal object TypeParameterAsCallable : ResolutionStage() { + override suspend fun check(candidate: Candidate, callInfo: CallInfo, sink: CheckerSink, context: ResolutionContext) { + if (candidate.symbol is FirTypeParameterSymbol) { + sink.yieldDiagnostic(TypeParameterAsExpression) + } + } +} \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt index e5a7d2e49d4..37c8323049f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/BodyResolveContext.kt @@ -471,10 +471,11 @@ class BodyResolveContext( // Otherwise, reuse staticsAndCompanion. val forConstructorHeader = if (typeParameterScope != null) { towerDataContext - .addNonLocalScope(typeParameterScope) .addNonLocalTowerDataElements(towerElementsForClass.superClassesStaticsAndCompanionReceivers) .run { towerElementsForClass.companionReceiver?.let { addReceiver(null, it) } ?: this } .addNonLocalScopesIfNotNull(towerElementsForClass.companionStaticScope, towerElementsForClass.staticScope) + // Note: scopes here are in reverse order, so type parameter scope is the most prioritized + .addNonLocalScope(typeParameterScope) } else { staticsAndCompanion } diff --git a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionDiagnostic.kt b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionDiagnostic.kt index a47ef71d2e5..f95179025af 100644 --- a/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionDiagnostic.kt +++ b/compiler/fir/semantics/src/org/jetbrains/kotlin/fir/resolve/calls/ResolutionDiagnostic.kt @@ -146,4 +146,6 @@ class AmbiguousValuesForContextReceiverParameter( object ResolutionResultOverridesOtherToPreserveCompatibility : ResolutionDiagnostic(RESOLVED) -object AdaptedCallableReferenceIsUsedWithReflection : ResolutionDiagnostic(RESOLVED_WITH_ERROR) \ No newline at end of file +object AdaptedCallableReferenceIsUsedWithReflection : ResolutionDiagnostic(RESOLVED_WITH_ERROR) + +object TypeParameterAsExpression : ResolutionDiagnostic(INAPPLICABLE) diff --git a/compiler/testData/diagnostics/tests/resolve/noCandidates/resolvedToClassifier.fir.kt b/compiler/testData/diagnostics/tests/resolve/noCandidates/resolvedToClassifier.fir.kt index adf21ddf327..5dd22044732 100644 --- a/compiler/testData/diagnostics/tests/resolve/noCandidates/resolvedToClassifier.fir.kt +++ b/compiler/testData/diagnostics/tests/resolve/noCandidates/resolvedToClassifier.fir.kt @@ -15,7 +15,7 @@ fun test() { fun bar() { val typeParameter_as_val = T - val typeParameter_as_fun = T() + val typeParameter_as_fun = T() baz(T) baz("$T") diff --git a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter.fir.txt b/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter.fir.txt index d8819f428fe..cc11852c663 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter.fir.txt +++ b/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter.fir.txt @@ -91,11 +91,11 @@ FILE: companionPropertyAndTypeParameter.kt super() } - public final val some: = R|?| + public final val some: = R|?#| public get(): public final fun f(): R|kotlin/Unit| { - lval some: = R|?| + lval some: = R|?#| } } diff --git a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.fir.kt deleted file mode 100644 index ee672a244d3..00000000000 --- a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.fir.kt +++ /dev/null @@ -1,16 +0,0 @@ -// ISSUE: KT-58028, KT-63377 -// FIR_DUMP - -class Owner { - companion object { - val test = 12 - } - - inner class I { - val some = test - - fun foo() { - val some = test - } - } -} diff --git a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.fir.txt b/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.fir.txt index 1853c5c804e..22c0a405745 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.fir.txt +++ b/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.fir.txt @@ -1,4 +1,4 @@ -FILE: companionPropertyAndTypeParameter2.fir.kt +FILE: companionPropertyAndTypeParameter2.kt public final class Owner : R|kotlin/Any| { public constructor(): R|Owner| { super() @@ -19,11 +19,11 @@ FILE: companionPropertyAndTypeParameter2.fir.kt super() } - public final val some: = R|?| - public get(): + public final val some: R|kotlin/Int| = this@R|/Owner.Companion|.R|/Owner.Companion.test| + public get(): R|kotlin/Int| public final fun foo(): R|kotlin/Unit| { - lval some: = R|?| + lval some: R|kotlin/Int| = this@R|/Owner.Companion|.R|/Owner.Companion.test| } } diff --git a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.kt b/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.kt index 7308a498dd6..c04f94375b7 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.kt +++ b/compiler/testData/diagnostics/tests/typeParameters/companionPropertyAndTypeParameter2.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // ISSUE: KT-58028, KT-63377 // FIR_DUMP diff --git a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.kt index b1c6c0e15f7..45bc26bab84 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.kt +++ b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.kt @@ -5,8 +5,8 @@ class OuterClass { class OuterParam fun foo(t: NestedParam) { - val k: OuterParam = t - val l: OuterParam = OuterParam() + val k: OuterParam = t + val l: OuterParam = OuterParam() } inner class Inner(t: NestedParam) { @@ -14,8 +14,8 @@ class OuterClass { val l: OuterParam = OuterParam() init { - val m: OuterParam = t - val n: OuterParam = OuterParam() + val m: OuterParam = t + val n: OuterParam = OuterParam() } } } diff --git a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.txt b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.txt index b574f0a515d..8580109b852 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.txt +++ b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass.fir.txt @@ -12,8 +12,8 @@ FILE: memberTypeParameterVsNestedClass.fir.kt } public final fun foo(t: R|NestedParam|): R|kotlin/Unit| { - lval k: R|OuterClass.OuterParam| = R|/t| - lval l: R|OuterClass.OuterParam| = R|/OuterClass.OuterParam.OuterParam|() + lval k: R|OuterParam| = R|/t| + lval l: R|OuterParam| = R|/OuterClass.OuterParam.OuterParam#|() } public final inner class Inner : R|kotlin/Any| { @@ -28,8 +28,8 @@ FILE: memberTypeParameterVsNestedClass.fir.kt public get(): R|OuterParam| init { - lval m: R|OuterClass.OuterParam| = R|/t| - lval n: R|OuterClass.OuterParam| = R|/OuterClass.OuterParam.OuterParam|() + lval m: R|OuterParam| = R|/t| + lval n: R|OuterParam| = R|/OuterClass.OuterParam.OuterParam#|() } } diff --git a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.kt index 2cf41379d2b..05b1bd8f107 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.kt +++ b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.kt @@ -11,7 +11,7 @@ class Outer { } fun bar() { - T::class + T::class val x: T? = null val y: T? = T() } @@ -21,8 +21,8 @@ class Owner { class T fun baz() { - T::class + T::class val x: T? = null - val y: T? = T() + val y: T? = T() } } diff --git a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.txt b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.txt index 2588ef932e3..b878b2829d7 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.txt +++ b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClass2.fir.txt @@ -12,13 +12,13 @@ FILE: memberTypeParameterVsNestedClass2.fir.kt } public final inline fun foo(): R|kotlin/Unit| { - (R|T|) + (Q|Outer.T|) lval x: R|T?| = Null(null) lval y: R|T?| = R|/Outer.T.T#|() } public final fun bar(): R|kotlin/Unit| { - (R|?|) + (Q|Outer.T|) lval x: R|T?| = Null(null) lval y: R|T?| = R|/Outer.T.T#|() } @@ -37,9 +37,9 @@ FILE: memberTypeParameterVsNestedClass2.fir.kt } public final fun baz(): R|kotlin/Unit| { - (R|?|) - lval x: R|Owner.T?| = Null(null) - lval y: R|Owner.T?| = R|/Owner.T.T|() + (Q|Owner.T|) + lval x: R|T?| = Null(null) + lval y: R|T?| = R|/Owner.T.T#|() } } diff --git a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.kt b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.kt index 04a1b76e065..96eaa00037a 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.kt +++ b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.kt @@ -31,23 +31,23 @@ class OuterClassWithClass { } val k = ::OuterParam - val l = OuterParam::foo + val l = OuterParam::foo val m = OuterParam()::foo fun foo() { val k = ::OuterParam - val l = OuterParam::foo + val l = OuterParam::foo val m = OuterParam()::foo } inner class Inner(t: NestedParam) { val k = ::OuterParam - val l = OuterParam::foo + val l = OuterParam::foo val m = OuterParam()::foo init { val k = ::OuterParam - val l = OuterParam::foo + val l = OuterParam::foo val m = OuterParam()::foo } } diff --git a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.txt b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.txt index dd1d1e42c13..654bc178ca4 100644 --- a/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.txt +++ b/compiler/testData/diagnostics/tests/typeParameters/memberTypeParameterVsNestedClassReference.fir.txt @@ -62,15 +62,15 @@ FILE: memberTypeParameterVsNestedClassReference.fir.kt public final val k: R|kotlin/reflect/KFunction0| = ::R|/OuterClassWithClass.OuterParam.OuterParam| public get(): R|kotlin/reflect/KFunction0| - public final val l: = R|?|::# - public get(): + public final val l: R|kotlin/reflect/KFunction1| = Q|OuterClassWithClass.OuterParam|::R|/OuterClassWithClass.OuterParam.foo| + public get(): R|kotlin/reflect/KFunction1| public final val m: R|kotlin/reflect/KFunction0| = R|/OuterClassWithClass.OuterParam.OuterParam|()::R|/OuterClassWithClass.OuterParam.foo| public get(): R|kotlin/reflect/KFunction0| public final fun foo(): R|kotlin/Unit| { lval k: R|kotlin/reflect/KFunction0| = ::R|/OuterClassWithClass.OuterParam.OuterParam| - lval l: = R|?|::# + lval l: R|kotlin/reflect/KFunction1| = Q|OuterClassWithClass.OuterParam|::R|/OuterClassWithClass.OuterParam.foo| lval m: R|kotlin/reflect/KFunction0| = R|/OuterClassWithClass.OuterParam.OuterParam|()::R|/OuterClassWithClass.OuterParam.foo| } @@ -82,15 +82,15 @@ FILE: memberTypeParameterVsNestedClassReference.fir.kt public final val k: R|kotlin/reflect/KFunction0| = ::R|/OuterClassWithClass.OuterParam.OuterParam| public get(): R|kotlin/reflect/KFunction0| - public final val l: = R|?|::# - public get(): + public final val l: R|kotlin/reflect/KFunction1| = Q|OuterClassWithClass.OuterParam|::R|/OuterClassWithClass.OuterParam.foo| + public get(): R|kotlin/reflect/KFunction1| public final val m: R|kotlin/reflect/KFunction0| = R|/OuterClassWithClass.OuterParam.OuterParam|()::R|/OuterClassWithClass.OuterParam.foo| public get(): R|kotlin/reflect/KFunction0| init { lval k: R|kotlin/reflect/KFunction0| = ::R|/OuterClassWithClass.OuterParam.OuterParam| - lval l: = R|?|::# + lval l: R|kotlin/reflect/KFunction1| = Q|OuterClassWithClass.OuterParam|::R|/OuterClassWithClass.OuterParam.foo| lval m: R|kotlin/reflect/KFunction0| = R|/OuterClassWithClass.OuterParam.OuterParam|()::R|/OuterClassWithClass.OuterParam.foo| }