summaryrefslogtreecommitdiff
path: root/src/wasm-s-parser.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm-s-parser.h')
-rw-r--r--src/wasm-s-parser.h36
1 files changed, 20 insertions, 16 deletions
diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h
index 8f5e08e9d..ec7d6c6dc 100644
--- a/src/wasm-s-parser.h
+++ b/src/wasm-s-parser.h
@@ -1090,23 +1090,27 @@ private:
im->module = s[2]->str();
if (!s[3]->isStr()) onError();
im->base = s[3]->str();
- Element& params = *s[4];
- IString id = params[0]->str();
- if (id == PARAM) {
- for (size_t i = 1; i < params.size(); i++) {
- im->type.params.push_back(stringToWasmType(params[i]->str()));
+ if (s.size() > 4) {
+ Element& params = *s[4];
+ IString id = params[0]->str();
+ if (id == PARAM) {
+ for (size_t i = 1; i < params.size(); i++) {
+ im->type.params.push_back(stringToWasmType(params[i]->str()));
+ }
+ } else if (id == RESULT) {
+ im->type.result = stringToWasmType(params[1]->str());
+ } else if (id == TYPE) {
+ IString name = params[1]->str();
+ assert(wasm.functionTypesMap.find(name) != wasm.functionTypesMap.end());
+ im->type = *wasm.functionTypesMap[name];
+ } else {
+ onError();
+ }
+ if (s.size() > 5) {
+ Element& result = *s[5];
+ assert(result[0]->str() == RESULT);
+ im->type.result = stringToWasmType(result[1]->str());
}
- } else if (id == TYPE) {
- IString name = params[1]->str();
- assert(wasm.functionTypesMap.find(name) != wasm.functionTypesMap.end());
- im->type = *wasm.functionTypesMap[name];
- } else {
- onError();
- }
- if (s.size() > 5) {
- Element& result = *s[5];
- assert(result[0]->str() == RESULT);
- im->type.result = stringToWasmType(result[1]->str());
}
wasm.addImport(im);
}