aboutsummaryrefslogtreecommitdiff
path: root/src/server/analysis.odin
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2025-07-03 11:47:56 +0200
committerGitHub <noreply@github.com>2025-07-03 11:47:56 +0200
commit718fee642d34da5d43fe9bdeee54abdb34385bb8 (patch)
tree79b2170876a8492f7a427c637b3407eedfd9c48a /src/server/analysis.odin
parent4ec40cec010b4c8c28fe4bb428c6b53a089a7d30 (diff)
parent5348ee2fc5b7609e58baaa835b4fb55d5c13fc3e (diff)
Merge pull request #710 from BradLewis/feat/improve-enum-completions
Enum completion improvements
Diffstat (limited to 'src/server/analysis.odin')
-rw-r--r--src/server/analysis.odin15
1 files changed, 11 insertions, 4 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index e7496da..9f7018f 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -3830,10 +3830,17 @@ unwrap_enum :: proc(ast_context: ^AstContext, node: ^ast.Expr) -> (SymbolEnumVal
}
if enum_symbol, ok := resolve_type_expression(ast_context, node); ok {
- if enum_value, ok := enum_symbol.value.(SymbolEnumValue); ok {
- return enum_value, true
- } else if union_value, ok := enum_symbol.value.(SymbolUnionValue); ok {
- return unwrap_super_enum(ast_context, union_value)
+ #partial switch value in enum_symbol.value {
+ case SymbolEnumValue:
+ return value, true
+ case SymbolUnionValue:
+ return unwrap_super_enum(ast_context, value)
+ case SymbolSliceValue:
+ return unwrap_enum(ast_context, value.expr)
+ case SymbolFixedArrayValue:
+ return unwrap_enum(ast_context, value.expr)
+ case SymbolDynamicArrayValue:
+ return unwrap_enum(ast_context, value.expr)
}
}