summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-05-13 10:49:11 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-05-13 11:17:49 -0700
commit7861d1558490df98febd4b6498f9bec0b64722ad (patch)
treeb0a2520fcca4202e67b7e8bd0c2099aa25ef21bc
parentd58c26e37a40ab7fe796c639b6a652fb01b6d109 (diff)
downloadbinaryen-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.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;