diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-05-13 10:49:11 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-05-13 11:17:49 -0700 |
commit | 7861d1558490df98febd4b6498f9bec0b64722ad (patch) | |
tree | b0a2520fcca4202e67b7e8bd0c2099aa25ef21bc | |
parent | d58c26e37a40ab7fe796c639b6a652fb01b6d109 (diff) | |
download | binaryen-7861d1558490df98febd4b6498f9bec0b64722ad.tar.gz binaryen-7861d1558490df98febd4b6498f9bec0b64722ad.tar.bz2 binaryen-7861d1558490df98febd4b6498f9bec0b64722ad.zip |
support new syntactic sugar of export names on functions
-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; |