aboutsummaryrefslogtreecommitdiff
path: root/src/server/references.odin
diff options
context:
space:
mode:
authorBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-06-30 21:01:54 -0400
committerBrad Lewis <22850972+BradLewis@users.noreply.github.com>2025-07-02 07:54:29 -0400
commitde9bacba2cf724401e04fd5a2572053754817f9c (patch)
treef09eb63680dd4eafb8f0a1ee23152b509c81e858 /src/server/references.odin
parentb0c738ee087a57eebaa4c7626c29434a3b7fc524 (diff)
Improve references of enums with field values
Diffstat (limited to 'src/server/references.odin')
-rw-r--r--src/server/references.odin21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/server/references.odin b/src/server/references.odin
index 04666ea..9002756 100644
--- a/src/server/references.odin
+++ b/src/server/references.odin
@@ -93,8 +93,27 @@ prepare_references :: proc(
resolve_flag = .Field
break done_enum
}
- }
+ } else if value, ok := field.derived.(^ast.Field_Value); ok {
+ if position_in_node(value.field, position_context.position) {
+ symbol = Symbol {
+ range = common.get_token_range(value.field, string(document.text)),
+ }
+ found = true
+ resolve_flag = .Field
+ break done_enum
+ } else if position_in_node(value.value, position_context.position) {
+ if ident, ok := value.value.derived.(^ast.Ident); ok {
+ symbol, ok = resolve_location_identifier(ast_context, ident^)
+ if !ok {
+ return
+ }
+ found = true
+ resolve_flag = .Identifier
+ break done_enum
+ }
+ }
+ }
}
if !found {
return