mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-30 01:44:36 +00:00
- when checking the variants of a union type we will skip adding the variants if we have an unspecialized polymorphic, hence our union_type variants will be empty and have a count of 0 - so when checking if we violate the #no_nil error, if we are in the unspecialized polymorphic case and there exists at least one variant in the original variants then we should not raise this error - test checks that we do not raise the error anymore, and that we still detect the #no_nil error in the described circumstances
30 lines
578 B
Odin
30 lines
578 B
Odin
// Tests issue #2395 https://github.com/odin-lang/Odin/issues/2395
|
|
|
|
// Ensures that we no longer raise the faulty error for #no_nil unions when
|
|
// then are 2 variants with the polymorphic type. Also ensure that we raise
|
|
// exactly 2 errors from the invalid unions
|
|
package test_issues
|
|
|
|
import "core:testing"
|
|
|
|
ValidUnion :: union($T: typeid) #no_nil {
|
|
T,
|
|
f32,
|
|
}
|
|
|
|
OtherValidUnion :: union($T: typeid, $S: typeid) #no_nil {
|
|
T,
|
|
S,
|
|
}
|
|
|
|
InvalidUnion :: union($T: typeid) #no_nil {
|
|
T,
|
|
}
|
|
|
|
OtherInvalidUnion :: union($T: typeid) #no_nil {
|
|
u8,
|
|
}
|
|
|
|
main :: proc() {
|
|
}
|