summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/wasm-s-parser.h23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 28ef7231a..4dfba25f8 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -373,14 +373,29 @@ private:
void parseFunction(Element& s) {
size_t i = 1;
- Name name;
+ Name name, exportName;
if (s[i]->isStr()) {
- name = s[i]->str();
- i++;
- } else {
+ if (!s[i]->dollared()) {
+ // an export name
+ exportName = s[i]->str();
+ i++;
+ }
+ if (s[i]->isStr()) {
+ assert(s[i]->dollared());
+ name = s[i]->str();
+ i++;
+ }
+ }
+ if (!name.is()) {
// unnamed, use an index
name = Name::fromInt(functionCounter);
}
+ if (exportName.is()) {
+ auto ex = make_unique<Export>();
+ ex->name = exportName;
+ ex->value = name;
+ wasm.addExport(ex.release());
+ }
functionCounter++;
Expression* body = nullptr;
localIndex = 0;