aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/file_resolve.odin4
-rw-r--r--tests/references_test.odin18
2 files changed, 22 insertions, 0 deletions
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[:])
+}