diff options
-rw-r--r-- | src/wasm-s-parser.h | 23 |
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; |