From a37e3def142c32380eee422e6a37442c5634f33c Mon Sep 17 00:00:00 2001 From: "Denis.Zharkov" Date: Fri, 13 Jan 2023 16:34:20 +0100 Subject: [PATCH] Add test for KT-55931 --- ...CompilerTestFE10TestdataTestGenerated.java | 16 +++++++++++++ ...irOldFrontendDiagnosticsTestGenerated.java | 16 +++++++++++++ ...DiagnosticsWithLightTreeTestGenerated.java | 16 +++++++++++++ .../callableReferences/kt55931.fir.kt | 23 +++++++++++++++++++ .../inference/callableReferences/kt55931.kt | 23 +++++++++++++++++++ .../test/runners/DiagnosticTestGenerated.java | 16 +++++++++++++ 6 files changed, 110 insertions(+) create mode 100644 compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.fir.kt create mode 100644 compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java index 7eefcfa99a3..ca21fbb26a8 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java @@ -14904,6 +14904,22 @@ public class DiagnosisCompilerTestFE10TestdataTestGenerated extends AbstractDiag } } + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/inference/callableReferences") + @TestDataPath("$PROJECT_ROOT") + public class CallableReferences { + @Test + public void testAllFilesPresentInCallableReferences() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/inference/callableReferences"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("kt55931.kt") + public void testKt55931() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt"); + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/inference/capturedTypes") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java index e90f86e5820..720cf8eb44f 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java @@ -14910,6 +14910,22 @@ public class FirOldFrontendDiagnosticsTestGenerated extends AbstractFirDiagnosti } } + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/inference/callableReferences") + @TestDataPath("$PROJECT_ROOT") + public class CallableReferences { + @Test + public void testAllFilesPresentInCallableReferences() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/inference/callableReferences"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("kt55931.kt") + public void testKt55931() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt"); + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/inference/capturedTypes") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java index ef88d2e3e61..d8bebebcbb3 100644 --- a/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java +++ b/compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java @@ -14904,6 +14904,22 @@ public class FirOldFrontendDiagnosticsWithLightTreeTestGenerated extends Abstrac } } + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/inference/callableReferences") + @TestDataPath("$PROJECT_ROOT") + public class CallableReferences { + @Test + public void testAllFilesPresentInCallableReferences() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/inference/callableReferences"), Pattern.compile("^(.+)\\.kt$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("kt55931.kt") + public void testKt55931() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt"); + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/inference/capturedTypes") @TestDataPath("$PROJECT_ROOT") diff --git a/compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.fir.kt b/compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.fir.kt new file mode 100644 index 00000000000..9f025365e92 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.fir.kt @@ -0,0 +1,23 @@ +// ISSUE: KT-55931 +// SKIP_TXT + +fun fun1() {} +fun fun2() {} + +fun takeLambda(lambda: () -> Unit) = lambda() + +fun foo(b: Boolean) { + val x1 = if (b) { ::fun1 } else { ::fun2 } // OK + takeLambda { + val x2 = if (b) ::fun1 else ::fun2 // OK + // NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER and DEBUG_UNRESOLVED on both callable references + // Since 1.4.0 (NI) + val x3 = if (b) { ::fun1 } else { ::fun2 } + } + + val w: () -> Unit = { + val x4 = if (b) ::fun1 else ::fun2 // OK + // OK, too + val x5 = if (b) { ::fun1 } else { ::fun2 } + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt b/compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt new file mode 100644 index 00000000000..58bd2b4139a --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt @@ -0,0 +1,23 @@ +// ISSUE: KT-55931 +// SKIP_TXT + +fun fun1() {} +fun fun2() {} + +fun takeLambda(lambda: () -> Unit) = lambda() + +fun foo(b: Boolean) { + val x1 = if (b) { ::fun1 } else { ::fun2 } // OK + takeLambda { + val x2 = if (b) ::fun1 else ::fun2 // OK + // NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER and DEBUG_UNRESOLVED on both callable references + // Since 1.4.0 (NI) + val x3 = if (b) { ::fun1 } else { ::fun2 } + } + + val w: () -> Unit = { + val x4 = if (b) ::fun1 else ::fun2 // OK + // OK, too + val x5 = if (b) { ::fun1 } else { ::fun2 } + } +} 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 d05a466970b..60f56ea4b59 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 @@ -14910,6 +14910,22 @@ public class DiagnosticTestGenerated extends AbstractDiagnosticTest { } } + @Nested + @TestMetadata("compiler/testData/diagnostics/tests/inference/callableReferences") + @TestDataPath("$PROJECT_ROOT") + public class CallableReferences { + @Test + public void testAllFilesPresentInCallableReferences() throws Exception { + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/diagnostics/tests/inference/callableReferences"), Pattern.compile("^(.*)\\.kts?$"), Pattern.compile("^(.+)\\.(fir|ll)\\.kts?$"), true); + } + + @Test + @TestMetadata("kt55931.kt") + public void testKt55931() throws Exception { + runTest("compiler/testData/diagnostics/tests/inference/callableReferences/kt55931.kt"); + } + } + @Nested @TestMetadata("compiler/testData/diagnostics/tests/inference/capturedTypes") @TestDataPath("$PROJECT_ROOT")