diff options
| author | Bradley Lewis <22850972+BradLewis@users.noreply.github.com> | 2025-12-12 18:56:04 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-12-12 18:56:04 +1100 |
| commit | 8afb0517580c25eefeb7e2bc01fbf057178df9c5 (patch) | |
| tree | 5228418f97693ec408d37f92d2c2fc73cfec1425 | |
| parent | 71eb09f0993a150503151fb8bb059ccd5f557b1d (diff) | |
| parent | 04b7710d526ad64d1e14eaf7860b51666bc7e4a8 (diff) | |
Merge pull request #1215 from BradLewis/fix/hover-info-aliases
Correct hover info for aliased constants
| -rw-r--r-- | src/server/ast.odin | 2 | ||||
| -rw-r--r-- | src/server/symbol.odin | 2 | ||||
| -rw-r--r-- | tests/hover_test.odin | 29 |
3 files changed, 31 insertions, 2 deletions
diff --git a/src/server/ast.odin b/src/server/ast.odin index 59e3de2..d1846f7 100644 --- a/src/server/ast.odin +++ b/src/server/ast.odin @@ -446,9 +446,9 @@ collect_value_decl :: proc( global_expr.name_expr = name if len(value_decl.values) > i { + global_expr.value_expr = value_decl.values[i] if is_variable_declaration(value_decl.values[i]) { global_expr.flags += {.Variable} - global_expr.value_expr = value_decl.values[i] } } if value_decl.type != nil { diff --git a/src/server/symbol.odin b/src/server/symbol.odin index d2f44ae..2a7cfc6 100644 --- a/src/server/symbol.odin +++ b/src/server/symbol.odin @@ -947,7 +947,7 @@ construct_ident_symbol_info :: proc(symbol: ^Symbol, ident: string, document_pkg symbol.type_name = symbol.name symbol.type_pkg = symbol.pkg symbol.name = ident - if symbol.type == .Variable { + if symbol.type == .Variable || symbol.type == .Constant { symbol.pkg = document_pkg } diff --git a/tests/hover_test.odin b/tests/hover_test.odin index 842360b..75b3341 100644 --- a/tests/hover_test.odin +++ b/tests/hover_test.odin @@ -5865,6 +5865,35 @@ ast_hover_deferred_attributes :: proc(t: ^testing.T) { test.expect_hover(t, &source, "test.foo :: proc()") } +@(test) +ast_hover_const_aliases :: proc(t: ^testing.T) { + source := test.Source { + main = `package test + Foo :: 3 + 4 + B{*}ar :: Foo + `, + } + test.expect_hover(t, &source, "test.Bar :: Foo") +} + +@(test) +ast_hover_const_aliases_from_other_pkg :: proc(t: ^testing.T) { + packages := make([dynamic]test.Package, context.temp_allocator) + + append(&packages, test.Package{pkg = "my_package", source = `package my_package + Foo :: 3 + 4 + `}) + source := test.Source { + main = `package test + import "my_package" + + B{*}ar :: my_package.Foo + `, + packages = packages[:], + } + test.expect_hover(t, &source, "test.Bar :: my_package.Foo") +} + /* Waiting for odin fix |