@@ -242,6 +242,7 @@ AstNode *type_decl_node(ZigType *type_entry) {
242
242
case ZigTypeIdArray:
243
243
case ZigTypeIdComptimeFloat:
244
244
case ZigTypeIdComptimeInt:
245
+ case ZigTypeIdEnumLiteral:
245
246
case ZigTypeIdUndefined:
246
247
case ZigTypeIdNull:
247
248
case ZigTypeIdOptional:
@@ -303,6 +304,7 @@ bool type_is_resolved(ZigType *type_entry, ResolveStatus status) {
303
304
case ZigTypeIdArray:
304
305
case ZigTypeIdComptimeFloat:
305
306
case ZigTypeIdComptimeInt:
307
+ case ZigTypeIdEnumLiteral:
306
308
case ZigTypeIdUndefined:
307
309
case ZigTypeIdNull:
308
310
case ZigTypeIdOptional:
@@ -1463,6 +1465,7 @@ static Error emit_error_unless_type_allowed_in_packed_struct(CodeGen *g, ZigType
1463
1465
case ZigTypeIdUnreachable:
1464
1466
case ZigTypeIdComptimeFloat:
1465
1467
case ZigTypeIdComptimeInt:
1468
+ case ZigTypeIdEnumLiteral:
1466
1469
case ZigTypeIdUndefined:
1467
1470
case ZigTypeIdNull:
1468
1471
case ZigTypeIdErrorUnion:
@@ -1550,6 +1553,7 @@ bool type_allowed_in_extern(CodeGen *g, ZigType *type_entry) {
1550
1553
case ZigTypeIdMetaType:
1551
1554
case ZigTypeIdComptimeFloat:
1552
1555
case ZigTypeIdComptimeInt:
1556
+ case ZigTypeIdEnumLiteral:
1553
1557
case ZigTypeIdUndefined:
1554
1558
case ZigTypeIdNull:
1555
1559
case ZigTypeIdErrorUnion:
@@ -1712,6 +1716,7 @@ static ZigType *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *child_sc
1712
1716
return g->builtin_types .entry_invalid ;
1713
1717
case ZigTypeIdComptimeFloat:
1714
1718
case ZigTypeIdComptimeInt:
1719
+ case ZigTypeIdEnumLiteral:
1715
1720
case ZigTypeIdBoundFn:
1716
1721
case ZigTypeIdMetaType:
1717
1722
case ZigTypeIdVoid:
@@ -1806,6 +1811,7 @@ static ZigType *analyze_fn_type(CodeGen *g, AstNode *proto_node, Scope *child_sc
1806
1811
1807
1812
case ZigTypeIdComptimeFloat:
1808
1813
case ZigTypeIdComptimeInt:
1814
+ case ZigTypeIdEnumLiteral:
1809
1815
case ZigTypeIdBoundFn:
1810
1816
case ZigTypeIdMetaType:
1811
1817
case ZigTypeIdUnreachable:
@@ -3621,6 +3627,7 @@ void scan_decls(CodeGen *g, ScopeDecls *decls_scope, AstNode *node) {
3621
3627
case NodeTypeAwaitExpr:
3622
3628
case NodeTypeSuspend:
3623
3629
case NodeTypePromiseType:
3630
+ case NodeTypeEnumLiteral:
3624
3631
zig_unreachable ();
3625
3632
}
3626
3633
}
@@ -3658,6 +3665,7 @@ ZigType *validate_var_type(CodeGen *g, AstNode *source_node, ZigType *type_entry
3658
3665
return g->builtin_types .entry_invalid ;
3659
3666
case ZigTypeIdComptimeFloat:
3660
3667
case ZigTypeIdComptimeInt:
3668
+ case ZigTypeIdEnumLiteral:
3661
3669
case ZigTypeIdMetaType:
3662
3670
case ZigTypeIdVoid:
3663
3671
case ZigTypeIdBool:
@@ -3807,7 +3815,8 @@ static void resolve_decl_var(CodeGen *g, TldVar *tld_var) {
3807
3815
implicit_type = g->builtin_types .entry_invalid ;
3808
3816
} else if ((!is_const || linkage == VarLinkageExternal) &&
3809
3817
(implicit_type->id == ZigTypeIdComptimeFloat ||
3810
- implicit_type->id == ZigTypeIdComptimeInt))
3818
+ implicit_type->id == ZigTypeIdComptimeInt ||
3819
+ implicit_type->id == ZigTypeIdEnumLiteral))
3811
3820
{
3812
3821
add_node_error (g, source_node, buf_sprintf (" unable to infer variable type" ));
3813
3822
implicit_type = g->builtin_types .entry_invalid ;
@@ -4051,6 +4060,7 @@ static bool is_container(ZigType *type_entry) {
4051
4060
case ZigTypeIdArray:
4052
4061
case ZigTypeIdComptimeFloat:
4053
4062
case ZigTypeIdComptimeInt:
4063
+ case ZigTypeIdEnumLiteral:
4054
4064
case ZigTypeIdUndefined:
4055
4065
case ZigTypeIdNull:
4056
4066
case ZigTypeIdOptional:
@@ -4109,6 +4119,7 @@ void resolve_container_type(CodeGen *g, ZigType *type_entry) {
4109
4119
case ZigTypeIdArray:
4110
4120
case ZigTypeIdComptimeFloat:
4111
4121
case ZigTypeIdComptimeInt:
4122
+ case ZigTypeIdEnumLiteral:
4112
4123
case ZigTypeIdUndefined:
4113
4124
case ZigTypeIdNull:
4114
4125
case ZigTypeIdOptional:
@@ -4647,6 +4658,7 @@ bool handle_is_ptr(ZigType *type_entry) {
4647
4658
case ZigTypeIdMetaType:
4648
4659
case ZigTypeIdComptimeFloat:
4649
4660
case ZigTypeIdComptimeInt:
4661
+ case ZigTypeIdEnumLiteral:
4650
4662
case ZigTypeIdUndefined:
4651
4663
case ZigTypeIdNull:
4652
4664
case ZigTypeIdBoundFn:
@@ -4827,6 +4839,8 @@ static uint32_t hash_const_val(ConstExprValue *const_val) {
4827
4839
}
4828
4840
return result;
4829
4841
}
4842
+ case ZigTypeIdEnumLiteral:
4843
+ return buf_hash (const_val->data .x_enum_literal ) * 2691276464 ;
4830
4844
case ZigTypeIdEnum:
4831
4845
{
4832
4846
uint32_t result = 31643936 ;
@@ -4974,6 +4988,7 @@ static bool can_mutate_comptime_var_state(ConstExprValue *value) {
4974
4988
case ZigTypeIdFloat:
4975
4989
case ZigTypeIdComptimeFloat:
4976
4990
case ZigTypeIdComptimeInt:
4991
+ case ZigTypeIdEnumLiteral:
4977
4992
case ZigTypeIdUndefined:
4978
4993
case ZigTypeIdNull:
4979
4994
case ZigTypeIdBoundFn:
@@ -5043,6 +5058,7 @@ static bool return_type_is_cacheable(ZigType *return_type) {
5043
5058
case ZigTypeIdFloat:
5044
5059
case ZigTypeIdComptimeFloat:
5045
5060
case ZigTypeIdComptimeInt:
5061
+ case ZigTypeIdEnumLiteral:
5046
5062
case ZigTypeIdUndefined:
5047
5063
case ZigTypeIdNull:
5048
5064
case ZigTypeIdBoundFn:
@@ -5173,6 +5189,7 @@ OnePossibleValue type_has_one_possible_value(CodeGen *g, ZigType *type_entry) {
5173
5189
case ZigTypeIdOpaque:
5174
5190
case ZigTypeIdComptimeFloat:
5175
5191
case ZigTypeIdComptimeInt:
5192
+ case ZigTypeIdEnumLiteral:
5176
5193
case ZigTypeIdMetaType:
5177
5194
case ZigTypeIdBoundFn:
5178
5195
case ZigTypeIdArgTuple:
@@ -5236,6 +5253,7 @@ ReqCompTime type_requires_comptime(CodeGen *g, ZigType *type_entry) {
5236
5253
zig_unreachable ();
5237
5254
case ZigTypeIdComptimeFloat:
5238
5255
case ZigTypeIdComptimeInt:
5256
+ case ZigTypeIdEnumLiteral:
5239
5257
case ZigTypeIdUndefined:
5240
5258
case ZigTypeIdNull:
5241
5259
case ZigTypeIdMetaType:
@@ -5794,6 +5812,8 @@ bool const_values_equal(CodeGen *g, ConstExprValue *a, ConstExprValue *b) {
5794
5812
case ZigTypeIdInt:
5795
5813
case ZigTypeIdComptimeInt:
5796
5814
return bigint_cmp (&a->data .x_bigint , &b->data .x_bigint ) == CmpEQ;
5815
+ case ZigTypeIdEnumLiteral:
5816
+ return buf_eql_buf (a->data .x_enum_literal , b->data .x_enum_literal );
5797
5817
case ZigTypeIdPointer:
5798
5818
case ZigTypeIdFn:
5799
5819
return const_values_equal_ptr (a, b);
@@ -6044,6 +6064,9 @@ void render_const_value(CodeGen *g, Buf *buf, ConstExprValue *const_val) {
6044
6064
case ZigTypeIdInt:
6045
6065
bigint_append_buf (buf, &const_val->data .x_bigint , 10 );
6046
6066
return ;
6067
+ case ZigTypeIdEnumLiteral:
6068
+ buf_append_buf (buf, const_val->data .x_enum_literal );
6069
+ return ;
6047
6070
case ZigTypeIdMetaType:
6048
6071
buf_appendf (buf, " %s" , buf_ptr (&const_val->data .x_type ->name ));
6049
6072
return ;
@@ -6213,6 +6236,7 @@ uint32_t type_id_hash(TypeId x) {
6213
6236
case ZigTypeIdStruct:
6214
6237
case ZigTypeIdComptimeFloat:
6215
6238
case ZigTypeIdComptimeInt:
6239
+ case ZigTypeIdEnumLiteral:
6216
6240
case ZigTypeIdUndefined:
6217
6241
case ZigTypeIdNull:
6218
6242
case ZigTypeIdOptional:
@@ -6260,6 +6284,7 @@ bool type_id_eql(TypeId a, TypeId b) {
6260
6284
case ZigTypeIdStruct:
6261
6285
case ZigTypeIdComptimeFloat:
6262
6286
case ZigTypeIdComptimeInt:
6287
+ case ZigTypeIdEnumLiteral:
6263
6288
case ZigTypeIdUndefined:
6264
6289
case ZigTypeIdNull:
6265
6290
case ZigTypeIdOptional:
@@ -6439,6 +6464,7 @@ static const ZigTypeId all_type_ids[] = {
6439
6464
ZigTypeIdOpaque,
6440
6465
ZigTypeIdPromise,
6441
6466
ZigTypeIdVector,
6467
+ ZigTypeIdEnumLiteral,
6442
6468
};
6443
6469
6444
6470
ZigTypeId type_id_at_index (size_t index) {
@@ -6504,6 +6530,8 @@ size_t type_id_index(ZigType *entry) {
6504
6530
return 22 ;
6505
6531
case ZigTypeIdVector:
6506
6532
return 23 ;
6533
+ case ZigTypeIdEnumLiteral:
6534
+ return 24 ;
6507
6535
}
6508
6536
zig_unreachable ();
6509
6537
}
@@ -6534,6 +6562,8 @@ const char *type_id_name(ZigTypeId id) {
6534
6562
return " ComptimeFloat" ;
6535
6563
case ZigTypeIdComptimeInt:
6536
6564
return " ComptimeInt" ;
6565
+ case ZigTypeIdEnumLiteral:
6566
+ return " EnumLiteral" ;
6537
6567
case ZigTypeIdUndefined:
6538
6568
return " Undefined" ;
6539
6569
case ZigTypeIdNull:
0 commit comments