From 83cd7cf516337a62f5826c4b7637a0bb0dca85aa Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 29 Oct 2019 17:36:39 +0300 Subject: [PATCH] FIR: add new problematic tests --- .../diagnostics/j+k/FieldAndGetter.kt | 15 +++++++++++ .../diagnostics/j+k/FieldAndGetter.txt | 4 +++ .../diagnostics/j+k/FieldSubstitution.kt | 13 ++++++++++ .../diagnostics/j+k/FieldSubstitution.txt | 11 ++++++++ .../diagnostics/j+k/LoggerInstance.kt | 26 +++++++++++++++++++ .../diagnostics/j+k/LoggerInstance.txt | 16 ++++++++++++ .../testData/diagnostics/j+k/RawType.kt | 13 ++++++++++ .../testData/diagnostics/j+k/RawType.txt | 10 +++++++ .../fir/FirDiagnosticsTestGenerated.java | 20 ++++++++++++++ 9 files changed, 128 insertions(+) create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.kt create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.txt create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.kt create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.txt create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.kt create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.txt create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/RawType.kt create mode 100644 compiler/fir/resolve/testData/diagnostics/j+k/RawType.txt diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.kt b/compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.kt new file mode 100644 index 00000000000..8120914c4cf --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.kt @@ -0,0 +1,15 @@ +// FILE: JavaClass.java + +public class JavaClass { + protected String field; + + public String getField() { + return field; + } +} + +// FILE: test.kt + +fun test(jc: JavaClass) { + jc.field +} \ No newline at end of file diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.txt b/compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.txt new file mode 100644 index 00000000000..711f4dbfe3d --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.txt @@ -0,0 +1,4 @@ +FILE: test.kt + public final fun test(jc: R|JavaClass|): R|kotlin/Unit| { + R|/jc|.# + } diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.kt b/compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.kt new file mode 100644 index 00000000000..31da934f468 --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.kt @@ -0,0 +1,13 @@ +// FILE: JavaClass.java + +public class JavaClass { + protected final T myHost; +} + +// FILE: Derived.kt + +public class Derived : JavaClass() { + fun test() { + myHost.length + } +} \ No newline at end of file diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.txt b/compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.txt new file mode 100644 index 00000000000..852203eaf5d --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.txt @@ -0,0 +1,11 @@ +FILE: Derived.kt + public final class Derived : R|JavaClass| { + public constructor(): R|Derived| { + super|>() + } + + public final fun test(): R|kotlin/Unit| { + this@R|/JavaClass|.R|/JavaClass.myHost|.# + } + + } diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.kt b/compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.kt new file mode 100644 index 00000000000..445be80bd00 --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.kt @@ -0,0 +1,26 @@ +// FULL_JDK +// FILE: Logger.java + +public class Logger { + private static Logger me = new Logger(); + + public static Logger getInstance(String s) { + return me; + } + + public static Logger getInstance(Class c) { + return me; + } +} + +// FILE: test.kt + +fun test() { + val logger = Logger.getInstance("test") +} + +class MyTest { + private val klass = this::class.java + + private val logger = Logger.getInstance(klass) +} \ No newline at end of file diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.txt b/compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.txt new file mode 100644 index 00000000000..14200ece240 --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.txt @@ -0,0 +1,16 @@ +FILE: test.kt + public final fun test(): R|kotlin/Unit| { + lval logger: R|ft!| = Q|Logger|.R|/Logger.getInstance|(String(test)) + } + public final class MyTest : R|kotlin/Any| { + public constructor(): R|MyTest| { + super() + } + + private final val klass: R|java/lang/Class| = (this@R|/MyTest|).R|kotlin/jvm/java| + private get(): R|java/lang/Class| + + private final val logger: = Q|Logger|.#(this@R|/MyTest|.R|/MyTest.klass|) + private get(): + + } diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/RawType.kt b/compiler/fir/resolve/testData/diagnostics/j+k/RawType.kt new file mode 100644 index 00000000000..a686df1df2c --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/RawType.kt @@ -0,0 +1,13 @@ +// FILE: JavaClass.java + +public class JavaClass { + public static void foo(ArrayList list) {} +} + +// FILE: test.kt + +class Some + +fun test(list: ArrayList) { + JavaClass.foo(list) +} \ No newline at end of file diff --git a/compiler/fir/resolve/testData/diagnostics/j+k/RawType.txt b/compiler/fir/resolve/testData/diagnostics/j+k/RawType.txt new file mode 100644 index 00000000000..0ba10bd5245 --- /dev/null +++ b/compiler/fir/resolve/testData/diagnostics/j+k/RawType.txt @@ -0,0 +1,10 @@ +FILE: test.kt + public final class Some : R|kotlin/Any| { + public constructor(): R|Some| { + super() + } + + } + public final fun test(list: R|kotlin/collections/ArrayList|): R|kotlin/Unit| { + Q|JavaClass|.R|/JavaClass.foo|(R|/list|) + } 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 566e10fe55a..e83cb22b2ac 100644 --- a/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java +++ b/compiler/fir/resolve/tests/org/jetbrains/kotlin/fir/FirDiagnosticsTestGenerated.java @@ -236,6 +236,16 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest { runTest("compiler/fir/resolve/testData/diagnostics/j+k/complexFlexibleInference.kt"); } + @TestMetadata("FieldAndGetter.kt") + public void testFieldAndGetter() throws Exception { + runTest("compiler/fir/resolve/testData/diagnostics/j+k/FieldAndGetter.kt"); + } + + @TestMetadata("FieldSubstitution.kt") + public void testFieldSubstitution() throws Exception { + runTest("compiler/fir/resolve/testData/diagnostics/j+k/FieldSubstitution.kt"); + } + @TestMetadata("FunctionTypeInJava.kt") public void testFunctionTypeInJava() throws Exception { runTest("compiler/fir/resolve/testData/diagnostics/j+k/FunctionTypeInJava.kt"); @@ -276,6 +286,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest { runTest("compiler/fir/resolve/testData/diagnostics/j+k/KotlinClassParameterGeneric.kt"); } + @TestMetadata("LoggerInstance.kt") + public void testLoggerInstance() throws Exception { + runTest("compiler/fir/resolve/testData/diagnostics/j+k/LoggerInstance.kt"); + } + @TestMetadata("MyException.kt") public void testMyException() throws Exception { runTest("compiler/fir/resolve/testData/diagnostics/j+k/MyException.kt"); @@ -295,6 +310,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest { public void testOuterInnerClasses() throws Exception { runTest("compiler/fir/resolve/testData/diagnostics/j+k/outerInnerClasses.kt"); } + + @TestMetadata("RawType.kt") + public void testRawType() throws Exception { + runTest("compiler/fir/resolve/testData/diagnostics/j+k/RawType.kt"); + } } @TestMetadata("compiler/fir/resolve/testData/diagnostics/samConstructors")