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 {
|
match typ.kind {
|
||||||
.array {
|
.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 {
|
.array_fixed {
|
||||||
info := typ.info as ast.ArrayFixed
|
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