mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
json: handle external types
This commit is contained in:
parent
98a1b2782b
commit
19390871e9
@ -1548,11 +1548,11 @@ fn (mut g Gen) infix_expr(node ast.InfixExpr) {
|
||||
g.expr(node.left)
|
||||
g.write(', &($elem_type_str[]){ ')
|
||||
elem_sym := g.table.get_type_symbol(info.elem_type)
|
||||
if elem_sym.kind == .interface_ {
|
||||
if elem_sym.kind == .interface_ && node.right_type != info.elem_type{
|
||||
g.interface_call(node.right_type, info.elem_type)
|
||||
}
|
||||
g.expr_with_cast(node.right, node.right_type, info.elem_type)
|
||||
if elem_sym.kind == .interface_ {
|
||||
if elem_sym.kind == .interface_ && node.right_type != info.elem_type{
|
||||
g.write(')')
|
||||
}
|
||||
g.write(' })')
|
||||
@ -3535,7 +3535,7 @@ fn (g &Gen) interface_table() string {
|
||||
cast_functions.writeln('
|
||||
_Interface I_${cctype}_to_Interface_${interface_name}(${cctype}* x) {
|
||||
return (_Interface) {
|
||||
._object = (void*) memdup(x, sizeof(${cctype})),
|
||||
._object = (void*) (x),
|
||||
._interface_idx = ${interface_index_name}
|
||||
};
|
||||
}')
|
||||
|
@ -103,12 +103,12 @@ cJSON* ${enc_fn_name}($styp val) {
|
||||
|
||||
fn js_enc_name(typ string) string {
|
||||
name := 'json__encode_$typ'
|
||||
return name
|
||||
return name.replace('.', '__')
|
||||
}
|
||||
|
||||
fn js_dec_name(typ string) string {
|
||||
name := 'json__decode_$typ'
|
||||
return name
|
||||
return name.replace('.', '__')
|
||||
}
|
||||
|
||||
fn is_js_prim(typ string) bool {
|
||||
|
Loading…
Reference in New Issue
Block a user