diff options
| author | Daniel Gavin <danielgavin5@hotmail.com> | 2022-10-27 13:33:12 +0200 |
|---|---|---|
| committer | Daniel Gavin <danielgavin5@hotmail.com> | 2022-10-27 13:33:12 +0200 |
| commit | bd25738e319420f126b6c54e21744443ac4bf287 (patch) | |
| tree | 4d59143e868a861b8c4160ea0bd28e4306ba90ba | |
| parent | 7415292f695102c94b6d97e8a28ffc99da71ac30 (diff) | |
show pointer information in signature
| -rw-r--r-- | src/server/analysis.odin | 21 | ||||
| -rw-r--r-- | tests/completions_test.odin | 17 |
2 files changed, 32 insertions, 6 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 7050471..52a05f0 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -3828,9 +3828,20 @@ get_signature :: proc( is_variable := symbol.type == .Variable + + pointer_prefix := common.repeat( + "^", + symbol.pointers, + context.temp_allocator, + ) + + #partial switch v in symbol.value { case SymbolBasicValue: - return common.node_to_string(v.ident) + return strings.concatenate( + {pointer_prefix, common.node_to_string(v.ident)}, + ast_context.allocator, + ) case SymbolBitSetValue: return common.node_to_string(v.expr) case SymbolEnumValue: @@ -3842,6 +3853,7 @@ get_signature :: proc( case SymbolMapValue: return strings.concatenate( a = { + pointer_prefix, "map[", common.node_to_string(v.key), "]", @@ -3865,22 +3877,23 @@ get_signature :: proc( } case SymbolMultiPointer: return strings.concatenate( - a = {"[^]", common.node_to_string(v.expr)}, + a = {pointer_prefix, "[^]", common.node_to_string(v.expr)}, allocator = ast_context.allocator, ) case SymbolDynamicArrayValue: return strings.concatenate( - a = {"[dynamic]", common.node_to_string(v.expr)}, + a = {pointer_prefix, "[dynamic]", common.node_to_string(v.expr)}, allocator = ast_context.allocator, ) case SymbolSliceValue: return strings.concatenate( - a = {"[]", common.node_to_string(v.expr)}, + a = {pointer_prefix, "[]", common.node_to_string(v.expr)}, allocator = ast_context.allocator, ) case SymbolFixedArrayValue: return strings.concatenate( a = { + pointer_prefix, "[", common.node_to_string(v.len), "]", diff --git a/tests/completions_test.odin b/tests/completions_test.odin index 46364ff..ef05a9f 100644 --- a/tests/completions_test.odin +++ b/tests/completions_test.odin @@ -1934,8 +1934,6 @@ ast_union_with_type_from_different_package :: proc(t: ^testing.T) { ast_completion_union_with_typeid :: proc(t: ^testing.T) { source := test.Source { main = `package main - import "my_package" - Maybe :: union($T: typeid) {T} main :: proc() { @@ -1947,3 +1945,18 @@ ast_completion_union_with_typeid :: proc(t: ^testing.T) { test.expect_completion_labels(t, &source, ".", {"(typeid)"}) } + +@(test) +ast_completion_with_pointer :: proc(t: ^testing.T) { + source := test.Source { + main = `package main + + main :: proc() { + my_pointer: ^int + my_p* + } + `, + } + + test.expect_completion_details(&t, &source, "", {"test.my_pointer: ^int"}) +} |