summaryrefslogtreecommitdiff
path: root/src/wasm-s-parser.h
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2016-09-20 11:04:14 -0700
committerAlon Zakai <alonzakai@gmail.com>2016-09-20 11:06:16 -0700
commit1338ad989ba30007bc1ba7f0fd05237a9fbec474 (patch)
tree19546dea17ece209ce0a72215a536e39c24c6f8f /src/wasm-s-parser.h
parent552d700c7e21afae03e55b6d6574a67946510972 (diff)
downloadbinaryen-1338ad989ba30007bc1ba7f0fd05237a9fbec474.tar.gz
binaryen-1338ad989ba30007bc1ba7f0fd05237a9fbec474.tar.bz2
binaryen-1338ad989ba30007bc1ba7f0fd05237a9fbec474.zip
support spectest.global
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r--src/wasm-s-parser.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 0d2a44407..525cc29f7 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -1646,7 +1646,7 @@ private:
void parseGlobal(Element& s, bool preParseImport = false) {
std::unique_ptr<Global> global = make_unique<Global>();
size_t i = 1;
- if (s[i]->dollared()) {
+ if (s[i]->dollared() && !(s[i]->isStr() && isWasmType(s[i]->str()))) {
global->name = s[i++]->str();
} else {
global->name = Name::fromInt(globalCounter);
@@ -1698,7 +1698,11 @@ private:
}
assert(!preParseImport);
global->type = type;
- global->init = parseExpression(s[i++]);
+ if (i < s.size()) {
+ global->init = parseExpression(s[i++]);
+ } else {
+ throw ParseException("global without init", s.line, s.col);
+ }
global->mutable_ = mutable_;
assert(i == s.size());
wasm.addGlobal(global.release());