mirror of
https://github.com/vlang/v.git
synced 2025-09-16 19:06:24 -04:00
parent
c37309f6b9
commit
05a6e557cf
@ -2477,9 +2477,10 @@ fn (mut g Gen) call_args(node ast.CallExpr) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if use_tmp_var_autofree {
|
if use_tmp_var_autofree {
|
||||||
|
n := if node.name == 'json.decode' { i + 2 } else { i + 1 }
|
||||||
// TODO: copypasta, move to an inline fn
|
// TODO: copypasta, move to an inline fn
|
||||||
fn_name := node.name.replace('.', '_')
|
fn_name := node.name.replace('.', '_')
|
||||||
name := '_arg_expr_${fn_name}_${i + 1}_${node.pos.pos}'
|
name := '_arg_expr_${fn_name}_${n}_${node.pos.pos}'
|
||||||
g.write('/*af arg2*/' + name)
|
g.write('/*af arg2*/' + name)
|
||||||
} else {
|
} else {
|
||||||
g.expr(arg.expr)
|
g.expr(arg.expr)
|
||||||
|
2
vlib/v/gen/c/testdata/autofree_json_decode.c.must_have
vendored
Normal file
2
vlib/v/gen/c/testdata/autofree_json_decode.c.must_have
vendored
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
string _arg_expr_json_decode_2_271 = string_str(msg);
|
||||||
|
cJSON* _t2 = json__json_parse(/*af arg2*/_arg_expr_json_decode_2_271);
|
19
vlib/v/gen/c/testdata/autofree_json_decode.vv
vendored
Normal file
19
vlib/v/gen/c/testdata/autofree_json_decode.vv
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// vtest vflags: -autofree
|
||||||
|
module main
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
input := '{"methode":"test"}'
|
||||||
|
decode_message(input) or {}
|
||||||
|
assert true
|
||||||
|
}
|
||||||
|
|
||||||
|
type BaseMessage = struct {
|
||||||
|
methode string @[json: methode]
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn decode_message(msg string) !string {
|
||||||
|
decoded_json := json.decode(BaseMessage, msg.str())!
|
||||||
|
return decoded_json.str()
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user