properly handle order of params and result types in function type in call_indirect instruction
This commit is contained in:
@@ -649,8 +649,24 @@ raw_call_indirect_functype :: { (Maybe FuncType, [Instruction]) }
|
|||||||
| {- empty -} { (Nothing, []) }
|
| {- empty -} { (Nothing, []) }
|
||||||
|
|
||||||
raw_call_indirect_functype1 :: { (Maybe FuncType, [Instruction]) }
|
raw_call_indirect_functype1 :: { (Maybe FuncType, [Instruction]) }
|
||||||
: paramsresulttypeuse raw_call_indirect_functype {
|
: 'param' list(valtype) ')' raw_call_indirect_functype {
|
||||||
(Just $ mergeFuncType $1 $ fromMaybe emptyFuncType $ fst $2, snd $2)
|
let ft = fromMaybe emptyFuncType $ fst $4 in
|
||||||
|
(Just $ ft { params = map (ParamType Nothing) $2 ++ params ft }, snd $4)
|
||||||
|
}
|
||||||
|
| 'param' ident valtype ')' raw_call_indirect_functype {
|
||||||
|
let ft = fromMaybe emptyFuncType $ fst $5 in
|
||||||
|
(Just $ ft { params = (ParamType (Just $2) $3) : params ft }, snd $5)
|
||||||
|
}
|
||||||
|
| raw_call_indirect_return_functype1 { $1 }
|
||||||
|
|
||||||
|
raw_call_indirect_return_functype :: { (Maybe FuncType, [Instruction]) }
|
||||||
|
: '(' raw_call_indirect_return_functype1 { $2 }
|
||||||
|
| {- empty -} { (Nothing, []) }
|
||||||
|
|
||||||
|
raw_call_indirect_return_functype1 :: { (Maybe FuncType, [Instruction]) }
|
||||||
|
: 'result' list(valtype) ')' raw_call_indirect_return_functype {
|
||||||
|
let ft = fromMaybe emptyFuncType $ fst $4 in
|
||||||
|
(Just $ ft { results = $2 ++ results ft }, snd $4)
|
||||||
}
|
}
|
||||||
| foldedinstr1 { (Nothing, $1) }
|
| foldedinstr1 { (Nothing, $1) }
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user