aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorA1029384756 <hayden.gray104@gmail.com>2025-11-12 11:42:55 -0500
committerA1029384756 <hayden.gray104@gmail.com>2025-11-12 11:45:20 -0500
commit8d189a070ce81e44d41a4ae087576b41f61735b5 (patch)
tree4c7396f0eb4a23a4dc90dc65f30122df6467d12e /src/server
parentf8a4f450e526382e8076102f6d65324cbfa5c207 (diff)
added #all_or_none
Diffstat (limited to 'src/server')
-rw-r--r--src/server/collector.odin3
-rw-r--r--src/server/completion.odin1
-rw-r--r--src/server/documentation.odin3
-rw-r--r--src/server/symbol.odin4
4 files changed, 11 insertions, 0 deletions
diff --git a/src/server/collector.odin b/src/server/collector.odin
index 8dcb794..3491f63 100644
--- a/src/server/collector.odin
+++ b/src/server/collector.odin
@@ -166,6 +166,9 @@ collect_struct_fields :: proc(
b.align = clone_expr(struct_type.align, collection.allocator, &collection.unique_strings)
b.max_field_align = clone_expr(struct_type.max_field_align, collection.allocator, &collection.unique_strings)
b.min_field_align = clone_expr(struct_type.min_field_align, collection.allocator, &collection.unique_strings)
+ if struct_type.is_all_or_none {
+ b.tags |= {.Is_All_Or_None}
+ }
if struct_type.is_no_copy {
b.tags |= {.Is_No_Copy}
}
diff --git a/src/server/completion.odin b/src/server/completion.odin
index 44916d7..4b1e099 100644
--- a/src/server/completion.odin
+++ b/src/server/completion.odin
@@ -586,6 +586,7 @@ DIRECTIVE_NAME_LIST :: []string {
"packed",
"raw_union",
"align",
+ "all_or_none",
/* union type */
"no_nil",
"shared_nil",
diff --git a/src/server/documentation.odin b/src/server/documentation.odin
index 3ae3c53..0069ac4 100644
--- a/src/server/documentation.odin
+++ b/src/server/documentation.odin
@@ -634,6 +634,9 @@ write_struct_hover :: proc(sb: ^strings.Builder, ast_context: ^AstContext, v: Sy
case .Is_No_Copy:
wrote_tag = true
strings.write_string(sb, " #no_copy")
+ case .Is_All_Or_None:
+ wrote_tag = true
+ strings.write_string(sb, " #all_or_none")
}
}
diff --git a/src/server/symbol.odin b/src/server/symbol.odin
index 5181ca3..d10178d 100644
--- a/src/server/symbol.odin
+++ b/src/server/symbol.odin
@@ -16,6 +16,7 @@ SymbolStructTag :: enum {
Is_Packed,
Is_Raw_Union,
Is_No_Copy,
+ Is_All_Or_None,
}
SymbolStructTags :: bit_set[SymbolStructTag]
@@ -427,6 +428,9 @@ write_struct_type :: proc(
b.align = v.align
b.max_field_align = v.max_field_align
b.min_field_align = v.min_field_align
+ if v.is_all_or_none {
+ b.tags |= {.Is_All_Or_None}
+ }
if v.is_no_copy {
b.tags |= {.Is_No_Copy}
}