mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
cgen: fix error for generics struct that parent has str to string (#14037)
This commit is contained in:
parent
f6c9a60f99
commit
72c2dc805d
@ -896,7 +896,12 @@ fn (mut g Gen) gen_str_for_struct(info ast.Struct, styp string, str_fn_name stri
|
|||||||
sftyp := g.typ(field.typ)
|
sftyp := g.typ(field.typ)
|
||||||
mut field_styp := sftyp.replace('*', '')
|
mut field_styp := sftyp.replace('*', '')
|
||||||
field_styp_fn_name := if sym_has_str_method {
|
field_styp_fn_name := if sym_has_str_method {
|
||||||
'${field_styp}_str'
|
mut field_fn_name := '${field_styp}_str'
|
||||||
|
if sym.info is ast.Struct {
|
||||||
|
field_fn_name = g.generic_fn_name(sym.info.concrete_types, field_fn_name,
|
||||||
|
false)
|
||||||
|
}
|
||||||
|
field_fn_name
|
||||||
} else {
|
} else {
|
||||||
g.get_str_fn(field.typ)
|
g.get_str_fn(field.typ)
|
||||||
}
|
}
|
||||||
|
36
vlib/v/tests/generics_struct_parent_has_str_to_string_test.v
Normal file
36
vlib/v/tests/generics_struct_parent_has_str_to_string_test.v
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import datatypes
|
||||||
|
|
||||||
|
const (
|
||||||
|
w = 64
|
||||||
|
h = 32
|
||||||
|
)
|
||||||
|
|
||||||
|
interface Display {
|
||||||
|
mut:
|
||||||
|
pixel(x int, y int, val bool)
|
||||||
|
clear()
|
||||||
|
refresh()
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Vm {
|
||||||
|
mut:
|
||||||
|
display Display
|
||||||
|
stack datatypes.Stack<u16>
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Pattern {
|
||||||
|
pattern []byte
|
||||||
|
handler fn (mut m Vm)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn new_pattern(pattern string, handler fn (mut m Vm)) Pattern {
|
||||||
|
return Pattern{pattern.runes().map(byte('0x$it'.int())), handler}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_generics_struct_parent_has_str_to_string() {
|
||||||
|
p := new_pattern('00E0', fn (mut m Vm) {
|
||||||
|
println(m)
|
||||||
|
})
|
||||||
|
println(p)
|
||||||
|
assert true
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user