summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm/wasm-emscripten.cpp2
-rw-r--r--src/wasm/wasm-s-parser.cpp1
-rw-r--r--test/lit/wasm-emscripten-finalize/tag_export.wat12
-rw-r--r--test/tags.wast.from-wast1
-rw-r--r--test/tags.wast.fromBinary1
-rw-r--r--test/tags.wast.fromBinary.noDebugInfo1
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))
)