From eda4f6bafa06415b379ce1a68b37f11d493d5af8 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Fri, 26 Sep 2025 15:32:13 -0700 Subject: [PATCH] preserve & visualize restrict type modifiers in eval --- src/eval/eval_core.h | 19 ++++++++++--------- src/eval/eval_types.c | 8 ++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/eval/eval_core.h b/src/eval/eval_core.h index 0de42d9d..dce2082c 100644 --- a/src/eval/eval_core.h +++ b/src/eval/eval_core.h @@ -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; diff --git a/src/eval/eval_types.c b/src/eval/eval_types.c index 7d208b95..8ecc605d 100644 --- a/src/eval/eval_types.c +++ b/src/eval/eval_types.c @@ -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: