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_Volatile = (1<<1),
E_TypeFlag_IsPlainText = (1<<2),
E_TypeFlag_IsCodeText = (1<<3),
E_TypeFlag_IsPathText = (1<<4),
E_TypeFlag_IsNotText = (1<<5),
E_TypeFlag_EditableChildren = (1<<6),
E_TypeFlag_InheritedByMembers = (1<<7),
E_TypeFlag_InheritedByElements = (1<<8),
E_TypeFlag_ArrayLikeExpansion = (1<<9),
E_TypeFlag_StubSingleLineExpansion = (1<<10),
E_TypeFlag_Restrict = (1<<2),
E_TypeFlag_IsPlainText = (1<<3),
E_TypeFlag_IsCodeText = (1<<4),
E_TypeFlag_IsPathText = (1<<5),
E_TypeFlag_IsNotText = (1<<6),
E_TypeFlag_EditableChildren = (1<<7),
E_TypeFlag_InheritedByMembers = (1<<8),
E_TypeFlag_InheritedByElements = (1<<9),
E_TypeFlag_ArrayLikeExpansion = (1<<10),
E_TypeFlag_StubSingleLineExpansion = (1<<11),
};
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;
}
if(rdi_type->flags & RDI_TypeModifierFlag_Restrict)
{
flags |= E_TypeFlag_Restrict;
}
type = push_array(arena, E_Type, 1);
type->kind = kind;
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 "));
}
if(type->flags & E_TypeFlag_Restrict)
{
str8_list_push(arena, out, str8_lit("restrict "));
}
}break;
case E_TypeKind_Variadic: