Fixed placement of arguments for ".match_failure" call

This commit is contained in:
Roman Venediktov 2024-12-20 15:57:44 +01:00
parent 6e5315646a
commit a4e297648c

View file

@ -982,23 +982,21 @@ let compile cmd env imports code =
1 false 1 false
| LINE line -> env#gen_line line | LINE line -> env#gen_line line
| FAIL ((line, col), value) -> | FAIL ((line, col), value) ->
let v, env = if value then (env#peek, env) else env#pop in let value, env = if value then (env#peek, env) else env#pop in
let msg_addr, env = env#string cmd#get_infile in let msg_addr, env = env#string cmd#get_infile in
let vr, env = env#allocate in let value_arg_addr, env = env#allocate in
let sr, env = env#allocate in let msg_arg_addr, env = env#allocate in
let liner, env = env#allocate in let line_arg_addr, env = env#allocate in
let colr, env = env#allocate in let col_arg_addr, env = env#allocate in
let env, code = let env, code =
compile_call env ~fname:".match_failure" 4 false compile_call env ~fname:".match_failure" 4 false
in in
let _, env = env#pop in let _, env = env#pop in
( env, ( env,
[ mov (L col) col_arg_addr
Mov (L col, colr); @ mov (L line) line_arg_addr
Mov (L line, liner); @ mov msg_addr msg_arg_addr
Mov (msg_addr, sr); @ mov value value_arg_addr
Mov (v, vr);
]
@ code ) @ code )
| i -> | i ->
invalid_arg invalid_arg