diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.txt b/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.txt index b889e181488..2a0f409a8c0 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/lazyProperty.txt @@ -311,7 +311,7 @@ FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt } ) public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } @@ -346,7 +346,7 @@ FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt } ) public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } @@ -381,7 +381,7 @@ FILE: [ResolvedTo(IMPORTS)] lazyProperty.kt } ) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } @@ -420,7 +420,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] lazyProperty.kt } ) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } diff --git a/analysis/low-level-api-fir/testdata/lazyResolve/lazyPropertyScript.txt b/analysis/low-level-api-fir/testdata/lazyResolve/lazyPropertyScript.txt index 9c0882e260a..5f0a8fae9e9 100644 --- a/analysis/low-level-api-fir/testdata/lazyResolve/lazyPropertyScript.txt +++ b/analysis/low-level-api-fir/testdata/lazyResolve/lazyPropertyScript.txt @@ -409,7 +409,7 @@ FILE: [ResolvedTo(IMPORTS)] lazyPropertyScript.kts } ) public [ResolvedTo(IMPLICIT_TYPES_BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } @@ -453,7 +453,7 @@ FILE: [ResolvedTo(IMPORTS)] lazyPropertyScript.kts } ) public [ResolvedTo(ANNOTATIONS_ARGUMENTS_MAPPING)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } @@ -497,7 +497,7 @@ FILE: [ResolvedTo(IMPORTS)] lazyPropertyScript.kts } ) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } @@ -545,7 +545,7 @@ FILE: [ResolvedTo(BODY_RESOLVE)] lazyPropertyScript.kts } ) public [ResolvedTo(BODY_RESOLVE)] [ContainingClassKey=Test] get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) + ^ this@R|/Test|.D|/Test.resolveMe|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.resolveMe|) } } diff --git a/compiler/fir/analysis-tests/testData/resolve/delegates/delegateInference.fir.txt b/compiler/fir/analysis-tests/testData/resolve/delegates/delegateInference.fir.txt index 0e1971f4e89..fd9025982c7 100644 --- a/compiler/fir/analysis-tests/testData/resolve/delegates/delegateInference.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/delegates/delegateInference.fir.txt @@ -42,7 +42,7 @@ FILE: delegateInference.kt public final var x: R|kotlin/Boolean|by R|/FreezableVar.FreezableVar|(Boolean(true)) public get(): R|kotlin/Boolean| { - ^ this@R|/Test|.D|/Test.x|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.x|) + ^ this@R|/Test|.D|/Test.x|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.x|) } public set(: R|kotlin/Boolean|): R|kotlin/Unit| { ^ this@R|/Test|.D|/Test.x|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.x|, R|/x|) @@ -50,7 +50,7 @@ FILE: delegateInference.kt public final var y: R|kotlin/String|by R|/FreezableVar.FreezableVar|(String()) public get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.y|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.y|) + ^ this@R|/Test|.D|/Test.y|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.y|) } public set(: R|kotlin/String|): R|kotlin/Unit| { ^ this@R|/Test|.D|/Test.y|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.y|, R|/y|) diff --git a/compiler/fir/analysis-tests/testData/resolve/delegates/delegateWithLambda.fir.txt b/compiler/fir/analysis-tests/testData/resolve/delegates/delegateWithLambda.fir.txt index dd2ce2b97aa..7c1efc63dae 100644 --- a/compiler/fir/analysis-tests/testData/resolve/delegates/delegateWithLambda.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/delegates/delegateWithLambda.fir.txt @@ -31,7 +31,7 @@ FILE: delegateWithLambda.kt } ) public get(): R|kotlin/String| { - ^ this@R|/Test|.D|/Test.x|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.x|) + ^ this@R|/Test|.D|/Test.x|.R|SubstitutionOverride|(this@R|/Test|, ::R|/Test.x|) } } diff --git a/compiler/fir/analysis-tests/testData/resolve/delegates/provideDelegate.fir.txt b/compiler/fir/analysis-tests/testData/resolve/delegates/provideDelegate.fir.txt index 366318bff69..a1eda8acb41 100644 --- a/compiler/fir/analysis-tests/testData/resolve/delegates/provideDelegate.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/delegates/provideDelegate.fir.txt @@ -38,9 +38,9 @@ FILE: provideDelegate.kt super() } - public final val x: R|kotlin/Int|by R|/delegate|(Int(1)).R|SubstitutionOverride|>|(this@R|/A|, ::R|/A.x|) + public final val x: R|kotlin/Int|by R|/delegate|(Int(1)).R|SubstitutionOverride|>|(this@R|/A|, ::R|/A.x|) public get(): R|kotlin/Int| { - ^ this@R|/A|.D|/A.x|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.x|) + ^ this@R|/A|.D|/A.x|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.x|) } } diff --git a/compiler/fir/analysis-tests/testData/resolve/delegates/receiverInference.fir.txt b/compiler/fir/analysis-tests/testData/resolve/delegates/receiverInference.fir.txt index 0cbd29b9f79..713c7e6a4ce 100644 --- a/compiler/fir/analysis-tests/testData/resolve/delegates/receiverInference.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolve/delegates/receiverInference.fir.txt @@ -29,9 +29,9 @@ FILE: receiverInference.kt super() } - public final val d: R|kotlin/String|by R|/mkProp|().R|SubstitutionOverride|>|(this@R|/MyEnt|, ::R|/MyEnt.d|) + public final val d: R|kotlin/String|by R|/mkProp|().R|SubstitutionOverride|>|(this@R|/MyEnt|, ::R|/MyEnt.d|) public get(): R|kotlin/String| { - ^ this@R|/MyEnt|.D|/MyEnt.d|.R|SubstitutionOverride|(this@R|/MyEnt|, ::R|/MyEnt.d|) + ^ this@R|/MyEnt|.D|/MyEnt.d|.R|SubstitutionOverride|(this@R|/MyEnt|, ::R|/MyEnt.d|) } } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateTypeMismatch.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateTypeMismatch.fir.txt index 1d9faccd665..4f1cc3eed9f 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateTypeMismatch.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateTypeMismatch.fir.txt @@ -35,7 +35,7 @@ FILE: delegateTypeMismatch.kt public final var classifierNamePolicy: R|ClassifierNamePolicy|by this@R|/A|.R|/A.property|(Q|ClassifierNamePolicy.SOURCE_CODE_QUALIFIED|) public get(): R|ClassifierNamePolicy| { - ^ this@R|/A|.D|/A.classifierNamePolicy|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.classifierNamePolicy|) + ^ this@R|/A|.D|/A.classifierNamePolicy|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.classifierNamePolicy|) } public set(: R|ClassifierNamePolicy|): R|kotlin/Unit| { ^ this@R|/A|.D|/A.classifierNamePolicy|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.classifierNamePolicy|, R|/classifierNamePolicy|) diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.dot b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.dot index 5ccaab568c0..f1f7f2262ec 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.dot +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.dot @@ -212,8 +212,8 @@ digraph delegateWithAnonymousObject_kt { color=blue 65 [label="Enter block"]; 66 [label="Access variable D|/IssuesListUserProfile.issueListView|"]; - 67 [label="Function call: this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|SubstitutionOverride|(...)" style="filled" fillcolor=yellow]; - 68 [label="Jump: ^ this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|SubstitutionOverride|(this@R|/IssuesListUserProfile|, ::R|/IssuesListUserProfile.issueListView|)"]; + 67 [label="Function call: this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|SubstitutionOverride|(...)" style="filled" fillcolor=yellow]; + 68 [label="Jump: ^ this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|SubstitutionOverride|(this@R|/IssuesListUserProfile|, ::R|/IssuesListUserProfile.issueListView|)"]; 69 [label="Stub" style="filled" fillcolor=gray]; 70 [label="Exit block" style="filled" fillcolor=gray]; } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.fir.txt index 4c4284ad189..42caf3dcf0d 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/delegateWithAnonymousObject.fir.txt @@ -41,7 +41,7 @@ FILE: delegateWithAnonymousObject.kt } ) public get(): R|IssueListView| { - ^ this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|SubstitutionOverride|(this@R|/IssuesListUserProfile|, ::R|/IssuesListUserProfile.issueListView|) + ^ this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|SubstitutionOverride|(this@R|/IssuesListUserProfile|, ::R|/IssuesListUserProfile.issueListView|) } public set(: R|IssueListView|): R|kotlin/Unit| { ^ this@R|/IssuesListUserProfile|.D|/IssuesListUserProfile.issueListView|.R|SubstitutionOverride|(this@R|/IssuesListUserProfile|, ::R|/IssuesListUserProfile.issueListView|, R|/issueListView|) diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/kt41917.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/kt41917.fir.txt index 6f62f64f9e4..5ec004ee783 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/kt41917.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/kt41917.fir.txt @@ -25,12 +25,12 @@ FILE: kt41917.kt public final val implicit: R|kotlin/String|by R|/DummyDelegate.DummyDelegate|(String(hello)) public get(): R|kotlin/String| { - ^ this@R|/A|.D|/A.implicit|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.implicit|) + ^ this@R|/A|.D|/A.implicit|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.implicit|) } public final val explicit: R|kotlin/String|by R|/DummyDelegate.DummyDelegate|(String(hello)) public get(): R|kotlin/String| { - ^ this@R|/A|.D|/A.explicit|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.explicit|) + ^ this@R|/A|.D|/A.explicit|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.explicit|) } } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/nullableTypeDelegate.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/nullableTypeDelegate.fir.txt index 1426ca2921e..84d7ea93248 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/nullableTypeDelegate.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/nullableTypeDelegate.fir.txt @@ -19,7 +19,7 @@ FILE: nullableTypeDelegate.kt public final var other: R|MyClassSome?|by this@R|/MyClassSome|.R|/directed|((Q|MyClassSome|).R|kotlin/jvm/java|) public get(): R|MyClassSome?| { - ^ this@R|/MyClassSome|.D|/MyClassSome.other|.R|SubstitutionOverride|(this@R|/MyClassSome|, ::R|/MyClassSome.other|) + ^ this@R|/MyClassSome|.D|/MyClassSome.other|.R|SubstitutionOverride|(this@R|/MyClassSome|, ::R|/MyClassSome.other|) } public set(: R|MyClassSome?|): R|kotlin/Unit| { ^ this@R|/MyClassSome|.D|/MyClassSome.other|.R|SubstitutionOverride|(this@R|/MyClassSome|, ::R|/MyClassSome.other|, R|/other|) diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/propertyWithFunctionalType.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/propertyWithFunctionalType.fir.txt index 5984fafbc39..c8e687ff0cc 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/propertyWithFunctionalType.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/delegates/propertyWithFunctionalType.fir.txt @@ -26,7 +26,7 @@ FILE: propertyWithFunctionalType.kt } ) public get(): R|(B) -> B| { - ^ this@R|/A|.D|/A.conventerWithExpectedType|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.conventerWithExpectedType|) + ^ this@R|/A|.D|/A.conventerWithExpectedType|.R|SubstitutionOverride B|>|(this@R|/A|, ::R|/A.conventerWithExpectedType|) } public set(: R|(B) -> B|): R|kotlin/Unit| { ^ this@R|/A|.D|/A.conventerWithExpectedType|.R|SubstitutionOverride|(this@R|/A|, ::R|/A.conventerWithExpectedType|, R|/conventerWithExpectedType|) diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/hideBySeverity.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/hideBySeverity.fir.txt index ea90fd5e36f..604cf0dfc7f 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/hideBySeverity.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/intellij/hideBySeverity.fir.txt @@ -30,14 +30,14 @@ FILE: hideBySeverity.kt super() } - public final val hideBySeverityDerived: R|kotlin/collections/MutableSet|by this@R|/Some|.R|/BaseState.propertyDerived||>(R|kotlin/collections/mutableSetOf|()).R|SubstitutionOverride|>|(this@R|/Some|, ::R|/Some.hideBySeverityDerived|) + public final val hideBySeverityDerived: R|kotlin/collections/MutableSet|by this@R|/Some|.R|/BaseState.propertyDerived||>(R|kotlin/collections/mutableSetOf|()).R|SubstitutionOverride>|>|(this@R|/Some|, ::R|/Some.hideBySeverityDerived|) public get(): R|kotlin/collections/MutableSet| { - ^ this@R|/Some|.D|/Some.hideBySeverityDerived|.R|SubstitutionOverride|(this@R|/Some|, ::R|/Some.hideBySeverityDerived|) + ^ this@R|/Some|.D|/Some.hideBySeverityDerived|.R|SubstitutionOverride|>|(this@R|/Some|, ::R|/Some.hideBySeverityDerived|) } public final val hideBySeverityBase: R|kotlin/collections/MutableSet|by this@R|/Some|.R|/BaseState.propertyBase||>(R|kotlin/collections/mutableSetOf|()) public get(): R|kotlin/collections/MutableSet| { - ^ this@R|/Some|.D|/Some.hideBySeverityBase|.R|SubstitutionOverride|(this@R|/Some|, ::R|/Some.hideBySeverityBase|) + ^ this@R|/Some|.D|/Some.hideBySeverityBase|.R|SubstitutionOverride|>|(this@R|/Some|, ::R|/Some.hideBySeverityBase|) } } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/WithValidityAssertion.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/WithValidityAssertion.fir.txt index 9e70aebe8eb..86191a0097a 100644 --- a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/WithValidityAssertion.fir.txt +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/WithValidityAssertion.fir.txt @@ -61,7 +61,7 @@ FILE: WithValidityAssertion.kt } ) private get(): R|kotlin/collections/List| { - ^ this@R|/KtFirNonStarImportingScope|.D|/KtFirNonStarImportingScope.imports|.R|SubstitutionOverride|(this@R|/KtFirNonStarImportingScope|, ::R|/KtFirNonStarImportingScope.imports|) + ^ this@R|/KtFirNonStarImportingScope|.D|/KtFirNonStarImportingScope.imports|.R|SubstitutionOverride|>|(this@R|/KtFirNonStarImportingScope|, ::R|/KtFirNonStarImportingScope.imports|) } public final fun getCallableSymbols(nameFilter: R|KtScopeNameFilter|): R|kotlin/sequences/Sequence| { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java index 043a257b35d..0860901f18a 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirLightTreeBlackBoxCodegenTestGenerated.java @@ -15405,6 +15405,12 @@ public class FirLightTreeBlackBoxCodegenTestGenerated extends AbstractFirLightTr runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateInSubClass.kt") public void testPrivateInSubClass() throws Exception { diff --git a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java index c81cca3b6c1..6fca82c1316 100644 --- a/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java +++ b/compiler/fir/fir2ir/tests-gen/org/jetbrains/kotlin/test/runners/codegen/FirPsiBlackBoxCodegenTestGenerated.java @@ -15405,6 +15405,12 @@ public class FirPsiBlackBoxCodegenTestGenerated extends AbstractFirPsiBlackBoxCo runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateInSubClass.kt") public void testPrivateInSubClass() throws Exception { diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Candidate.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Candidate.kt index 96008604668..b39be1fa2ff 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Candidate.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/calls/Candidate.kt @@ -30,7 +30,7 @@ import org.jetbrains.kotlin.resolve.calls.tower.isSuccess import org.jetbrains.kotlin.util.CodeFragmentAdjustment class Candidate( - override val symbol: FirBasedSymbol<*>, + symbol: FirBasedSymbol<*>, // Here we may have an ExpressionReceiverValue // - in case a use-site receiver is explicit // - in some cases with static entities, no matter is a use-site receiver explicit or not @@ -49,6 +49,23 @@ class Candidate( val isFromOriginalTypeInPresenceOfSmartCast: Boolean = false, ) : AbstractCandidate() { + override var symbol: FirBasedSymbol<*> = symbol + private set + + + /** + * Please avoid updating symbol in the candidate whenever it's possible. + * The only case when currently it seems to be unavoidable is at + * [org.jetbrains.kotlin.fir.resolve.transformers.FirCallCompletionResultsWriterTransformer.refineSubstitutedMemberIfReceiverContainsTypeVariable] + */ + @RequiresOptIn + annotation class UpdatingSymbol + + @UpdatingSymbol + fun updateSymbol(symbol: FirBasedSymbol<*>) { + this.symbol = symbol + } + private var systemInitialized: Boolean = false val system: NewConstraintSystemImpl by lazy(LazyThreadSafetyMode.NONE) { val system = constraintSystemFactory.createConstraintSystem() diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt index e8a3b6172f7..3b18153cec7 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/inference/FirCallCompleter.kt @@ -105,7 +105,7 @@ class FirCallCompleter( .buildAbstractResultingSubstitutor(session.typeContext) as ConeSubstitutor val completedCall = call.transformSingle( FirCallCompletionResultsWriterTransformer( - session, finalSubstitutor, + session, components.scopeSession, finalSubstitutor, components.returnTypeCalculator, session.typeApproximator, components.dataFlowAnalyzer, @@ -222,7 +222,7 @@ class FirCallCompleter( mode: FirCallCompletionResultsWriterTransformer.Mode = FirCallCompletionResultsWriterTransformer.Mode.Normal ): FirCallCompletionResultsWriterTransformer { return FirCallCompletionResultsWriterTransformer( - session, substitutor, components.returnTypeCalculator, + session, components.scopeSession, substitutor, components.returnTypeCalculator, session.typeApproximator, components.dataFlowAnalyzer, components.integerLiteralAndOperatorApproximationTransformer, diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt index bfb326fdad2..1e2c30d76ef 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/FirCallCompletionResultsWriterTransformer.kt @@ -18,21 +18,22 @@ import org.jetbrains.kotlin.fir.references.builder.buildResolvedCallableReferenc import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference import org.jetbrains.kotlin.fir.resolve.* import org.jetbrains.kotlin.fir.resolve.calls.Candidate -import org.jetbrains.kotlin.fir.resolve.calls.ResolutionResultOverridesOtherToPreserveCompatibility import org.jetbrains.kotlin.fir.resolve.calls.FirErrorReferenceWithCandidate import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate +import org.jetbrains.kotlin.fir.resolve.calls.ResolutionResultOverridesOtherToPreserveCompatibility import org.jetbrains.kotlin.fir.resolve.dfa.FirDataFlowAnalyzer import org.jetbrains.kotlin.fir.resolve.diagnostics.* import org.jetbrains.kotlin.fir.resolve.inference.ResolvedLambdaAtom import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor +import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.* +import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator import org.jetbrains.kotlin.fir.scopes.impl.ConvertibleIntegerOperators.binaryOperatorsWithSignedArgument +import org.jetbrains.kotlin.fir.scopes.impl.FirClassSubstitutionScope import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperator import org.jetbrains.kotlin.fir.scopes.impl.isWrappedIntegerOperatorForUnsignedType import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol -import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol +import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef import org.jetbrains.kotlin.fir.types.builder.buildStarProjection @@ -52,6 +53,7 @@ import kotlin.collections.component2 class FirCallCompletionResultsWriterTransformer( override val session: FirSession, + private val scopeSession: ScopeSession, private val finalSubstitutor: ConeSubstitutor, private val typeCalculator: ReturnTypeCalculator, private val typeApproximator: ConeTypeApproximator, @@ -95,6 +97,8 @@ class FirCallCompletionResultsWriterTransformer( ): T { val subCandidate = calleeReference.candidate + subCandidate.updateSubstitutedMemberIfReceiverContainsTypeVariable() + val declaration = subCandidate.symbol.fir val typeArguments = computeTypeArguments(qualifiedAccessExpression, subCandidate) val type = if (declaration is FirCallableDeclaration) { @@ -159,6 +163,99 @@ class FirCallCompletionResultsWriterTransformer( return qualifiedAccessExpression } + /** + * Currently, it's only necessary for delegate inference, e.g. when the delegate expression returns some generic type + * with non-fixed yet type variables and inside its member scope we find the `getValue` function that might still contain + * the type variables, too and they even might be used to adding some constraints for them. + * + * After the completion ends and all the variables are fixed, this member candidate still contains them, so what this function does + * is replace the candidate from Delegate scope to the same candidate from Delegate. + * + * The fun fact is that it wasn't necessary before Delegate Inference refactoring because there were stub types left and FIR2IR + * handled them properly as equal-to-anything unlike the type variable types. + * + * See codegen/box/delegatedProperty/noTypeVariablesLeft.kt + * + * That all looks a bit ugly, but there are not many options. + * In an ideal world, we wouldn't have substitution overrides in FIR, but instead used a pair original symbol and substitution + * everywhere, but we're not there yet. + * + * TODO: In future, it would be nice to get rid of it and there's actually a way to do it – not using substitution overrides (see KT-61618) + */ + private fun Candidate.updateSubstitutedMemberIfReceiverContainsTypeVariable() { + val updatedSymbol = symbol.updateSubstitutedMemberIfReceiverContainsTypeVariable() ?: return + val oldSymbol = symbol + + @OptIn(Candidate.UpdatingSymbol::class) + updateSymbol(updatedSymbol) + + check(updatedSymbol is FirCallableSymbol<*>) + + substitutor = substitutorByMap( + updatedSymbol.typeParameterSymbols.zip(freshVariables).associate { (typeParameter, typeVariable) -> + typeParameter to typeVariable.defaultType + }, + session, + ) + + if (updatedSymbol !is FirFunctionSymbol) return + require(oldSymbol is FirFunctionSymbol) + + val oldArgumentMapping = argumentMapping ?: return + val oldValueParametersToNewMap = oldSymbol.valueParameterSymbols.zip(updatedSymbol.valueParameterSymbols).toMap() + + argumentMapping = oldArgumentMapping.mapValuesTo(linkedMapOf()) { + oldValueParametersToNewMap[it.value.symbol]!!.fir + } + } + + private fun FirBasedSymbol<*>.updateSubstitutedMemberIfReceiverContainsTypeVariable(): FirBasedSymbol<*>? { + // TODO: Add assertion that this function returns not-null only for BI and delegation inference + if (mode != Mode.DelegatedPropertyCompletion) return null + + val fir = fir + if (fir !is FirCallableDeclaration) return null + + val dispatchReceiverType = fir.dispatchReceiverType ?: return null + val updatedDispatchReceiverType = finalSubstitutor.substituteOrNull(dispatchReceiverType) ?: return null + + val scope = + updatedDispatchReceiverType.scope( + session, + scopeSession, + FakeOverrideTypeCalculator.DoNothing, + FirResolvePhase.STATUS + ) as? FirClassSubstitutionScope ?: return null + + val original = fir.originalForSubstitutionOverride ?: return null + return findSingleSubstitutedSymbolWithOriginal(original.symbol) { processor -> + when (original) { + is FirSimpleFunction -> scope.processFunctionsByName(original.name, processor) + is FirProperty -> scope.processFunctionsByName(original.name, processor) + is FirConstructor -> scope.processDeclaredConstructors(processor) + else -> error("Unexpected declaration kind ${original.render()}") + } + } + } + + private fun findSingleSubstitutedSymbolWithOriginal( + original: FirBasedSymbol<*>, + processCallables: ((FirCallableSymbol<*>) -> Unit) -> Unit, + ): FirBasedSymbol<*> { + var result: FirBasedSymbol<*>? = null + + processCallables { symbol -> + if (symbol.originalForSubstitutionOverride == original) { + check(result == null) { + "Expected single, but ${result!!.fir.render()} and ${symbol.fir.render()} found" + } + result = symbol + } + } + + return result ?: error("No symbol found for ${original.fir.render()}") + } + override fun transformQualifiedAccessExpression( qualifiedAccessExpression: FirQualifiedAccessExpression, data: ExpectedArgumentType?, diff --git a/compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt b/compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt new file mode 100644 index 00000000000..51a67933c90 --- /dev/null +++ b/compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt @@ -0,0 +1,18 @@ +import kotlin.reflect.KProperty + +var foo: (() -> String)? by property(null) + +private fun property(initialValue: T): RwProperty = RwProperty(initialValue) + +class RwProperty(var v: V) { + operator fun getValue(thisRef: Any?, property: KProperty<*>): V = v + + operator fun setValue(thisRef: Any?, property: KProperty<*>, value: V) { + this.v = value + } +} + +fun box(): String { + foo = { "OK" } + return foo!!.invoke() +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.fir.txt b/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.fir.txt index 5401745ac20..0c43ed18384 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.fir.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.fir.txt @@ -6,7 +6,7 @@ FILE: kt50994.fir.kt public final var processor: R|ProcessorWithChildren?|by this@R|/ProcessorWithParent|.R|/parent|(Q|ProcessorWithChildren|::R|/ProcessorWithChildren.processors|) public get(): R|ProcessorWithChildren?| { - ^ this@R|/ProcessorWithParent|.D|/ProcessorWithParent.processor|.R|SubstitutionOverride|(this@R|/ProcessorWithParent|, ::R|/ProcessorWithParent.processor|) + ^ this@R|/ProcessorWithParent|.D|/ProcessorWithParent.processor|.R|SubstitutionOverride|(this@R|/ProcessorWithParent|, ::R|/ProcessorWithParent.processor|) } public set(: R|ProcessorWithChildren?|): R|kotlin/Unit| { ^ this@R|/ProcessorWithParent|.D|/ProcessorWithParent.processor|.R|SubstitutionOverride|(this@R|/ProcessorWithParent|, ::R|/ProcessorWithParent.processor|, R|/processor|) @@ -18,11 +18,11 @@ FILE: kt50994.fir.kt super() } - public final var processors: R|kotlin/collections/MutableCollection|by this@R|/ProcessorWithChildren|.R|/children#|<, >((Q|ProcessorWithParent|).R|kotlin/jvm/java|, Q|ProcessorWithParent|::#) - public get(): R|kotlin/collections/MutableCollection| { - ^ this@R|/ProcessorWithChildren|.D|/ProcessorWithChildren.processors|.R|SubstitutionOverride|>|(this@R|/ProcessorWithChildren|, ::R|/ProcessorWithChildren.processors|) + public final var processors: R|kotlin/collections/MutableCollection|by this@R|/ProcessorWithChildren|.R|/children#|((Q|ProcessorWithParent|).R|kotlin/jvm/java|, Q|ProcessorWithParent|::#) + public get(): R|kotlin/collections/MutableCollection| { + ^ this@R|/ProcessorWithChildren|.D|/ProcessorWithChildren.processors|.R|SubstitutionOverride|>|(this@R|/ProcessorWithChildren|, ::R|/ProcessorWithChildren.processors|) } - public set(: R|kotlin/collections/MutableCollection|): R|kotlin/Unit| { + public set(: R|kotlin/collections/MutableCollection|): R|kotlin/Unit| { ^ this@R|/ProcessorWithChildren|.D|/ProcessorWithChildren.processors|.R|SubstitutionOverride|(this@R|/ProcessorWithChildren|, ::R|/ProcessorWithChildren.processors|, R|/processors|) } @@ -48,7 +48,7 @@ FILE: kt50994.fir.kt public final var processors: R|kotlin/collections/MutableCollection|by this@R|/Processor2WithChildren|.R|/children|((Q|Processor2WithParent|).R|kotlin/jvm/java|, Q|Processor2WithParent|::R|/Processor2WithParent.processor|) public get(): R|kotlin/collections/MutableCollection| { - ^ this@R|/Processor2WithChildren|.D|/Processor2WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor2WithChildren|, ::R|/Processor2WithChildren.processors|) + ^ this@R|/Processor2WithChildren|.D|/Processor2WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor2WithChildren|, ::R|/Processor2WithChildren.processors|) } public set(: R|kotlin/collections/MutableCollection|): R|kotlin/Unit| { ^ this@R|/Processor2WithChildren|.D|/Processor2WithChildren.processors|.R|SubstitutionOverride|(this@R|/Processor2WithChildren|, ::R|/Processor2WithChildren.processors|, R|/processors|) @@ -76,7 +76,7 @@ FILE: kt50994.fir.kt public final var processors: R|kotlin/collections/MutableCollection|by this@R|/Processor3WithChildren|.R|/children|((Q|Processor3WithParent|).R|kotlin/jvm/java|, Q|Processor3WithParent|::R|/Processor3WithParent.processor|) public get(): R|kotlin/collections/MutableCollection| { - ^ this@R|/Processor3WithChildren|.D|/Processor3WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor3WithChildren|, ::R|/Processor3WithChildren.processors|) + ^ this@R|/Processor3WithChildren|.D|/Processor3WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor3WithChildren|, ::R|/Processor3WithChildren.processors|) } public set(: R|kotlin/collections/MutableCollection|): R|kotlin/Unit| { ^ this@R|/Processor3WithChildren|.D|/Processor3WithChildren.processors|.R|SubstitutionOverride|(this@R|/Processor3WithChildren|, ::R|/Processor3WithChildren.processors|, R|/processors|) diff --git a/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.reversed.fir.txt b/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.reversed.fir.txt index 344db56b48a..2470fb579ec 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.reversed.fir.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/inference/delegates/kt50994.reversed.fir.txt @@ -6,7 +6,7 @@ FILE: kt50994.reversed.kt public final var processor: R|ProcessorWithChildren?|by this@R|/ProcessorWithParent|.R|/parent|(Q|ProcessorWithChildren|::R|/ProcessorWithChildren.processors|) public get(): R|ProcessorWithChildren?| { - ^ this@R|/ProcessorWithParent|.D|/ProcessorWithParent.processor|.R|SubstitutionOverride|(this@R|/ProcessorWithParent|, ::R|/ProcessorWithParent.processor|) + ^ this@R|/ProcessorWithParent|.D|/ProcessorWithParent.processor|.R|SubstitutionOverride|(this@R|/ProcessorWithParent|, ::R|/ProcessorWithParent.processor|) } public set(: R|ProcessorWithChildren?|): R|kotlin/Unit| { ^ this@R|/ProcessorWithParent|.D|/ProcessorWithParent.processor|.R|SubstitutionOverride|(this@R|/ProcessorWithParent|, ::R|/ProcessorWithParent.processor|, R|/processor|) @@ -20,7 +20,7 @@ FILE: kt50994.reversed.kt public final var processors: R|kotlin/collections/MutableCollection|by this@R|/ProcessorWithChildren|.R|/children|((Q|ProcessorWithParent|).R|kotlin/jvm/java|, Q|ProcessorWithParent|::R|/ProcessorWithParent.processor|) public get(): R|kotlin/collections/MutableCollection| { - ^ this@R|/ProcessorWithChildren|.D|/ProcessorWithChildren.processors|.R|SubstitutionOverride|>|(this@R|/ProcessorWithChildren|, ::R|/ProcessorWithChildren.processors|) + ^ this@R|/ProcessorWithChildren|.D|/ProcessorWithChildren.processors|.R|SubstitutionOverride|>|(this@R|/ProcessorWithChildren|, ::R|/ProcessorWithChildren.processors|) } public set(: R|kotlin/collections/MutableCollection|): R|kotlin/Unit| { ^ this@R|/ProcessorWithChildren|.D|/ProcessorWithChildren.processors|.R|SubstitutionOverride|(this@R|/ProcessorWithChildren|, ::R|/ProcessorWithChildren.processors|, R|/processors|) @@ -48,7 +48,7 @@ FILE: kt50994.reversed.kt public final var processors: R|kotlin/collections/MutableCollection|by this@R|/Processor2WithChildren|.R|/children|((Q|Processor2WithParent|).R|kotlin/jvm/java|, Q|Processor2WithParent|::R|/Processor2WithParent.processor|) public get(): R|kotlin/collections/MutableCollection| { - ^ this@R|/Processor2WithChildren|.D|/Processor2WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor2WithChildren|, ::R|/Processor2WithChildren.processors|) + ^ this@R|/Processor2WithChildren|.D|/Processor2WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor2WithChildren|, ::R|/Processor2WithChildren.processors|) } public set(: R|kotlin/collections/MutableCollection|): R|kotlin/Unit| { ^ this@R|/Processor2WithChildren|.D|/Processor2WithChildren.processors|.R|SubstitutionOverride|(this@R|/Processor2WithChildren|, ::R|/Processor2WithChildren.processors|, R|/processors|) @@ -76,7 +76,7 @@ FILE: kt50994.reversed.kt public final var processors: R|kotlin/collections/MutableCollection|by this@R|/Processor3WithChildren|.R|/children|((Q|Processor3WithParent|).R|kotlin/jvm/java|, Q|Processor3WithParent|::R|/Processor3WithParent.processor|) public get(): R|kotlin/collections/MutableCollection| { - ^ this@R|/Processor3WithChildren|.D|/Processor3WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor3WithChildren|, ::R|/Processor3WithChildren.processors|) + ^ this@R|/Processor3WithChildren|.D|/Processor3WithChildren.processors|.R|SubstitutionOverride|>|(this@R|/Processor3WithChildren|, ::R|/Processor3WithChildren.processors|) } public set(: R|kotlin/collections/MutableCollection|): R|kotlin/Unit| { ^ this@R|/Processor3WithChildren|.D|/Processor3WithChildren.processors|.R|SubstitutionOverride|(this@R|/Processor3WithChildren|, ::R|/Processor3WithChildren.processors|, R|/processors|) diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java index 38820a56029..ac779c1a535 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/BlackBoxCodegenTestGenerated.java @@ -15045,6 +15045,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateInSubClass.kt") public void testPrivateInSubClass() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java index 7a633a947cd..13a3ad59e71 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenTestGenerated.java @@ -15405,6 +15405,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateInSubClass.kt") public void testPrivateInSubClass() throws Exception { diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java index 4a10ae8128c..02065bfdfc7 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/codegen/IrBlackBoxCodegenWithIrInlinerTestGenerated.java @@ -15405,6 +15405,12 @@ public class IrBlackBoxCodegenWithIrInlinerTestGenerated extends AbstractIrBlack runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateInSubClass.kt") public void testPrivateInSubClass() throws Exception { diff --git a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index e12751ff9ed..bb2588511bf 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -12643,6 +12643,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @TestMetadata("privateInSubClass.kt") public void testPrivateInSubClass() throws Exception { runTest("compiler/testData/codegen/box/delegatedProperty/privateInSubClass.kt"); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java index 7d3b7851359..1e7d0a64ce4 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsCodegenBoxTestGenerated.java @@ -11517,6 +11517,12 @@ public class FirJsCodegenBoxTestGenerated extends AbstractFirJsCodegenBoxTest { runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java index 53cb1f458b2..9392b765562 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/fir/FirJsES6CodegenBoxTestGenerated.java @@ -11517,6 +11517,12 @@ public class FirJsES6CodegenBoxTestGenerated extends AbstractFirJsES6CodegenBoxT runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java index 04a42e2e9a6..be7846383c1 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsCodegenBoxTestGenerated.java @@ -11517,6 +11517,12 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest { runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java index 744ae66e5df..6038ebe663d 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrJsES6CodegenBoxTestGenerated.java @@ -11517,6 +11517,12 @@ public class IrJsES6CodegenBoxTestGenerated extends AbstractIrJsES6CodegenBoxTes runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java index 3aecad84210..27a1afceb6a 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestGenerated.java @@ -12536,6 +12536,12 @@ public class FirNativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTe runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java index 442be8281c2..8312a432242 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/FirNativeCodegenBoxTestNoPLGenerated.java @@ -12826,6 +12826,12 @@ public class FirNativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenB runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java index 82bbe0199a3..f3945e96be2 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestGenerated.java @@ -12392,6 +12392,12 @@ public class NativeCodegenBoxTestGenerated extends AbstractNativeCodegenBoxTest runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java index ff97f7c4766..3ffb308bde2 100644 --- a/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java +++ b/native/native.tests/tests-gen/org/jetbrains/kotlin/konan/blackboxtest/NativeCodegenBoxTestNoPLGenerated.java @@ -12537,6 +12537,12 @@ public class NativeCodegenBoxTestNoPLGenerated extends AbstractNativeCodegenBoxT runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java index 10027c1076f..dbb1bcfcd60 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/FirWasmCodegenBoxTestGenerated.java @@ -11493,6 +11493,12 @@ public class FirWasmCodegenBoxTestGenerated extends AbstractFirWasmCodegenBoxTes runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception { diff --git a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java index 52e6532acd6..7cefa33e7f6 100644 --- a/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java +++ b/wasm/wasm.tests/tests-gen/org/jetbrains/kotlin/wasm/test/K1WasmCodegenBoxTestGenerated.java @@ -11493,6 +11493,12 @@ public class K1WasmCodegenBoxTestGenerated extends AbstractK1WasmCodegenBoxTest runTest("compiler/testData/codegen/box/delegatedProperty/kt9712.kt"); } + @Test + @TestMetadata("noTypeVariablesLeft.kt") + public void testNoTypeVariablesLeft() throws Exception { + runTest("compiler/testData/codegen/box/delegatedProperty/noTypeVariablesLeft.kt"); + } + @Test @TestMetadata("privateVar.kt") public void testPrivateVar() throws Exception {