diff options
| author | Daniel Gavin <danielgavin5@hotmail.com> | 2021-04-29 21:01:55 +0200 |
|---|---|---|
| committer | Daniel Gavin <danielgavin5@hotmail.com> | 2021-04-29 21:01:55 +0200 |
| commit | 9d21cc021c54d9938835c353d1bd246d9a7b15f7 (patch) | |
| tree | d12c2911746dd517c75ad77c43eb7c2f5055a03f /src/server | |
| parent | 637b892fd53e61e320e94be0e5b22137ad92a7ba (diff) | |
i keep forgetting to switch to tabs...
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/signature.odin | 136 |
1 files changed, 68 insertions, 68 deletions
diff --git a/src/server/signature.odin b/src/server/signature.odin index b2efc8d..883bd2e 100644 --- a/src/server/signature.odin +++ b/src/server/signature.odin @@ -1,69 +1,69 @@ -package server
-
-import "core:odin/parser"
-import "core:odin/ast"
-import "core:odin/tokenizer"
-import "core:fmt"
-import "core:log"
-import "core:strings"
-import "core:path"
-import "core:mem"
-import "core:strconv"
-import "core:path/filepath"
-import "core:sort"
-import "core:slice"
-
-import "shared:common"
-import "shared:index"
-
-
-
-get_signature_information :: proc(document: ^Document, position: common.Position) -> (SignatureHelp, bool) {
-
- signature_help: SignatureHelp;
-
- ast_context := make_ast_context(document.ast, document.imports, document.package_name, document.uri.uri);
-
- position_context, ok := get_document_position_context(document, position, .SignatureHelp);
-
- if !ok {
- return signature_help, true;
- }
-
- if position_context.call == nil {
- return signature_help, true;
- }
-
- get_globals(document.ast, &ast_context);
-
- if position_context.function != nil {
- get_locals(document.ast, position_context.function, &ast_context, &position_context);
- }
-
- call: index.Symbol;
- call, ok = resolve_type_expression(&ast_context, position_context.call);
-
- signature_information := make([dynamic]SignatureInformation, context.temp_allocator);
-
- if _, ok := call.value.(index.SymbolProcedureValue); ok {
- info := SignatureInformation {
- label = concatenate_symbols_information(&ast_context, call, false),
- documentation = call.doc,
- };
- append(&signature_information, info);
- } else if value, ok := call.value.(index.SymbolAggregateValue); ok {
- for symbol in value.symbols {
- info := SignatureInformation {
- label = concatenate_symbols_information(&ast_context, symbol, false),
- documentation = symbol.doc,
- };
- append(&signature_information, info);
- }
- }
-
- signature_help.signatures = signature_information[:];
- signature_help.activeSignature = 0;
- signature_help.activeParameter = 0;
-
- return signature_help, true;
+package server + +import "core:odin/parser" +import "core:odin/ast" +import "core:odin/tokenizer" +import "core:fmt" +import "core:log" +import "core:strings" +import "core:path" +import "core:mem" +import "core:strconv" +import "core:path/filepath" +import "core:sort" +import "core:slice" + +import "shared:common" +import "shared:index" + + + +get_signature_information :: proc(document: ^Document, position: common.Position) -> (SignatureHelp, bool) { + + signature_help: SignatureHelp; + + ast_context := make_ast_context(document.ast, document.imports, document.package_name, document.uri.uri); + + position_context, ok := get_document_position_context(document, position, .SignatureHelp); + + if !ok { + return signature_help, true; + } + + if position_context.call == nil { + return signature_help, true; + } + + get_globals(document.ast, &ast_context); + + if position_context.function != nil { + get_locals(document.ast, position_context.function, &ast_context, &position_context); + } + + call: index.Symbol; + call, ok = resolve_type_expression(&ast_context, position_context.call); + + signature_information := make([dynamic]SignatureInformation, context.temp_allocator); + + if _, ok := call.value.(index.SymbolProcedureValue); ok { + info := SignatureInformation { + label = concatenate_symbols_information(&ast_context, call, false), + documentation = call.doc, + }; + append(&signature_information, info); + } else if value, ok := call.value.(index.SymbolAggregateValue); ok { + for symbol in value.symbols { + info := SignatureInformation { + label = concatenate_symbols_information(&ast_context, symbol, false), + documentation = symbol.doc, + }; + append(&signature_information, info); + } + } + + signature_help.signatures = signature_information[:]; + signature_help.activeSignature = 0; + signature_help.activeParameter = 0; + + return signature_help, true; }
\ No newline at end of file |