aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin28
-rw-r--r--src/server/definition.odin18
-rw-r--r--src/server/documents.odin2
-rw-r--r--src/server/memory_index.odin2
-rw-r--r--src/server/snippets.odin6
-rw-r--r--src/server/unmarshal.odin8
6 files changed, 35 insertions, 29 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index 2630b79..e354d1d 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -868,8 +868,10 @@ resolve_function_overload :: proc(
candidates := make([dynamic]Symbol, context.temp_allocator)
for arg_expr in group.args {
- next_fn: if f, ok := resolve_type_expression(ast_context, arg_expr);
- ok {
+ next_fn: if f, ok := internal_resolve_type_expression(
+ ast_context,
+ arg_expr,
+ ); ok {
if call_expr == nil || len(call_expr.args) == 0 {
append(&candidates, f)
break next_fn
@@ -903,7 +905,7 @@ resolve_function_overload :: proc(
//named parameter
if field, is_field := arg.derived.(^ast.Field_Value);
is_field {
- call_symbol, ok = resolve_type_expression(
+ call_symbol, ok = internal_resolve_type_expression(
ast_context,
field.value,
)
@@ -921,7 +923,7 @@ resolve_function_overload :: proc(
break next_fn
}
} else {
- call_symbol, ok = resolve_type_expression(
+ call_symbol, ok = internal_resolve_type_expression(
ast_context,
arg,
)
@@ -935,7 +937,7 @@ resolve_function_overload :: proc(
if len(p.return_types) != 1 {
break next_fn
}
- if s, ok := resolve_type_expression(
+ if s, ok := internal_resolve_type_expression(
ast_context,
p.return_types[0].type,
); ok {
@@ -944,12 +946,12 @@ resolve_function_overload :: proc(
}
if procedure.arg_types[i].type != nil {
- arg_symbol, ok = resolve_type_expression(
+ arg_symbol, ok = internal_resolve_type_expression(
ast_context,
procedure.arg_types[i].type,
)
} else {
- arg_symbol, ok = resolve_type_expression(
+ arg_symbol, ok = internal_resolve_type_expression(
ast_context,
procedure.arg_types[i].default_value,
)
@@ -1172,7 +1174,8 @@ internal_resolve_type_expression :: proc(
case ^Binary_Expr:
return resolve_first_symbol_from_binary_expression(ast_context, v)
case ^Ident:
- return resolve_type_identifier(ast_context, v^)
+ delete_key(&ast_context.recursion_map, v)
+ return internal_resolve_type_identifier(ast_context, v^)
case ^Basic_Lit:
return resolve_basic_lit(ast_context, v^)
case ^Type_Cast:
@@ -1514,7 +1517,6 @@ resolve_type_identifier :: proc(
Symbol,
bool,
) {
- clear(&ast_context.recursion_map)
return internal_resolve_type_identifier(ast_context, node)
}
@@ -3557,7 +3559,7 @@ resolve_entire_decl :: proc(
}
case ^ast.Selector_Expr:
if symbol, ok := resolve_type_expression(ast_context, &v.node);
- ok {
+ ok {
data.symbols[cast(uintptr)node] = SymbolAndNode {
node = v,
symbol = symbol,
@@ -3570,7 +3572,7 @@ resolve_entire_decl :: proc(
}
case ^ast.Call_Expr:
if symbol, ok := resolve_type_expression(ast_context, &v.node);
- ok {
+ ok {
data.symbols[cast(uintptr)node] = SymbolAndNode {
node = v,
symbol = symbol,
@@ -3597,7 +3599,7 @@ resolve_entire_decl :: proc(
)
if symbol, ok := resolve_location_selector(ast_context, v);
- ok {
+ ok {
data.symbols[cast(uintptr)node] = SymbolAndNode {
node = v.field,
symbol = symbol,
@@ -3641,7 +3643,7 @@ resolve_entire_decl :: proc(
}
if symbol, ok := resolve_location_identifier(ast_context, v^);
- ok {
+ ok {
data.symbols[cast(uintptr)node] = SymbolAndNode {
node = v,
symbol = symbol,
diff --git a/src/server/definition.odin b/src/server/definition.odin
index 309cde1..fbea155 100644
--- a/src/server/definition.odin
+++ b/src/server/definition.odin
@@ -67,9 +67,9 @@ get_definition_location :: proc(
if position_in_node(base, position_context.position) {
if resolved, ok := resolve_location_identifier(
- &ast_context,
- ident^,
- ); ok {
+ &ast_context,
+ ident^,
+ ); ok {
location.range = resolved.range
if resolved.uri == "" {
@@ -88,17 +88,17 @@ get_definition_location :: proc(
}
if resolved, ok := resolve_location_selector(
- &ast_context,
- position_context.selector_expr,
- ); ok {
+ &ast_context,
+ position_context.selector_expr,
+ ); ok {
location.range = resolved.range
uri = resolved.uri
}
} else if position_context.identifier != nil {
if resolved, ok := resolve_location_identifier(
- &ast_context,
- position_context.identifier.derived.(^ast.Ident)^,
- ); ok {
+ &ast_context,
+ position_context.identifier.derived.(^ast.Ident)^,
+ ); ok {
location.range = resolved.range
uri = resolved.uri
} else {
diff --git a/src/server/documents.odin b/src/server/documents.odin
index 5adfdfb..65b176e 100644
--- a/src/server/documents.odin
+++ b/src/server/documents.odin
@@ -456,7 +456,7 @@ parse_imports :: proc(document: ^Document, config: ^common.Config) {
//collection specified
if i := strings.index(imp.fullpath, ":");
- i != -1 && i > 1 && i < len(imp.fullpath) - 1 {
+ i != -1 && i > 1 && i < len(imp.fullpath) - 1 {
if len(imp.fullpath) < 2 {
continue
}
diff --git a/src/server/memory_index.odin b/src/server/memory_index.odin
index f609ca2..a211b94 100644
--- a/src/server/memory_index.odin
+++ b/src/server/memory_index.odin
@@ -65,7 +65,7 @@ memory_index_fuzzy_search :: proc(
if pkg, ok := index.collection.packages[pkg]; ok {
for _, symbol in pkg {
if score, ok := common.fuzzy_match(fuzzy_matcher, symbol.name);
- ok == 1 {
+ ok == 1 {
result := FuzzyResult {
symbol = symbol,
score = score,
diff --git a/src/server/snippets.odin b/src/server/snippets.odin
index c6a93aa..cd790a9 100644
--- a/src/server/snippets.odin
+++ b/src/server/snippets.odin
@@ -17,7 +17,11 @@ snippets: map[string]Snippet_Info = {
packages = []string{"fmt"},
detail = "println",
},
- "if" = {insert = "if ${1} {\n\t${0}\n}", packages = {}, detail = "if statement"},
+ "if" = {
+ insert = "if ${1} {\n\t${0}\n}",
+ packages = {},
+ detail = "if statement",
+ },
"forr" = {
insert = "for ${2:elem} in ${1:range} {\n\t${0}\n}",
packages = {},
diff --git a/src/server/unmarshal.odin b/src/server/unmarshal.odin
index bda15a7..7f520fc 100644
--- a/src/server/unmarshal.odin
+++ b/src/server/unmarshal.odin
@@ -41,10 +41,10 @@ unmarshal :: proc(
//TEMP most likely have to rewrite the entire unmarshal using tags instead, because i sometimes have to support names like 'context', which can't be written like that
if field[len(field) - 1] == '_' {
if ret := unmarshal(
- j[field[:len(field) - 1]],
- a,
- allocator,
- ); ret != nil {
+ j[field[:len(field) - 1]],
+ a,
+ allocator,
+ ); ret != nil {
return ret
}
} else {