aboutsummaryrefslogtreecommitdiff
path: root/src/server/document_symbols.odin
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2022-03-04 12:17:00 +0100
committerDaniel Gavin <danielgavin5@hotmail.com>2022-03-04 12:17:00 +0100
commit58287455d64ab16091522bf8a358b079ef05daad (patch)
tree7b6655d6d34b5ad6d719523e4938b8002c43d8ab /src/server/document_symbols.odin
parent63d0bd412a8817445d6dc18e79d5d54c94caf401 (diff)
strip colons and update ast to use unions
Diffstat (limited to 'src/server/document_symbols.odin')
-rw-r--r--src/server/document_symbols.odin56
1 files changed, 28 insertions, 28 deletions
diff --git a/src/server/document_symbols.odin b/src/server/document_symbols.odin
index 7105465..667b94a 100644
--- a/src/server/document_symbols.odin
+++ b/src/server/document_symbols.odin
@@ -21,22 +21,22 @@ import "shared:analysis"
get_document_symbols :: proc(document: ^common.Document) -> []DocumentSymbol {
- using analysis;
+ using analysis
- ast_context := make_ast_context(document.ast, document.imports, document.package_name, document.uri.uri);
+ ast_context := make_ast_context(document.ast, document.imports, document.package_name, document.uri.uri)
- get_globals(document.ast, &ast_context);
+ get_globals(document.ast, &ast_context)
- symbols := make([dynamic]DocumentSymbol, context.temp_allocator);
+ symbols := make([dynamic]DocumentSymbol, context.temp_allocator)
- package_symbol: DocumentSymbol;
+ package_symbol: DocumentSymbol
if len(document.ast.decls) == 0 {
- return {};
+ return {}
}
- package_symbol.kind = .Package;
- package_symbol.name = path.base(document.package_name, false, context.temp_allocator);
+ package_symbol.kind = .Package
+ package_symbol.name = path.base(document.package_name, false, context.temp_allocator)
package_symbol.range = {
start = {
line = document.ast.decls[0].pos.line,
@@ -44,35 +44,35 @@ get_document_symbols :: proc(document: ^common.Document) -> []DocumentSymbol {
end = {
line = document.ast.decls[len(document.ast.decls) - 1].end.line,
},
- };
- package_symbol.selectionRange = package_symbol.range;
+ }
+ package_symbol.selectionRange = package_symbol.range
- children_symbols := make([dynamic]DocumentSymbol, context.temp_allocator);
+ children_symbols := make([dynamic]DocumentSymbol, context.temp_allocator)
for k, global in ast_context.globals {
- symbol: DocumentSymbol;
- symbol.range = common.get_token_range(global.expr, ast_context.file.src);
- symbol.selectionRange = symbol.range;
- symbol.name = k;
-
- switch v in global.expr.derived {
- case ast.Struct_Type:
- symbol.kind = .Struct;
- case ast.Proc_Lit, ast.Proc_Group:
- symbol.kind = .Function;
- case ast.Enum_Type, ast.Union_Type:
- symbol.kind = .Enum;
+ symbol: DocumentSymbol
+ symbol.range = common.get_token_range(global.expr, ast_context.file.src)
+ symbol.selectionRange = symbol.range
+ symbol.name = k
+
+ #partial switch v in global.expr.derived {
+ case ^ast.Struct_Type:
+ symbol.kind = .Struct
+ case ^ast.Proc_Lit, ^ast.Proc_Group:
+ symbol.kind = .Function
+ case ^ast.Enum_Type, ^ast.Union_Type:
+ symbol.kind = .Enum
case:
- symbol.kind = .Variable;
+ symbol.kind = .Variable
}
- append(&children_symbols, symbol);
+ append(&children_symbols, symbol)
}
- package_symbol.children = children_symbols[:];
+ package_symbol.children = children_symbols[:]
- append(&symbols, package_symbol);
+ append(&symbols, package_symbol)
- return symbols[:];
+ return symbols[:]
}