aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorDanielGavin <danielgavin5@hotmail.com>2024-10-05 13:33:22 +0200
committerDanielGavin <danielgavin5@hotmail.com>2024-10-05 13:33:22 +0200
commit8da9a96b7e85c6366b8e7286bee4543a9b195d04 (patch)
tree20d71e7f33e0678dc48088cfef3d47fecb4eb3d5 /src/server
parente0dc37746a0cab0cc714212b756cce309f1c9914 (diff)
Fix issue with comp literals and `&` in type
Diffstat (limited to 'src/server')
-rw-r--r--src/server/analysis.odin10
1 files changed, 3 insertions, 7 deletions
diff --git a/src/server/analysis.odin b/src/server/analysis.odin
index 36d6781..e153cac 100644
--- a/src/server/analysis.odin
+++ b/src/server/analysis.odin
@@ -219,13 +219,14 @@ resolve_type_comp_literal :: proc(
set_ast_package_set_scoped(ast_context, current_symbol.pkg)
+
for elem, element_index in current_comp_lit.elems {
if !position_in_node(elem, position_context.position) {
continue
}
if field_value, ok := elem.derived.(^ast.Field_Value); ok { //named
- if comp_lit, ok := field_value.value.derived.(^ast.Comp_Lit); ok {
+ if comp_lit, ref_n, ok := common.unwrap_comp_literal(field_value.value); ok {
if s, ok := current_symbol.value.(SymbolStructValue); ok {
for name, i in s.names {
if name == field_value.field.derived.(^ast.Ident).name {
@@ -250,12 +251,7 @@ resolve_type_comp_literal :: proc(
}
}
- return resolve_type_comp_literal(
- ast_context,
- position_context,
- symbol,
- cast(^ast.Comp_Lit)field_value.value,
- )
+ return resolve_type_comp_literal(ast_context, position_context, symbol, comp_lit)
}
}
}