feat: support enums, distinct types, unions and matching
This commit is contained in:
@@ -76,6 +76,19 @@ Code :: enum {
|
||||
namespace_not_value
|
||||
not_namespace
|
||||
invalid_import_alias
|
||||
invalid_enum_backing
|
||||
invalid_enum_value
|
||||
enum_context_required
|
||||
invalid_distinct_backing
|
||||
invalid_union_tag
|
||||
union_initializer_count
|
||||
invalid_match_subject
|
||||
invalid_match_pattern
|
||||
duplicate_match_pattern
|
||||
non_exhaustive_match
|
||||
unreachable_match_arm
|
||||
invalid_match_capture
|
||||
inactive_union_field
|
||||
}
|
||||
|
||||
Diagnostic :: struct {
|
||||
@@ -173,5 +186,18 @@ messages :: $enummap.init(Code, []u8, {
|
||||
namespace_not_value = "package namespace cannot be used as a value",
|
||||
not_namespace = "member selection requires a package namespace",
|
||||
invalid_import_alias = "import requires an explicit valid identifier alias",
|
||||
invalid_enum_backing = "enum backing must be a concrete integer type",
|
||||
invalid_enum_value = "enum values require explicit backing and increasing representable constant integers",
|
||||
enum_context_required = "enum literal requires an enum or tagged union context",
|
||||
invalid_distinct_backing = "distinct requires a concrete runtime backing type",
|
||||
invalid_union_tag = "union tag must be an enum containing every union variant",
|
||||
union_initializer_count = "union construction requires exactly one member",
|
||||
invalid_match_subject = "match subject must be an enum, tagged union, or scalar",
|
||||
invalid_match_pattern = "invalid match pattern",
|
||||
duplicate_match_pattern = "duplicate or overlapping match pattern",
|
||||
non_exhaustive_match = "match is not exhaustive",
|
||||
unreachable_match_arm = "match arm is unreachable",
|
||||
invalid_match_capture = "payload capture requires compatible nonvoid tagged union variants",
|
||||
inactive_union_field = "tagged union field is not active",
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user