aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorBradley Lewis <22850972+BradLewis@users.noreply.github.com>2025-11-12 21:52:53 -0500
committerGitHub <noreply@github.com>2025-11-12 21:52:53 -0500
commitb2efc8f7789d2e51259d8d37da7bf59182b185fc (patch)
tree53180031a39851a338dcf4288e73c5b685455fe6 /src/server
parent4dbe21aed8d350b51baa37ecb59e78e450e948da (diff)
parent8d189a070ce81e44d41a4ae087576b41f61735b5 (diff)
Merge pull request #1172 from A1029384756/master
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}
}