diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2023-03-08 18:27:37 +0100 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2023-03-08 18:27:37 +0100 |
| commit | edbc1c6ea624f7feee2dbf4804543c9329eef738 (patch) | |
| tree | abe426e3a458a7b6e524d83696c2140951880589 /src/server/analysis.odin | |
| parent | 4c5b21feabb5bc6f8442c2b3c5e6d16a8f923e5a (diff) | |
Add support for completion with usings and compound literals
Diffstat (limited to 'src/server/analysis.odin')
| -rw-r--r-- | src/server/analysis.odin | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin index 06d1fd3..ffafa46 100644 --- a/src/server/analysis.odin +++ b/src/server/analysis.odin @@ -1941,12 +1941,7 @@ expand_struct_usings :: proc( field_expr: ^ast.Expr - for name, i in value.names { - - if name == k && v { - field_expr = value.types[i] - } - } + field_expr = value.types[k] if field_expr == nil { continue @@ -2959,16 +2954,17 @@ make_symbol_struct_from_ast :: proc( names := make([dynamic]string, ast_context.allocator) types := make([dynamic]^ast.Expr, ast_context.allocator) - usings := make(map[string]bool, 0, ast_context.allocator) + usings := make(map[int]bool, 0, ast_context.allocator) ranges := make([dynamic]common.Range, 0, ast_context.allocator) for field in v.fields.list { for n in field.names { if identifier, ok := n.derived.(^ast.Ident); ok && field.type != nil { - if identifier.name == "_" { - continue + if .Using in field.flags { + usings[len(types)] = true } + append(&names, identifier.name) if v.poly_params != nil { append( @@ -2978,9 +2974,6 @@ make_symbol_struct_from_ast :: proc( } else { append(&types, field.type) } - if .Using in field.flags { - usings[identifier.name] = true - } append( &ranges, |