cgen: fix error of generic array typedef (#10679)
parent
f070222124
commit
6436d9a827
|
@ -786,7 +786,11 @@ pub fn (mut g Gen) write_typedef_types() {
|
|||
}
|
||||
match typ.kind {
|
||||
.array {
|
||||
g.type_definitions.writeln('typedef array $typ.cname;')
|
||||
info := typ.info as ast.Array
|
||||
elem_sym := g.table.get_type_symbol(info.elem_type)
|
||||
if elem_sym.kind != .placeholder {
|
||||
g.type_definitions.writeln('typedef array $typ.cname;')
|
||||
}
|
||||
}
|
||||
.array_fixed {
|
||||
info := typ.info as ast.ArrayFixed
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
struct Node<T> {
|
||||
mut:
|
||||
data T
|
||||
next &Node<T> = 0
|
||||
}
|
||||
|
||||
struct SinglyLinkedList<T> {
|
||||
mut:
|
||||
first_node &Node<T> = 0
|
||||
}
|
||||
|
||||
fn init_singlylinkedlist<T>(nodes []Node<T>) SinglyLinkedList<T> {
|
||||
mut current_node := &nodes[0]
|
||||
|
||||
for i in 0 .. nodes.len - 1 {
|
||||
current_node = &nodes[i]
|
||||
current_node.next = &nodes[i + 1]
|
||||
}
|
||||
|
||||
return SinglyLinkedList<T>{&nodes[0]}
|
||||
}
|
||||
|
||||
fn test_generic_array_typedef() {
|
||||
sll := init_singlylinkedlist<int>([Node<int>{ data: 1 }, Node<int>{
|
||||
data: 2
|
||||
}, Node<int>{
|
||||
data: 798
|
||||
}])
|
||||
println(sll.first_node.next)
|
||||
assert sll.first_node.next.data == 2
|
||||
}
|
Loading…
Reference in New Issue