From e5a93962924f5f8acb3a13325bcdf5438a4d20e4 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 8 May 2020 18:33:21 +0200 Subject: [PATCH] Fix identifier handling on export { default as ... } --- src/parser.ts | 2 +- tests/compiler/reexport.optimized.wat | 2 ++ tests/compiler/reexport.ts | 3 +++ tests/compiler/reexport.untouched.wat | 5 +++++ tests/compiler/rereexport.optimized.wat | 6 ++++++ tests/compiler/rereexport.ts | 4 +++- tests/compiler/rereexport.untouched.wat | 5 +++++ tests/compiler/wildcard-export.optimized.wat | 6 ++++++ tests/compiler/wildcard-export.untouched.wat | 5 +++++ 9 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/parser.ts b/src/parser.ts index a22f41dbc3..a4ee53026b 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -2473,7 +2473,7 @@ export class Parser extends DiagnosticEmitter { // before: Identifier ('as' Identifier)? - if (tn.skipIdentifier()) { + if (tn.skipIdentifier(IdentifierHandling.ALWAYS)) { let identifier = Node.createIdentifierExpression(tn.readIdentifier(), tn.range()); let asIdentifier: IdentifierExpression | null = null; if (tn.skip(Token.AS)) { diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index bd74bae03f..ff82192864 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -25,6 +25,8 @@ (export "exportstar.renamed_c" (global $export/c)) (export "exportstar.ns.two" (func $export/ns.one)) (export "exportstar.default.two" (func $export/ns.one)) + (export "default" (func $export/ns.one)) + (export "renamed_default" (func $export/ns.one)) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 diff --git a/tests/compiler/reexport.ts b/tests/compiler/reexport.ts index 7b4f8172e4..f8b3fdb1cf 100644 --- a/tests/compiler/reexport.ts +++ b/tests/compiler/reexport.ts @@ -27,3 +27,6 @@ export { ns as renamed_ns } from "./export"; import * as exportstar from "./exportstar"; export { exportstar }; + +export { default } from "./export-default"; +export { default as renamed_default } from "./export-default"; diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index 53bf2cb0fd..f1fc2f503b 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -26,6 +26,8 @@ (export "exportstar.renamed_c" (global $export/c)) (export "exportstar.ns.two" (func $export/ns.two)) (export "exportstar.default.two" (func $export/ns.two)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) (start $~start) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -58,6 +60,9 @@ (func $export/ns.two nop ) + (func $export-default/theDefault + nop + ) (func $~start call $start:reexport ) diff --git a/tests/compiler/rereexport.optimized.wat b/tests/compiler/rereexport.optimized.wat index 0f1acb3dc0..ab1932c2a4 100644 --- a/tests/compiler/rereexport.optimized.wat +++ b/tests/compiler/rereexport.optimized.wat @@ -1,4 +1,5 @@ (module + (type $none_=>_none (func)) (memory $0 0) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -7,4 +8,9 @@ (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (func $export-default/theDefault + nop + ) ) diff --git a/tests/compiler/rereexport.ts b/tests/compiler/rereexport.ts index 0a822483a1..63a600c265 100644 --- a/tests/compiler/rereexport.ts +++ b/tests/compiler/rereexport.ts @@ -2,5 +2,7 @@ export { a, a as renamed_a, renamed_b, - renamed_b as renamed_renamed_b + renamed_b as renamed_renamed_b, + default, + default as renamed_default } from "./reexport"; diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index d04192d8a2..952151602f 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -11,6 +11,8 @@ (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) (start $~start) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -35,6 +37,9 @@ (func $start:rereexport call $start:reexport ) + (func $export-default/theDefault + nop + ) (func $~start call $start:rereexport ) diff --git a/tests/compiler/wildcard-export.optimized.wat b/tests/compiler/wildcard-export.optimized.wat index 0f1acb3dc0..ab1932c2a4 100644 --- a/tests/compiler/wildcard-export.optimized.wat +++ b/tests/compiler/wildcard-export.optimized.wat @@ -1,4 +1,5 @@ (module + (type $none_=>_none (func)) (memory $0 0) (global $export/a i32 (i32.const 1)) (global $export/b i32 (i32.const 2)) @@ -7,4 +8,9 @@ (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) + (func $export-default/theDefault + nop + ) ) diff --git a/tests/compiler/wildcard-export.untouched.wat b/tests/compiler/wildcard-export.untouched.wat index aa9e3ee86c..e90cbeda7f 100644 --- a/tests/compiler/wildcard-export.untouched.wat +++ b/tests/compiler/wildcard-export.untouched.wat @@ -11,6 +11,8 @@ (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) (export "renamed_renamed_b" (global $export/b)) + (export "default" (func $export-default/theDefault)) + (export "renamed_default" (func $export-default/theDefault)) (start $~start) (func $export/add (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -38,6 +40,9 @@ (func $start:wildcard-export call $start:rereexport ) + (func $export-default/theDefault + nop + ) (func $~start call $start:wildcard-export )