From 59753fbf1f14b2aa2a211addc96730bbceef9a32 Mon Sep 17 00:00:00 2001 From: Brad Lewis <22850972+BradLewis@users.noreply.github.com> Date: Sat, 6 Dec 2025 05:42:12 -0500 Subject: Handle references with attributes --- src/server/file_resolve.odin | 4 ++++ tests/references_test.odin | 18 ++++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/server/file_resolve.odin b/src/server/file_resolve.odin index 1b7a5c5..c526030 100644 --- a/src/server/file_resolve.odin +++ b/src/server/file_resolve.odin @@ -463,15 +463,19 @@ resolve_node :: proc(node: ^ast.Node, data: ^FileResolveData) { data.position_context.value_decl = n reset_position_context(data.position_context) + resolve_nodes(n.attributes[:], data) resolve_nodes(n.names, data) resolve_node(n.type, data) resolve_nodes(n.values, data) case ^Package_Decl: case ^Import_Decl: + resolve_nodes(n.attributes[:], data) case ^Foreign_Block_Decl: + resolve_nodes(n.attributes[:], data) resolve_node(n.foreign_library, data) resolve_node(n.body, data) case ^Foreign_Import_Decl: + resolve_nodes(n.attributes[:], data) resolve_node(n.name, data) case ^Proc_Group: resolve_nodes(n.args, data) diff --git a/tests/references_test.odin b/tests/references_test.odin index 021033b..7bd2dcc 100644 --- a/tests/references_test.odin +++ b/tests/references_test.odin @@ -1520,3 +1520,21 @@ ast_references_enum_with_enumerated_array :: proc(t: ^testing.T) { test.expect_reference_locations(t, &source, locations[:]) } + +@(test) +ast_references_deferred_attributes :: proc(t: ^testing.T) { + source := test.Source { + main = `package test + foo :: proc() {} + + @(deferred_in = fo{*}o) + bar :: proc() {} + `, + } + locations := []common.Location { + {range = {start = {line = 1, character = 2}, end = {line = 1, character = 5}}}, + {range = {start = {line = 3, character = 18}, end = {line = 3, character = 21}}}, + } + + test.expect_reference_locations(t, &source, locations[:]) +} -- cgit v1.2.3