Skip to content

Commit c46f464

Browse files
committedMar 1, 2021
[[FEAT]] Add support for "export * as ns from"
1 parent a9bdc93 commit c46f464

File tree

4 files changed

+40
-11
lines changed

4 files changed

+40
-11
lines changed
 

‎src/jshint.js

+11
Original file line numberDiff line numberDiff line change
@@ -5631,7 +5631,18 @@ var JSHINT = (function() {
56315631

56325632
if (state.tokens.next.value === "*") {
56335633
// ExportDeclaration :: export * FromClause
5634+
// ExportDeclaration :: export * as IdentifierName FromClause
56345635
advance("*");
5636+
5637+
if (state.tokens.next.value === "as") {
5638+
if (!state.inES11()) {
5639+
warning("W119", state.tokens.curr, "export * as ns from", "11");
5640+
}
5641+
advance("as");
5642+
identifier(context, true);
5643+
state.funct["(scope)"].setExported(null, state.tokens.curr);
5644+
}
5645+
56355646
advance("from");
56365647
advance("(string)");
56375648
return this;

‎src/options.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -1051,7 +1051,8 @@ exports.val = {
10511051
* - `10` - To enable language features introduced by [ECMAScript
10521052
* 10](https://www.ecma-international.org/ecma-262/10.0/index.html).
10531053
* Notable additions: optional catch bindings.
1054-
* - `11` - To enable language features introduced by ECMAScript 11.
1054+
* - `11` - To enable language features introduced by ECMAScript 11. Notable
1055+
* additions: "export * as ns from 'module'".
10551056
*/
10561057
esversion: 5
10571058
};

‎tests/test262/expectations.txt

-10
Original file line numberDiff line numberDiff line change
@@ -1382,14 +1382,6 @@ test/language/comments/multi-line-asi-line-separator.js(default)
13821382
test/language/comments/multi-line-asi-line-separator.js(strict mode)
13831383
test/language/comments/multi-line-asi-paragraph-separator.js(default)
13841384
test/language/comments/multi-line-asi-paragraph-separator.js(strict mode)
1385-
test/language/module-code/eval-rqstd-once.js(default)
1386-
test/language/module-code/eval-rqstd-once.js(strict mode)
1387-
test/language/module-code/eval-rqstd-order.js(default)
1388-
test/language/module-code/eval-rqstd-order.js(strict mode)
1389-
test/language/module-code/eval-self-once.js(default)
1390-
test/language/module-code/eval-self-once.js(strict mode)
1391-
test/language/module-code/instn-once.js(default)
1392-
test/language/module-code/instn-once.js(strict mode)
13931385
test/language/module-code/privatename-valid-no-earlyerr.js(default)
13941386
test/language/module-code/privatename-valid-no-earlyerr.js(strict mode)
13951387
test/annexB/language/comments/single-line-html-close-unicode-separators.js(default)
@@ -8998,8 +8990,6 @@ test/language/identifiers/start-unicode-9.0.0-escaped.js(default)
89988990
test/language/identifiers/start-unicode-9.0.0-escaped.js(strict mode)
89998991
test/language/identifiers/start-unicode-9.0.0.js(default)
90008992
test/language/identifiers/start-unicode-9.0.0.js(strict mode)
9001-
test/language/module-code/export-star-as-dflt.js(default)
9002-
test/language/module-code/export-star-as-dflt.js(strict mode)
90038993
test/language/statementList/block-array-literal-with-item.js(default)
90048994
test/language/statementList/block-array-literal.js(default)
90058995
test/language/statementList/block-arrow-function-assignment-expr.js(default)

‎tests/unit/core.js

+27
Original file line numberDiff line numberDiff line change
@@ -1107,6 +1107,33 @@ exports.testES6ModuleDuplicateExport = function (test) {
11071107
test.done();
11081108
};
11091109

1110+
exports.testExportStar = function (test) {
1111+
TestRun(test, "rejects earlier language editions")
1112+
.addError(1, 8, "'export * as ns from' is only available in ES11 (use 'esversion: 11').")
1113+
.test([
1114+
"export * as x from '.';"
1115+
], { esversion: 10, module: true });
1116+
1117+
TestRun(test, "minimal esversion")
1118+
.test([
1119+
"export * as x from '.';"
1120+
], { esversion: 11, module: true });
1121+
1122+
TestRun(test, "tolerates any IdentifierName")
1123+
.test([
1124+
"export * as if from '.';"
1125+
], { esversion: 11, module: true });
1126+
1127+
TestRun(test, "detects duplicate bindings")
1128+
.addError(2, 13, "Duplicate exported binding: 'x'.")
1129+
.test([
1130+
"export * as x from '.';",
1131+
"export * as x from '.';"
1132+
], { esversion: 11, module: true });
1133+
1134+
test.done();
1135+
};
1136+
11101137
exports.testES6ModulesNamedExportsAffectUnused = function (test) {
11111138
// Named Exports should count as used
11121139
var src1 = [

0 commit comments

Comments
 (0)
Please sign in to comment.