aboutsummaryrefslogtreecommitdiff
path: root/src/analysis
diff options
context:
space:
mode:
authorDaniel Gavin <danielgavin5@hotmail.com>2021-12-25 13:43:58 +0100
committerDaniel Gavin <danielgavin5@hotmail.com>2021-12-25 13:43:58 +0100
commitbb1379a911f43134b8dc5ed9ec2eebb889b800fb (patch)
tree8eb5090124d0bb4c18d353e1daf1d09d50531f8d /src/analysis
parent74d5978d86d8da1e2f74727965d7d3d3b16c71f1 (diff)
add temp work
Diffstat (limited to 'src/analysis')
-rw-r--r--src/analysis/analysis.odin29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/analysis/analysis.odin b/src/analysis/analysis.odin
index 6fa8d67..c16bdf9 100644
--- a/src/analysis/analysis.odin
+++ b/src/analysis/analysis.odin
@@ -2044,7 +2044,7 @@ get_locals_for_range_stmt :: proc(file: ast.File, stmt: ast.Range_Stmt, ast_cont
if stmt.expr == nil {
return;
}
-
+
if symbol, ok := resolve_type_expression(ast_context, stmt.expr); ok {
#partial switch v in symbol.value {
case index.SymbolMapValue:
@@ -2237,6 +2237,33 @@ clear_locals :: proc(ast_context: ^AstContext) {
clear(&ast_context.usings);
}
+resolve_entire_file :: proc(document: ^common.Document, allocator := context.allocator) -> []^index.Symbol {
+ ast_context := make_ast_context(document.ast, document.imports, document.package_name, document.uri.uri);
+
+ get_globals(document.ast, &ast_context);
+
+ ast_context.current_package = ast_context.document_package;
+
+ symbols := make([]^index.Symbol, allocator);
+
+ for decl in document.ast.decls {
+ switch v in decl.derived {
+ case ast.Proc_Lit:
+ resolve_entire_procedure(v.type, &symbols, allocator);
+ }
+ }
+}
+
+resolve_entire_procedure :: proc(procedure: ^ast.Proc_Type, symbols: ^[]^index.Symbol, allocator := context.allocator) {
+ if procedure == nil {
+ return {};
+ }
+
+ get_locals()
+
+
+}
+
concatenate_symbols_information :: proc(ast_context: ^AstContext, symbol: index.Symbol, is_completion: bool) -> string {
pkg := path.base(symbol.pkg, false, context.temp_allocator);