aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin10
-rw-r--r--src/server/collector.odin3
-rw-r--r--src/server/semantic_tokens.odin1
3 files changed, 13 insertions, 1 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index db37ef7..7798be9 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -1405,7 +1405,8 @@ resolve_selector_expression :: proc(ast_context: ^AstContext, node: ^ast.Selecto
set_ast_package_from_symbol_scoped(ast_context, selector)
ok := internal_resolve_type_expression(ast_context, s.expr, &symbol)
- symbol.type = .Variable
+ symbol.type = .Field
+ symbol.flags |= {.Mutable}
return symbol, ok
} else {
value := SymbolFixedArrayValue {
@@ -2457,6 +2458,12 @@ resolve_symbol_return :: proc(ast_context: ^AstContext, symbol: Symbol, ok := tr
if symbol.type == .Variable {
ret.type = symbol.type
}
+ if .Variable in symbol.flags {
+ ret.flags |= {.Variable}
+ }
+ if .Mutable in symbol.flags {
+ ret.flags |= {.Mutable}
+ }
return ret, ok
}
@@ -2489,6 +2496,7 @@ resolve_unresolved_symbol :: proc(ast_context: ^AstContext, symbol: ^Symbol) ->
symbol.signature = ret.signature
symbol.value = ret.value
symbol.pkg = ret.pkg
+ symbol.flags |= ret.flags
} else {
return false
}
diff --git a/src/server/collector.odin b/src/server/collector.odin
index ff1c791..3b52ca2 100644
--- a/src/server/collector.odin
+++ b/src/server/collector.odin
@@ -745,6 +745,9 @@ collect_symbols :: proc(collection: ^SymbolCollection, file: ast.File, uri: stri
symbol.flags |= {.Variable}
}
+ if .Mutable in expr.flags {
+ symbol.flags |= {.Mutable}
+ }
pkg: ^SymbolPackage
ok: bool
diff --git a/src/server/semantic_tokens.odin b/src/server/semantic_tokens.odin
index 7d6b653..60042cd 100644
--- a/src/server/semantic_tokens.odin
+++ b/src/server/semantic_tokens.odin
@@ -423,6 +423,7 @@ visit_proc_type :: proc(node: ^ast.Proc_Type, builder: ^SemanticTokenBuilder) {
}
visit_node(param.type, builder)
+ visit_node(param.default_value, builder)
}
}