preserve & visualize restrict type modifiers in eval

This commit is contained in:
Ryan Fleury
2025-09-26 15:32:13 -07:00
parent 5fa3efe76a
commit eda4f6bafa
2 changed files with 18 additions and 9 deletions
+10 -9
View File
@@ -379,15 +379,16 @@ enum
{ {
E_TypeFlag_Const = (1<<0), E_TypeFlag_Const = (1<<0),
E_TypeFlag_Volatile = (1<<1), E_TypeFlag_Volatile = (1<<1),
E_TypeFlag_IsPlainText = (1<<2), E_TypeFlag_Restrict = (1<<2),
E_TypeFlag_IsCodeText = (1<<3), E_TypeFlag_IsPlainText = (1<<3),
E_TypeFlag_IsPathText = (1<<4), E_TypeFlag_IsCodeText = (1<<4),
E_TypeFlag_IsNotText = (1<<5), E_TypeFlag_IsPathText = (1<<5),
E_TypeFlag_EditableChildren = (1<<6), E_TypeFlag_IsNotText = (1<<6),
E_TypeFlag_InheritedByMembers = (1<<7), E_TypeFlag_EditableChildren = (1<<7),
E_TypeFlag_InheritedByElements = (1<<8), E_TypeFlag_InheritedByMembers = (1<<8),
E_TypeFlag_ArrayLikeExpansion = (1<<9), E_TypeFlag_InheritedByElements = (1<<9),
E_TypeFlag_StubSingleLineExpansion = (1<<10), E_TypeFlag_ArrayLikeExpansion = (1<<10),
E_TypeFlag_StubSingleLineExpansion = (1<<11),
}; };
typedef struct E_Member E_Member; typedef struct E_Member E_Member;
+8
View File
@@ -886,6 +886,10 @@ e_push_type_from_key(Arena *arena, E_TypeKey key)
{ {
flags |= E_TypeFlag_Volatile; flags |= E_TypeFlag_Volatile;
} }
if(rdi_type->flags & RDI_TypeModifierFlag_Restrict)
{
flags |= E_TypeFlag_Restrict;
}
type = push_array(arena, E_Type, 1); type = push_array(arena, E_Type, 1);
type->kind = kind; type->kind = kind;
type->direct_type_key = direct_type_key; type->direct_type_key = direct_type_key;
@@ -1679,6 +1683,10 @@ e_type_lhs_string_from_key(Arena *arena, E_TypeKey key, String8List *out, U32 pr
{ {
str8_list_push(arena, out, str8_lit("volatile ")); str8_list_push(arena, out, str8_lit("volatile "));
} }
if(type->flags & E_TypeFlag_Restrict)
{
str8_list_push(arena, out, str8_lit("restrict "));
}
}break; }break;
case E_TypeKind_Variadic: case E_TypeKind_Variadic: