From c5bf0f007557975f87187dc45f0707be6666377d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20=C5=A0pan=C4=9Bl?= Date: Thu, 30 Mar 2017 15:42:09 +0200 Subject: [PATCH] Another variant of import added - import * from "x.js" --- lib/output.js | 24 ++++++++++++--------- lib/parse.js | 45 ++++++++++++++++++---------------------- test/compress/harmony.js | 3 ++- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/lib/output.js b/lib/output.js index 01fbdd13..c51fb7dc 100644 --- a/lib/output.js +++ b/lib/output.js @@ -1233,17 +1233,21 @@ function OutputStream(options) { output.space(); } if (self.imported_names) { - output.print("{"); - self.imported_names.forEach(function(name_import, i) { - output.space(); - name_import.print(output); - if (i < self.imported_names.length - 1) { - output.print(","); + if (self.imported_names.length === 1 && self.imported_names[0].name.name === "*") { + self.imported_names[0].print(output); + } else { + output.print("{"); + self.imported_names.forEach(function (name_import, i) { output.space(); - } - }); - output.space(); - output.print("}"); + name_import.print(output); + if (i < self.imported_names.length - 1) { + output.print(","); + output.space(); + } + }); + output.space(); + output.print("}"); + } } if (self.imported_name || self.imported_names) { output.space(); diff --git a/lib/parse.js b/lib/parse.js index c2a07b84..eced9ff2 100644 --- a/lib/parse.js +++ b/lib/parse.js @@ -2176,17 +2176,7 @@ function parse($TEXT, options) { next(); } - if (is("punc", "{")) { - next(); - imported_names = []; - while (!is("punc", "}")) { - imported_names.push(import_name()); - if (is("punc", ",")) { - next(); - } - } - next(); - } + imported_names = import_names(); if (imported_names || imported_name) { expect_token("name", "from"); @@ -2266,6 +2256,24 @@ function parse($TEXT, options) { }) } + function import_names() { + var names; + if (is("punc", "{")) { + next(); + names = []; + while (!is("punc", "}")) { + names.push(import_name()); + if (is("punc", ",")) { + next(); + } + } + next(); + } else if (is("operator", "*")) { + var st = prev(); + names = [import_nameAsterisk()]; + } + return names; + } function export_() { var start = S.token; var is_default; @@ -2278,20 +2286,7 @@ function parse($TEXT, options) { next(); } - if (is("punc", "{")) { - next(); - exported_names = []; - while (!is("punc", "}")) { - exported_names.push(import_name()); - if (is("punc", ",")) { - next(); - } - } - next(); - } else if (is("operator", "*")) { - var st = prev(); - exported_names = [import_nameAsterisk()]; - } + exported_names = import_names(); if (exported_names) { expect_token("name", "from"); diff --git a/test/compress/harmony.js b/test/compress/harmony.js index bd84221b..592aeb24 100644 --- a/test/compress/harmony.js +++ b/test/compress/harmony.js @@ -183,8 +183,9 @@ import_statement: { import { Bar, Baz } from 'lel'; import Bar, { Foo } from 'lel'; import { Bar as kex, Baz as food } from 'lel'; + import * from 'lel'; } - expect_exact: "import\"mod-name\";import Foo from\"bar\";import{Bar,Baz}from\"lel\";import Bar,{Foo}from\"lel\";import{Bar as kex,Baz as food}from\"lel\";" + expect_exact: "import\"mod-name\";import Foo from\"bar\";import{Bar,Baz}from\"lel\";import Bar,{Foo}from\"lel\";import{Bar as kex,Baz as food}from\"lel\";import*from\"lel\";" } export_statement: {