This commit is contained in:
Larsimusrex 2025-09-12 11:27:47 +02:00 committed by GitHub
commit a10ad725a5
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 21 additions and 4 deletions

View file

@ -7574,8 +7574,9 @@ fn (mut g Gen) type_default_impl(typ_ ast.Type, decode_sumtype bool) string {
} }
} }
.struct { .struct {
mut has_none_zero := false
info := sym.info as ast.Struct info := sym.info as ast.Struct
mut has_none_zero := info.fields.len == 0
mut init_str := if info.is_anon && !g.inside_global_decl { mut init_str := if info.is_anon && !g.inside_global_decl {
'(${g.styp(typ)}){' '(${g.styp(typ)}){'
} else { } else {

View file

@ -0,0 +1,18 @@
struct Empty {
}
type Sum = int | Empty
fn do_generic[T](val T) T {
$for v in Sum.variants {
if val is v {
return T(v)
}
}
return T{}
}
fn test_empty_cast() {
assert do_generic(Sum(0)) == Sum(0)
assert do_generic(Sum(Empty{})) == Sum(Empty{})
}

View file

@ -24,9 +24,7 @@ pub type Any = []Any
| Null | Null
// Null is a simple representation of the `null` value in JSON. // Null is a simple representation of the `null` value in JSON.
pub struct Null { pub struct Null {}
is_null bool = true
}
// null is an instance of the Null type, to ease comparisons with it. // null is an instance of the Null type, to ease comparisons with it.
pub const null = Null{} pub const null = Null{}