Closed jfparadis closed 4 years ago
It never occurred to me that we could export a var
declaration. I should have read the spec more carefully. How does the semantics differ from an exported let
declaration, aside from the absence of a temporal dead zone?
Hoisting and ReferenceError
come to mind. This fails under node:
// foo.js
console.log(x);
export let x = 1;
// index.js
import { x, } from './foo.js';
if (x !== 1) throw new TypeError();
$ node -r esm test/moddir/index.js
// ReferenceError: x is not defined
This works under node:
// foo.js
console.log(x);
export var x = 1;
// index.js
import { x, } from './foo.js';
if (x !== 1) throw new TypeError();
$ node -r esm test/moddir/index.js
// undefined
Note: 83 tests rely on "export var"
test262/test/language/module-code/instn-star-props-dflt-skip-star-as-named-end_FIXTURE.js
test262/test/language/module-code/instn-star-props-dflt-skip-prod_FIXTURE.js
test262/test/language/module-code/instn-iee-bndng-var.js
test262/test/language/module-code/instn-star-props-nrml-1_FIXTURE.js
test262/test/language/module-code/instn-named-err-ambiguous-1_FIXTURE.js
test262/test/language/module-code/instn-star-iee-cycle.js
test262/test/language/module-code/instn-star-props-nrml-indirect_FIXTURE.js
test262/test/language/module-code/eval-gtbndng-indirect-trlng-comma_FIXTURE.js
test262/test/language/module-code/instn-iee-iee-cycle.js
test262/test/language/module-code/instn-star-ambiguous-1_FIXTURE.js
test262/test/language/module-code/instn-star-props-circular-b_FIXTURE.js
test262/test/language/module-code/instn-local-bndng-export-var.js
test262/test/language/module-code/instn-iee-err-ambiguous-2_FIXTURE.js
test262/test/language/module-code/instn-star-props-nrml-star_FIXTURE.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-literal-string.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-identifier.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-this.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-obj-literal.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-null.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-literal-number.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-template-literal.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-new-expr.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-regexp.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-array-literal.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-nested.js
test262/test/language/module-code/top-level-await/syntax/export-var-await-expr-func-expression.js
test262/test/language/module-code/namespace/internals/has-property-str-found-init.js
test262/test/language/module-code/namespace/internals/get-nested-namespace-dflt-skip-named-end_FIXTURE.js
test262/test/language/module-code/namespace/internals/get-str-found-init.js
test262/test/language/module-code/namespace/internals/own-property-keys-binding-types.js
test262/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-2_FIXTURE.js
test262/test/language/module-code/namespace/internals/get-str-update.js
test262/test/language/module-code/namespace/internals/own-property-keys-binding-types_FIXTURE.js
test262/test/language/module-code/namespace/internals/get-own-property-str-found-init.js
test262/test/language/module-code/namespace/internals/set.js
test262/test/language/module-code/namespace/internals/delete-exported-init.js
test262/test/language/module-code/namespace/internals/get-nested-namespace-props-nrml-3_FIXTURE.js
test262/test/language/module-code/namespace/internals/get-nested-namespace-dflt-skip-prod-end_FIXTURE.js
test262/test/language/module-code/namespace/internals/define-own-property.js
test262/test/language/module-code/instn-iee-trlng-comma_FIXTURE.js
test262/test/language/module-code/instn-named-bndng-dflt-star.js
test262/test/language/module-code/instn-iee-star-cycle-indirect-x_FIXTURE.js
test262/test/language/module-code/instn-star-props-dflt-skip-star-as-prod-end_FIXTURE.js
test262/test/language/module-code/instn-named-bndng-trlng-comma.js
test262/test/language/module-code/instn-iee-err-ambiguous-1_FIXTURE.js
test262/test/language/module-code/instn-star-star-cycle-indirect-x_FIXTURE.js
test262/test/language/module-code/instn-named-iee-cycle.js
test262/test/language/module-code/instn-star-props-circular-a_FIXTURE.js
test262/test/language/module-code/instn-named-star-cycle-indirect-x_FIXTURE.js
test262/test/language/module-code/instn-star-ambiguous-2_FIXTURE.js
test262/test/language/module-code/instn-named-bndng-dflt-named.js
test262/test/language/module-code/instn-named-bndng-var.js
test262/test/language/module-code/instn-star-props-dflt-skip-named_FIXTURE.js
test262/test/language/module-code/instn-named-err-ambiguous-2_FIXTURE.js
test262/test/language/expressions/dynamic-import/assignment-expression/module-code-other_FIXTURE.js
test262/test/language/expressions/dynamic-import/assignment-expression/module-code_FIXTURE.js
test262/test/language/expressions/dynamic-import/dynamic-import-module_FIXTURE.js
test262/test/language/expressions/dynamic-import/namespace/get-nested-namespace-dflt-skip-named-end_FIXTURE.js
test262/test/language/expressions/dynamic-import/namespace/get-nested-namespace-props-nrml-2_FIXTURE.js
test262/test/language/expressions/dynamic-import/namespace/module-code_FIXTURE.js
test262/test/language/expressions/dynamic-import/namespace/get-nested-namespace-props-nrml-3_FIXTURE.js
test262/test/language/expressions/dynamic-import/namespace/define-own-property_FIXTURE.js
test262/test/language/expressions/dynamic-import/namespace/get-nested-namespace-dflt-skip-prod-end_FIXTURE.js
test262/test/language/expressions/dynamic-import/usage/dynamic-import-module_FIXTURE.js
test262/test/language/expressions/dynamic-import/for-await-resolution-and-error-a_FIXTURE.js
test262/test/language/expressions/dynamic-import/module-code_FIXTURE.js
test262/test/language/expressions/dynamic-import/update-to-dynamic-import_FIXTURE.js
test262/test/language/expressions/dynamic-import/for-await-resolution-and-error-b_FIXTURE.js
test262/test/language/expressions/dynamic-import/catch/instn-iee-err-ambiguous-2_FIXTURE.js
test262/test/language/expressions/dynamic-import/catch/instn-iee-err-ambiguous-1_FIXTURE.js
test262/test/language/expressions/import.meta/distinct-for-each-module_FIXTURE.js
test262/test/language/export/escaped-as-export-specifier.js
test262/test/language/import/escaped-as-import-specifier.js
test262/implementation-contributed/v8/mjsunit/modules-exports1.js
test262/implementation-contributed/v8/mjsunit/modules-namespace4.js
test262/implementation-contributed/v8/mjsunit/regress/regress-6681.js
test262/implementation-contributed/v8/mjsunit/modules-imports5.js
test262/implementation-contributed/v8/mjsunit/modules-namespace3.js
test262/implementation-contributed/v8/mjsunit/modules-init3.js
test262/implementation-contributed/v8/mjsunit/modules-skip-namespace.js
test262/implementation-contributed/javascriptcore/modules/cyclic-may-produce-tdz/2.js
test262/implementation-contributed/javascriptcore/modules/imported-bindings-are-immutable/bindings.js
test262/implementation-contributed/javascriptcore/modules/export-from/second.js
Steps to reproduce Replace
test/moddir/index.js
with this code:Replace
test/moddir/foo.js
with this code:Execute the test:
You get a failure from the transpilation. Note: works fine with this
foo.js
:The test assertion fails because the test expectation has not been updated (expected).