diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2024-06-11 22:12:04 +0200 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2024-06-11 22:12:04 +0200 |
| commit | a66e2ef9bc46f3332d458895a74299ebb122dfed (patch) | |
| tree | d8ed1f464bb48e8c863f81eff0ec8291353e6f23 /src/server | |
| parent | a7bb78679028f2ade9c0975c4ec895db3fd62d9e (diff) | |
More improvements to renaming enums
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/file_resolve.odin | 28 | ||||
| -rw-r--r-- | src/server/references.odin | 25 |
2 files changed, 25 insertions, 28 deletions
diff --git a/src/server/file_resolve.odin b/src/server/file_resolve.odin index ebf984d..48835e8 100644 --- a/src/server/file_resolve.odin +++ b/src/server/file_resolve.odin @@ -479,36 +479,24 @@ resolve_node :: proc(node: ^ast.Node, data: ^FileResolveData) { resolve_node(n.poly_params, data) resolve_node(n.align, data) resolve_nodes(n.variants, data) + case ^Enum_Type: + data.position_context.enum_type = n + resolve_node(n.base_type, data) + resolve_nodes(n.fields, data) if data.flag != .None { - for variant in n.variants { - data.symbols[cast(uintptr)variant] = SymbolAndNode { - node = variant, + for field in n.fields { + data.symbols[cast(uintptr)field] = SymbolAndNode { + node = field, symbol = Symbol { range = common.get_token_range( - variant, + field, string(data.document.text), ), }, } } } - case ^Enum_Type: - data.position_context.enum_type = n - resolve_node(n.base_type, data) - resolve_nodes(n.fields, data) - - for field in n.fields { - data.symbols[cast(uintptr)field] = SymbolAndNode { - node = field, - symbol = Symbol { - range = common.get_token_range( - field, - string(data.document.text), - ), - }, - } - } case ^Bit_Set_Type: data.position_context.bitset_type = n resolve_node(n.elem, data) diff --git a/src/server/references.odin b/src/server/references.odin index 1c77e45..0fa739e 100644 --- a/src/server/references.odin +++ b/src/server/references.odin @@ -127,15 +127,24 @@ resolve_references :: proc( found := false for variant in position_context.union_type.variants { if position_in_node(variant, position_context.position) { - symbol = Symbol { - range = common.get_token_range( - variant, - string(document.text), - ), + if ident, ok := variant.derived.(^ast.Ident); ok { + symbol, ok = resolve_location_identifier( + ast_context, + ident^, + ) + reference = ident.name + resolve_flag = .Identifier + + if !ok { + return {}, false + } + + found = true + + break + } else { + return {}, false } - found = true - resolve_flag = .Identifier - break } } if !found { |