From ae774a0ab9bc6e066a04788eb57c577e30236c08 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 14 Jan 2020 17:25:30 +0300 Subject: [PATCH] [FIR] Add test for qualified access to base class member case --- .../resolve/expresssions/baseQualifier.kt | 25 +++++++++++++ .../resolve/expresssions/baseQualifier.txt | 35 +++++++++++++++++++ .../fir/FirDiagnosticsTestGenerated.java | 5 +++ ...DiagnosticsWithLightTreeTestGenerated.java | 5 +++ 4 files changed, 70 insertions(+) create mode 100644 compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.kt create mode 100644 compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.txt diff --git a/compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.kt b/compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.kt new file mode 100644 index 00000000000..ad33b4c91cc --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.kt @@ -0,0 +1,25 @@ +// FILE: JavaClass.java + +public class JavaClass { + public static void bar() {} +} + +// FILE: Test.kt + +open class AA : JavaClass() { + object C +} + +class BB : AA() { + object D +} + +fun test() { + val bbd = BB.D + val aac = AA.C + JavaClass.bar() + + val errC = BB.C + val errBarViaBB = BB.bar() + val errBarViaAA = AA.bar() +} \ No newline at end of file diff --git a/compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.txt b/compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.txt new file mode 100644 index 00000000000..75f47c79d29 --- /dev/null +++ b/compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.txt @@ -0,0 +1,35 @@ +FILE: Test.kt + public open class AA : R|JavaClass| { + public constructor(): R|AA| { + super() + } + + public final object C : R|kotlin/Any| { + private constructor(): R|AA.C| { + super() + } + + } + + } + public final class BB : R|AA| { + public constructor(): R|BB| { + super() + } + + public final object D : R|kotlin/Any| { + private constructor(): R|BB.D| { + super() + } + + } + + } + public final fun test(): R|kotlin/Unit| { + lval bbd: R|BB.D| = Q|BB.D| + lval aac: R|AA.C| = Q|AA.C| + Q|JavaClass|.R|/JavaClass.bar|() + lval errC: = Q|BB|.# + lval errBarViaBB: R|kotlin/Unit| = Q|BB|.R|/JavaClass.bar|() + lval errBarViaAA: R|kotlin/Unit| = Q|AA|.R|/JavaClass.bar|() + } diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java index b3de589cce9..d7f723806fe 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java @@ -419,6 +419,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest { runTest("compiler/fir/resolve/testData/resolve/expresssions/annotations.kt"); } + @TestMetadata("baseQualifier.kt") + public void testBaseQualifier() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.kt"); + } + @TestMetadata("checkArguments.kt") public void testCheckArguments() throws Exception { runTest("compiler/fir/resolve/testData/resolve/expresssions/checkArguments.kt"); diff --git a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java index 45cd74db105..00ea9639253 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsWithLightTreeTestGenerated.java @@ -419,6 +419,11 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos runTest("compiler/fir/resolve/testData/resolve/expresssions/annotations.kt"); } + @TestMetadata("baseQualifier.kt") + public void testBaseQualifier() throws Exception { + runTest("compiler/fir/resolve/testData/resolve/expresssions/baseQualifier.kt"); + } + @TestMetadata("checkArguments.kt") public void testCheckArguments() throws Exception { runTest("compiler/fir/resolve/testData/resolve/expresssions/checkArguments.kt");