Another variant of import added - import * from "x.js"

This commit is contained in:
Ondřej Španěl 2017-03-30 15:42:09 +02:00
parent 5dea52266b
commit c5bf0f0075
3 changed files with 36 additions and 36 deletions

View File

@ -1233,8 +1233,11 @@ function OutputStream(options) {
output.space();
}
if (self.imported_names) {
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) {
self.imported_names.forEach(function (name_import, i) {
output.space();
name_import.print(output);
if (i < self.imported_names.length - 1) {
@ -1245,6 +1248,7 @@ function OutputStream(options) {
output.space();
output.print("}");
}
}
if (self.imported_name || self.imported_names) {
output.space();
output.print("from")

View File

@ -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");

View File

@ -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: {