From 2cfa3d7e0dda670e200ef00af6877409af0e820b Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 23 May 2023 13:55:18 +0200 Subject: [PATCH] K2: reproduce KT-58618 --- ...CompilerTestFE10TestdataTestGenerated.java | 6 +++++ ...sticCompilerFE10TestDataTestGenerated.java | 6 +++++ ...eeOldFrontendDiagnosticsTestGenerated.java | 6 +++++ ...siOldFrontendDiagnosticsTestGenerated.java | 6 +++++ .../noInferenceFromWrappedDelegate.fir.kt | 13 ++++++++++ .../noInferenceFromWrappedDelegate.fir.txt | 26 +++++++++++++++++++ .../noInferenceFromWrappedDelegate.kt | 14 ++++++++++ .../test/runners/DiagnosticTestGenerated.java | 6 +++++ 8 files changed, 83 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.kt create mode 100644 compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.txt create mode 100644 compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java index 55de6427eed..c502e5a50c7 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosticCompilerTestFE10TestdataTestGenerated.java @@ -8950,6 +8950,12 @@ public class DiagnosticCompilerTestFE10TestdataTestGenerated extends AbstractDia runTest("compiler/testData/diagnostics/tests/delegatedProperty/missedSetter.kt"); } + @Test + @TestMetadata("noInferenceFromWrappedDelegate.kt") + public void testNoInferenceFromWrappedDelegate() throws Exception { + runTest("compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt"); + } + @Test @TestMetadata("nonDefaultAccessors.kt") public void testNonDefaultAccessors() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java index 45e504c41f6..560ffe49c42 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated.java @@ -8950,6 +8950,12 @@ public class LLFirPreresolvedReversedDiagnosticCompilerFE10TestDataTestGenerated runTest("compiler/testData/diagnostics/tests/delegatedProperty/missedSetter.kt"); } + @Test + @TestMetadata("noInferenceFromWrappedDelegate.kt") + public void testNoInferenceFromWrappedDelegate() throws Exception { + runTest("compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt"); + } + @Test @TestMetadata("nonDefaultAccessors.kt") public void testNonDefaultAccessors() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java index e7f7243add7..e832103060e 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirLightTreeOldFrontendDiagnosticsTestGenerated.java @@ -8950,6 +8950,12 @@ public class FirLightTreeOldFrontendDiagnosticsTestGenerated extends AbstractFir runTest("compiler/testData/diagnostics/tests/delegatedProperty/missedSetter.kt"); } + @Test + @TestMetadata("noInferenceFromWrappedDelegate.kt") + public void testNoInferenceFromWrappedDelegate() throws Exception { + runTest("compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt"); + } + @Test @TestMetadata("nonDefaultAccessors.kt") public void testNonDefaultAccessors() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java index c69b2f97bc8..4f548c70992 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirPsiOldFrontendDiagnosticsTestGenerated.java @@ -8956,6 +8956,12 @@ public class FirPsiOldFrontendDiagnosticsTestGenerated extends AbstractFirPsiDia runTest("compiler/testData/diagnostics/tests/delegatedProperty/missedSetter.kt"); } + @Test + @TestMetadata("noInferenceFromWrappedDelegate.kt") + public void testNoInferenceFromWrappedDelegate() throws Exception { + runTest("compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt"); + } + @Test @TestMetadata("nonDefaultAccessors.kt") public void testNonDefaultAccessors() throws Exception { diff --git a/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.kt b/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.kt new file mode 100644 index 00000000000..35a2d6023ca --- /dev/null +++ b/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.kt @@ -0,0 +1,13 @@ +// FIR_DUMP +// WITH_REFLECT + +import kotlin.reflect.KProperty + +// Definitions +class State(var value: T) +inline operator fun State.getValue(thisRef: Any?, property: KProperty<*>): T = value +inline fun remember(block: () -> T): T = block() + +// list should have a type of List, not Any? +val list by remember { State(listOf(0)) } +val first = list.first() diff --git a/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.txt b/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.txt new file mode 100644 index 00000000000..03acd3eae75 --- /dev/null +++ b/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.fir.txt @@ -0,0 +1,26 @@ +FILE: noInferenceFromWrappedDelegate.fir.kt + public final class State : R|kotlin/Any| { + public constructor(value: R|T|): R|State| { + super() + } + + public final var value: R|T| = R|/value| + public get(): R|T| + public set(value: R|T|): R|kotlin/Unit| + + } + public final inline operator fun R|State|.getValue(thisRef: R|kotlin/Any?|, property: R|kotlin/reflect/KProperty<*>|): R|T| { + ^getValue this@R|/getValue|.R|SubstitutionOverride| + } + public final inline fun remember(block: R|() -> T|): R|T| { + ^remember R|/block|.R|SubstitutionOverride|() + } + public final val list: R|kotlin/Any?|by R|/remember|>|>( = remember@fun (): R|State>| { + ^ R|/State.State||>(R|kotlin/collections/listOf|(Int(0))) + } + ) + public get(): R|kotlin/Any?| { + ^ D|/list|.R|/getValue||>(Null(null), ::R|/list|) + } + public final val first: = R|/list|.#() + public get(): diff --git a/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt b/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt new file mode 100644 index 00000000000..c5bedb45330 --- /dev/null +++ b/compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt @@ -0,0 +1,14 @@ +// FIR_DUMP +// WITH_REFLECT + +import kotlin.reflect.KProperty + +// Definitions +class State(var value: T) +inline operator fun State.getValue(thisRef: Any?, property: KProperty<*>): T = value +inline fun remember(block: () -> T): T = block() + +// list should have a type of List, not Any? +val list by remember { State(listOf(0)) } +val first = list.first() + diff --git a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java index 6d4b129cb7d..fcee0cf4729 100644 --- a/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java +++ b/compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java @@ -8956,6 +8956,12 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { runTest("compiler/testData/diagnostics/tests/delegatedProperty/missedSetter.kt"); } + @Test + @TestMetadata("noInferenceFromWrappedDelegate.kt") + public void testNoInferenceFromWrappedDelegate() throws Exception { + runTest("compiler/testData/diagnostics/tests/delegatedProperty/noInferenceFromWrappedDelegate.kt"); + } + @Test @TestMetadata("nonDefaultAccessors.kt") public void testNonDefaultAccessors() throws Exception {