aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2025-06-30 15:22:54 +0200
committerDanielGavin <danielgavin5@hotmail.com>2025-06-30 15:22:54 +0200
commit080dadc4c7e642b960059f8c9e1dc19516dc949e (patch)
treef7771b03f18d8d28810561db9d413081f09bf46f /src/server
parent2be7985b87186ac70baa7fe9acf048d9326e9101 (diff)
resolve_location_selector didn't handle SymbolEnumValue
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin34
1 files changed, 9 insertions, 25 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index cd16259..c7c5791 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -1230,7 +1230,7 @@ pop_local_group :: proc(ast_context: ^AstContext) {
pop(&ast_context.locals)
}
-get_local_group :: proc(ast_context: ^AstContext) -> ^LocalGroup {
+get_local_group :: proc(ast_context: ^AstContext) -> ^LocalGroup {
if len(ast_context.locals) == 0 {
add_local_group(ast_context)
}
@@ -2219,6 +2219,12 @@ resolve_location_selector :: proc(ast_context: ^AstContext, selector_expr: ^ast.
}
#partial switch v in symbol.value {
+ case SymbolEnumValue:
+ for name, i in v.names {
+ if strings.compare(name, field) == 0 {
+ symbol.range = v.ranges[i]
+ }
+ }
case SymbolStructValue:
for name, i in v.names {
if strings.compare(name, field) == 0 {
@@ -3166,18 +3172,7 @@ get_locals_using :: proc(expr: ^ast.Expr, ast_context: ^AstContext) {
selector.expr = expr
selector.field = new_type(ast.Ident, v.types[i].pos, v.types[i].end, ast_context.allocator)
selector.field.name = name
- store_local(
- ast_context,
- expr,
- selector,
- 0,
- name,
- false,
- ast_context.non_mutable_only,
- true,
- "",
- false,
- )
+ store_local(ast_context, expr, selector, 0, name, false, ast_context.non_mutable_only, true, "", false)
}
case SymbolBitFieldValue:
for name, i in v.names {
@@ -3185,18 +3180,7 @@ get_locals_using :: proc(expr: ^ast.Expr, ast_context: ^AstContext) {
selector.expr = expr
selector.field = new_type(ast.Ident, v.types[i].pos, v.types[i].end, ast_context.allocator)
selector.field.name = name
- store_local(
- ast_context,
- expr,
- selector,
- 0,
- name,
- false,
- ast_context.non_mutable_only,
- true,
- "",
- false,
- )
+ store_local(ast_context, expr, selector, 0, name, false, ast_context.non_mutable_only, true, "", false)
}
}
}