fix: canonicalize nested composition references
This commit is contained in:
@@ -453,7 +453,8 @@ sum_syntax :: proc(store: ^Store, left, right: Type) -> Type {
|
||||
}
|
||||
|
||||
append_sum_variants :: proc(store: ^Store, value: Type, out: ^[dynamic]Sum_Variant) -> bool {
|
||||
item, ok := node(store, value)
|
||||
resolved := resolve_alias(value, store)
|
||||
item, ok := node(store, resolved)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
@@ -461,7 +462,7 @@ append_sum_variants :: proc(store: ^Store, value: Type, out: ^[dynamic]Sum_Varia
|
||||
if item.explicit_backing {
|
||||
return false
|
||||
}
|
||||
for member in enum_members_for(store, value) {
|
||||
for member in enum_members_for(store, resolved) {
|
||||
if member.value <= 0 || member.value > 0xffff {
|
||||
return false
|
||||
}
|
||||
@@ -473,7 +474,7 @@ append_sum_variants :: proc(store: ^Store, value: Type, out: ^[dynamic]Sum_Varia
|
||||
return false
|
||||
}
|
||||
tag_members := enum_members_for(store, item.child)
|
||||
for field in fields_for(store, value) {
|
||||
for field in fields_for(store, resolved) {
|
||||
found := false
|
||||
for member in tag_members {
|
||||
if member.name == field.name {
|
||||
|
||||
Reference in New Issue
Block a user