ast: fix array of reference sumtype appending (#14797)
parent
924239026c
commit
cf1fc6f090
|
@ -1342,7 +1342,7 @@ pub fn (t &Table) is_sumtype_or_in_variant(parent Type, typ Type) bool {
|
||||||
if typ == 0 {
|
if typ == 0 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
if t.type_kind(typ) == .sum_type && parent.idx() == typ.idx()
|
if t.sym(typ).kind == .sum_type && parent.idx() == typ.idx()
|
||||||
&& parent.nr_muls() == typ.nr_muls() {
|
&& parent.nr_muls() == typ.nr_muls() {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
struct Element {
|
||||||
|
AbstractNode
|
||||||
|
name string
|
||||||
|
attributes []&Attribute
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Attribute {
|
||||||
|
AbstractNode
|
||||||
|
name string
|
||||||
|
value string
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type Node = Attribute | Element
|
||||||
|
|
||||||
|
struct AbstractNode {
|
||||||
|
pub mut:
|
||||||
|
child_nodes []&Node
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn (mut n AbstractNode) append_child(child &Node) {
|
||||||
|
n.child_nodes << child
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_array_of_reference_sumtype_append() {
|
||||||
|
mut parent := &Element{
|
||||||
|
name: 'parent'
|
||||||
|
}
|
||||||
|
mut child := &Element{
|
||||||
|
name: 'child'
|
||||||
|
}
|
||||||
|
parent.append_child(child)
|
||||||
|
|
||||||
|
dump(parent)
|
||||||
|
assert parent.child_nodes[0].name == 'child'
|
||||||
|
}
|
Loading…
Reference in New Issue