From 47687006002709642a305991b8970e47ed69519c Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 19 Mar 2021 09:06:47 +0300 Subject: [PATCH] FIR error repro: property type mismatch in override from light classes --- .../problems/lightMember.fir.txt | 27 +++++++++++++++++++ .../resolveWithStdlib/problems/lightMember.kt | 12 +++++++++ .../runners/FirDiagnosticTestGenerated.java | 6 +++++ ...DiagnosticsWithLightTreeTestGenerated.java | 6 +++++ 4 files changed, 51 insertions(+) create mode 100644 compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.fir.txt create mode 100644 compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.kt diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.fir.txt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.fir.txt new file mode 100644 index 00000000000..6ec0840b8aa --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.fir.txt @@ -0,0 +1,27 @@ +FILE: lightMember.kt + public abstract interface PsiMember : R|kotlin/Any| { + } + public abstract interface PsiField : R|PsiMember| { + } + public abstract class LightMemberImpl : R|kotlin/Any| { + public constructor(computeRealDelegate: R|() -> D|): R|LightMemberImpl| { + super() + } + + public open val delegate: R|D|by R|kotlin/lazy|(R|/computeRealDelegate|) + public get(): R|D| { + ^ this@R|/LightMemberImpl|.D|/LightMemberImpl.delegate|.R|kotlin/getValue|(this@R|/LightMemberImpl|, ::R|/LightMemberImpl.delegate|) + } + + } + public abstract class LightFieldImpl : R|LightMemberImpl| { + public constructor(computeRealDelegate: R|() -> D|): R|LightFieldImpl| { + super|>(R|/computeRealDelegate|) + } + + public open override val delegate: R|D| + public get(): R|D| { + ^ this@R|/LightFieldImpl|.super|>.R|SubstitutionOverride| + } + + } diff --git a/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.kt b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.kt new file mode 100644 index 00000000000..e177ee7aa10 --- /dev/null +++ b/compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.kt @@ -0,0 +1,12 @@ +interface PsiMember + +interface PsiField : PsiMember + +abstract class LightMemberImpl(computeRealDelegate: () -> D) { + open val delegate by lazy(computeRealDelegate) +} + +abstract class LightFieldImpl(computeRealDelegate: () -> D) : LightMemberImpl(computeRealDelegate) { + override val delegate: D + get() = super.delegate +} \ No newline at end of file diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java index f49b6317d0f..e0d99f58352 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticTestGenerated.java @@ -5151,6 +5151,12 @@ public class FirDiagnosticTestGenerated extends AbstractFirDiagnosticTest { runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/KJKComplexHierarchyNestedLoop.kt"); } + @Test + @TestMetadata("lightMember.kt") + public void testLightMember() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.kt"); + } + @Test @TestMetadata("qualifierPriority.kt") public void testQualifierPriority() throws Exception { diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java index 7695c53beca..3dded846424 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirDiagnosticsWithLightTreeTestGenerated.java @@ -5225,6 +5225,12 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/KJKComplexHierarchyNestedLoop.kt"); } + @Test + @TestMetadata("lightMember.kt") + public void testLightMember() throws Exception { + runTest("compiler/fir/analysis-tests/testData/resolveWithStdlib/problems/lightMember.kt"); + } + @Test @TestMetadata("qualifierPriority.kt") public void testQualifierPriority() throws Exception {