From 4cdd121c2162363f98a15eccaf4a916365255b41 Mon Sep 17 00:00:00 2001 From: Roman Artemev Date: Fri, 6 Apr 2018 15:41:43 +0300 Subject: [PATCH] Add test for issue KT-23582 --- .../testData/cli/js/modulesWithSameNames.args | 10 ++++++++++ .../testData/cli/js/modulesWithSameNames.out | 2 ++ .../testData/cli/js/modulesWithSameNames.test | 1 + .../cli/js/modulesWithSameNamesAndFunc.args | 10 ++++++++++ .../cli/js/modulesWithSameNamesAndFunc.out | 2 ++ .../cli/js/modulesWithSameNamesAndFunc.test | 1 + .../cli/js/separateModules/sepModule1.kt | 6 ++++++ .../cli/js/separateModules/sepModule2.kt | 13 ++++++++++++ .../cli/js/separateModules/sepModule3.kt | 10 ++++++++++ .../cli/js/separateModules/sepModule4.kt | 17 ++++++++++++++++ .../jetbrains/kotlin/cli/AbstractCliTest.java | 20 +++++++++++++++++++ .../kotlin/cli/CliTestGenerated.java | 12 +++++++++++ 12 files changed, 104 insertions(+) create mode 100644 compiler/testData/cli/js/modulesWithSameNames.args create mode 100644 compiler/testData/cli/js/modulesWithSameNames.out create mode 100644 compiler/testData/cli/js/modulesWithSameNames.test create mode 100644 compiler/testData/cli/js/modulesWithSameNamesAndFunc.args create mode 100644 compiler/testData/cli/js/modulesWithSameNamesAndFunc.out create mode 100644 compiler/testData/cli/js/modulesWithSameNamesAndFunc.test create mode 100644 compiler/testData/cli/js/separateModules/sepModule1.kt create mode 100644 compiler/testData/cli/js/separateModules/sepModule2.kt create mode 100644 compiler/testData/cli/js/separateModules/sepModule3.kt create mode 100644 compiler/testData/cli/js/separateModules/sepModule4.kt diff --git a/compiler/testData/cli/js/modulesWithSameNames.args b/compiler/testData/cli/js/modulesWithSameNames.args new file mode 100644 index 00000000000..9ca58c2d53a --- /dev/null +++ b/compiler/testData/cli/js/modulesWithSameNames.args @@ -0,0 +1,10 @@ +$TESTDATA_DIR$/separateModules/sepModule1.kt +-meta-info +-output +$TEMP_DIR$/m1/m.js +--- +$TESTDATA_DIR$/separateModules/sepModule2.kt +-libraries +$TEMP_DIR$/m1 +-output +$TEMP_DIR$/m2/m.js \ No newline at end of file diff --git a/compiler/testData/cli/js/modulesWithSameNames.out b/compiler/testData/cli/js/modulesWithSameNames.out new file mode 100644 index 00000000000..8494effcce5 --- /dev/null +++ b/compiler/testData/cli/js/modulesWithSameNames.out @@ -0,0 +1,2 @@ +warning: module "m" depends from module with the same name +OK \ No newline at end of file diff --git a/compiler/testData/cli/js/modulesWithSameNames.test b/compiler/testData/cli/js/modulesWithSameNames.test new file mode 100644 index 00000000000..2f49dae589c --- /dev/null +++ b/compiler/testData/cli/js/modulesWithSameNames.test @@ -0,0 +1 @@ +// NOT_CONTAINS: m2/m.js, foo(bar$lambda); \ No newline at end of file diff --git a/compiler/testData/cli/js/modulesWithSameNamesAndFunc.args b/compiler/testData/cli/js/modulesWithSameNamesAndFunc.args new file mode 100644 index 00000000000..1c23fea3fb7 --- /dev/null +++ b/compiler/testData/cli/js/modulesWithSameNamesAndFunc.args @@ -0,0 +1,10 @@ +$TESTDATA_DIR$/separateModules/sepModule3.kt +-meta-info +-output +$TEMP_DIR$/m3/m.js +--- +$TESTDATA_DIR$/separateModules/sepModule4.kt +-libraries +$TEMP_DIR$/m3 +-output +$TEMP_DIR$/m4/m.js \ No newline at end of file diff --git a/compiler/testData/cli/js/modulesWithSameNamesAndFunc.out b/compiler/testData/cli/js/modulesWithSameNamesAndFunc.out new file mode 100644 index 00000000000..8494effcce5 --- /dev/null +++ b/compiler/testData/cli/js/modulesWithSameNamesAndFunc.out @@ -0,0 +1,2 @@ +warning: module "m" depends from module with the same name +OK \ No newline at end of file diff --git a/compiler/testData/cli/js/modulesWithSameNamesAndFunc.test b/compiler/testData/cli/js/modulesWithSameNamesAndFunc.test new file mode 100644 index 00000000000..04e189486b6 --- /dev/null +++ b/compiler/testData/cli/js/modulesWithSameNamesAndFunc.test @@ -0,0 +1 @@ +// NOT_CONTAINS: m4/m.js, foofaa(); \ No newline at end of file diff --git a/compiler/testData/cli/js/separateModules/sepModule1.kt b/compiler/testData/cli/js/separateModules/sepModule1.kt new file mode 100644 index 00000000000..886c695c407 --- /dev/null +++ b/compiler/testData/cli/js/separateModules/sepModule1.kt @@ -0,0 +1,6 @@ +package m1 + +inline fun foo(action: () -> Int): Int { + return action() +} + diff --git a/compiler/testData/cli/js/separateModules/sepModule2.kt b/compiler/testData/cli/js/separateModules/sepModule2.kt new file mode 100644 index 00000000000..d1e0d9f9c42 --- /dev/null +++ b/compiler/testData/cli/js/separateModules/sepModule2.kt @@ -0,0 +1,13 @@ +package m2 + +import m1.* + +fun bar(): Int { + foo { return 100 } + return -99 +} + +fun box(): String { + if (bar() == 100) return "OK" + return "fail" +} \ No newline at end of file diff --git a/compiler/testData/cli/js/separateModules/sepModule3.kt b/compiler/testData/cli/js/separateModules/sepModule3.kt new file mode 100644 index 00000000000..f4f303a5ebb --- /dev/null +++ b/compiler/testData/cli/js/separateModules/sepModule3.kt @@ -0,0 +1,10 @@ +package m3 + + +fun foofaa(): Unit { } + +inline fun foo(action: () -> Int): Int { + foofaa() + return action() +} + diff --git a/compiler/testData/cli/js/separateModules/sepModule4.kt b/compiler/testData/cli/js/separateModules/sepModule4.kt new file mode 100644 index 00000000000..5781d2cfeb0 --- /dev/null +++ b/compiler/testData/cli/js/separateModules/sepModule4.kt @@ -0,0 +1,17 @@ +package m4 + +import m3.* + +inline fun foo(action: () -> Int): Int { + return action() +} + +fun bar(): Int { + foo { return 100 } + return -99 +} + +fun box(): String { + if (bar() == 100) return "OK" + return "fail" +} \ No newline at end of file diff --git a/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java b/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java index db44fd9e360..cdd89d877a9 100644 --- a/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java +++ b/compiler/tests-common/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java @@ -143,6 +143,26 @@ public abstract class AbstractCliTest extends TestCaseWithTmpdir { } } + List notContainsTextList = InTextDirectivesUtils.findLinesWithPrefixesRemoved(content, "// NOT_CONTAINS: "); + for (String notContainsSpec : notContainsTextList) { + String[] parts = notContainsSpec.split(",", 2); + String fileName = parts[0].trim(); + String contentToSearch = parts[1].trim(); + File file = checkedPathToFile(fileName, argsFilePath); + if (!file.exists()) { + diagnostics.add("File does not exist: " + fileName); + } + else if (file.isDirectory()) { + diagnostics.add("File is a directory: " + fileName); + } + else { + String text = FilesKt.readText(file, Charsets.UTF_8); + if (text.contains(contentToSearch)) { + diagnostics.add("File " + fileName + " contains string: " + contentToSearch); + } + } + } + if (!diagnostics.isEmpty()) { diagnostics.add(0, diagnostics.size() + " problem(s) found:"); Assert.fail(StringsKt.join(diagnostics, "\n")); diff --git a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java index 50b2d17827d..a1f15b843c0 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/cli/CliTestGenerated.java @@ -684,6 +684,18 @@ public class CliTestGenerated extends AbstractCliTest { doJsTest(fileName); } + @TestMetadata("modulesWithSameNames.args") + public void testModulesWithSameNames() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/modulesWithSameNames.args"); + doJsTest(fileName); + } + + @TestMetadata("modulesWithSameNamesAndFunc.args") + public void testModulesWithSameNamesAndFunc() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/modulesWithSameNamesAndFunc.args"); + doJsTest(fileName); + } + @TestMetadata("nonExistingKotlinHome.args") public void testNonExistingKotlinHome() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/nonExistingKotlinHome.args");