mirror of
https://github.com/vlang/v.git
synced 2025-09-13 09:25:45 -04:00
parent
92a72df5f8
commit
6fa9a84753
@ -570,11 +570,18 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
|
||||
if val_sym.info.generic_types.len > 0 {
|
||||
if val is ast.StructInit {
|
||||
var_styp := g.typ(val.typ)
|
||||
g.write('${var_styp} ')
|
||||
if var_type.has_flag(.shared_f) {
|
||||
g.write('__shared__${var_styp}* ')
|
||||
} else {
|
||||
g.write('${var_styp} ')
|
||||
}
|
||||
is_used_var_styp = true
|
||||
} else if val is ast.PrefixExpr {
|
||||
if val.op == .amp && val.right is ast.StructInit {
|
||||
var_styp := g.typ(val.right.typ.ref())
|
||||
if var_type.has_flag(.shared_f) {
|
||||
g.write('__shared__')
|
||||
}
|
||||
g.write('${var_styp} ')
|
||||
is_used_var_styp = true
|
||||
}
|
||||
|
14
vlib/v/tests/shared_generic_test.v
Normal file
14
vlib/v/tests/shared_generic_test.v
Normal file
@ -0,0 +1,14 @@
|
||||
struct Foo[T] {
|
||||
a T
|
||||
}
|
||||
|
||||
fn test_shared_struct_has_generics() {
|
||||
shared foo := Foo[int]{1}
|
||||
lock foo {
|
||||
assert foo.a == 1
|
||||
}
|
||||
shared bar := &Foo[int]{1}
|
||||
lock bar {
|
||||
assert bar.a == 1
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user