diff --git a/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java b/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java index 0cd62bb77d2..ace1c7d6c1e 100644 --- a/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java +++ b/js/js.parser/src/com/google/gwt/dev/js/rhino/Parser.java @@ -18,7 +18,7 @@ * Copyright (C) 1997-1999 Netscape Communications Corporation. All * Rights Reserved. * - * Contributor(s): + * Contributor(s): * Mike Ang * Mike McCabe * @@ -1140,6 +1140,13 @@ public class Parser { mustMatchToken(ts, TokenStream.GWT, "msg.no.paren"); return pn; + case TokenStream.IMPORT: + // for import() and import.meta syntax + if (ts.peekToken() != TokenStream.LP && ts.peekToken() != TokenStream.DOT) { + reportError(ts, "msg.syntax"); + } + return nf.createName(TokenStream.tokenToName(TokenStream.IMPORT), position); + case TokenStream.NAME: String name = ts.getString(); return nf.createName(name, position); diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java index 497afc6b135..a1f5d382688 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/IrBoxJsTestGenerated.java @@ -2321,6 +2321,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest { KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/box/esModules/native"), Pattern.compile("^([^_](.+))\\.kt$"), null, TargetBackend.JS_IR, true); } + @Test + @TestMetadata("importFunctionSyntax.kt") + public void testImportFunctionSyntax() throws Exception { + runTest("js/js.translator/testData/box/esModules/native/importFunctionSyntax.kt"); + } + @Test @TestMetadata("inheritanceInNativeClass.kt") public void testInheritanceInNativeClass() throws Exception { diff --git a/js/js.translator/testData/box/esModules/native/importFunctionSyntax.kt b/js/js.translator/testData/box/esModules/native/importFunctionSyntax.kt new file mode 100644 index 00000000000..65dd53340d1 --- /dev/null +++ b/js/js.translator/testData/box/esModules/native/importFunctionSyntax.kt @@ -0,0 +1,10 @@ +// DONT_TARGET_EXACT_BACKEND: JS +// KJS_WITH_FULL_RUNTIME +// ES_MODULES + +fun box(): String { + if (js("import('hello')") !is kotlin.js.Promise<*>) return "fail1" + if (!js("import.meta").url) return "fail2" + + return "OK" +} \ No newline at end of file