From 7599ff0ef10135d8b16f89d9a49cabdef2f80cde Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Tue, 30 Jan 2024 10:40:57 +0100 Subject: [PATCH] K2: add a reproducer for getOrDefault false negative in metadata compilation This case is similar to KT-57268 in early JDKs --- compiler/testData/cli/metadata/getOrDefault.args | 3 +++ compiler/testData/cli/metadata/getOrDefault.kt | 2 ++ compiler/testData/cli/metadata/getOrDefault.out | 1 + .../tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java | 5 +++++ 4 files changed, 11 insertions(+) create mode 100644 compiler/testData/cli/metadata/getOrDefault.args create mode 100644 compiler/testData/cli/metadata/getOrDefault.kt create mode 100644 compiler/testData/cli/metadata/getOrDefault.out diff --git a/compiler/testData/cli/metadata/getOrDefault.args b/compiler/testData/cli/metadata/getOrDefault.args new file mode 100644 index 00000000000..718248034cc --- /dev/null +++ b/compiler/testData/cli/metadata/getOrDefault.args @@ -0,0 +1,3 @@ +$TESTDATA_DIR$/getOrDefault.kt +-d +$TEMP_DIR$ diff --git a/compiler/testData/cli/metadata/getOrDefault.kt b/compiler/testData/cli/metadata/getOrDefault.kt new file mode 100644 index 00000000000..2e51a286d64 --- /dev/null +++ b/compiler/testData/cli/metadata/getOrDefault.kt @@ -0,0 +1,2 @@ +// This should not compile: only JVM 1.8+ contains getOrDefault +fun foo(map: Map) = map.getOrDefault("", 0) diff --git a/compiler/testData/cli/metadata/getOrDefault.out b/compiler/testData/cli/metadata/getOrDefault.out new file mode 100644 index 00000000000..d86bac9de59 --- /dev/null +++ b/compiler/testData/cli/metadata/getOrDefault.out @@ -0,0 +1 @@ +OK diff --git a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java index e8a336173f4..dcc10685e58 100644 --- a/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests-gen/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -1549,6 +1549,11 @@ public class CliTestGenerated extends AbstractCliTest { runTest("compiler/testData/cli/metadata/anonymousObjectType.args"); } + @TestMetadata("getOrDefault.args") + public void testGetOrDefault() throws Exception { + runTest("compiler/testData/cli/metadata/getOrDefault.args"); + } + @TestMetadata("hmppModules.args") public void testHmppModules() throws Exception { runTest("compiler/testData/cli/metadata/hmppModules.args");