diff options
-rw-r--r-- | src/wasm/wasm-emscripten.cpp | 2 | ||||
-rw-r--r-- | src/wasm/wasm-s-parser.cpp | 1 | ||||
-rw-r--r-- | test/lit/wasm-emscripten-finalize/tag_export.wat | 12 | ||||
-rw-r--r-- | test/tags.wast.from-wast | 1 | ||||
-rw-r--r-- | test/tags.wast.fromBinary | 1 | ||||
-rw-r--r-- | test/tags.wast.fromBinary.noDebugInfo | 1 |
6 files changed, 17 insertions, 1 deletions
diff --git a/src/wasm/wasm-emscripten.cpp b/src/wasm/wasm-emscripten.cpp index ed2f0f430..4e37464ec 100644 --- a/src/wasm/wasm-emscripten.cpp +++ b/src/wasm/wasm-emscripten.cpp @@ -432,7 +432,7 @@ std::string EmscriptenGlueGenerator::generateEmscriptenMetadata() { meta << " \"exports\": ["; commaFirst = true; for (const auto& ex : wasm.exports) { - if (ex->kind == ExternalKind::Function) { + if (ex->kind == ExternalKind::Function || ex->kind == ExternalKind::Tag) { meta << nextElement() << '"' << ex->name.str << '"'; } } diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp index 82329af66..dd92278c6 100644 --- a/src/wasm/wasm-s-parser.cpp +++ b/src/wasm/wasm-s-parser.cpp @@ -3668,6 +3668,7 @@ void SExpressionWasmBuilder::parseTag(Element& s, bool preParseImport) { } ex->value = tag->name; ex->kind = ExternalKind::Tag; + wasm.addExport(ex.release()); } // Parse typeuse diff --git a/test/lit/wasm-emscripten-finalize/tag_export.wat b/test/lit/wasm-emscripten-finalize/tag_export.wat new file mode 100644 index 000000000..86c8c1331 --- /dev/null +++ b/test/lit/wasm-emscripten-finalize/tag_export.wat @@ -0,0 +1,12 @@ +;; RUN: wasm-emscripten-finalize %s | filecheck %s + +(module + (tag $e1 (export "e1") (param i32)) + (tag $e2 (param f32)) + (export "e2" (tag $e2)) +) + +;; CHECK: "exports": [ +;; CHECK: "e1", +;; CHECK: "e2" +;; CHECK: ], diff --git a/test/tags.wast.from-wast b/test/tags.wast.from-wast index 669afcc82..cc79bf663 100644 --- a/test/tags.wast.from-wast +++ b/test/tags.wast.from-wast @@ -10,5 +10,6 @@ (tag $e-params0 (param i32 f32)) (tag $e-params1 (param i32 f32)) (tag $e-export (param i32)) + (export "ex0" (tag $e-export)) (export "ex1" (tag $e)) ) diff --git a/test/tags.wast.fromBinary b/test/tags.wast.fromBinary index 98862618b..81043d682 100644 --- a/test/tags.wast.fromBinary +++ b/test/tags.wast.fromBinary @@ -10,6 +10,7 @@ (tag $tag$3 (param i32 f32)) (tag $tag$4 (param i32 f32)) (tag $tag$5 (param i32)) + (export "ex0" (tag $tag$5)) (export "ex1" (tag $tag$1)) ) diff --git a/test/tags.wast.fromBinary.noDebugInfo b/test/tags.wast.fromBinary.noDebugInfo index 98862618b..81043d682 100644 --- a/test/tags.wast.fromBinary.noDebugInfo +++ b/test/tags.wast.fromBinary.noDebugInfo @@ -10,6 +10,7 @@ (tag $tag$3 (param i32 f32)) (tag $tag$4 (param i32 f32)) (tag $tag$5 (param i32)) + (export "ex0" (tag $tag$5)) (export "ex1" (tag $tag$1)) ) |