Skip to content

Commit 55399c1

Browse files
committed
Fix global array type narrow
1 parent 2d8df76 commit 55399c1

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

crates/emmylua_code_analysis/src/compilation/test/flow.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1227,4 +1227,17 @@ end
12271227
"#,
12281228
));
12291229
}
1230+
1231+
#[test]
1232+
fn test_array_flow() {
1233+
let mut ws = VirtualWorkspace::new_with_init_std_lib();
1234+
assert!(ws.check_code_for(
1235+
DiagnosticCode::NeedCheckNil,
1236+
r#"
1237+
for i = 1, #_G.arg do
1238+
print(_G.arg[i].char())
1239+
end
1240+
"#,
1241+
));
1242+
}
12301243
}

crates/emmylua_code_analysis/src/semantic/infer/infer_name.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,12 @@ pub fn get_name_expr_var_ref_id(
6868
let references_index = db.get_reference_index();
6969
let range = name_expr.get_range();
7070
let file_ref = references_index.get_local_reference(&file_id)?;
71-
let decl_id = file_ref.get_decl_id(&range)?;
72-
Some(VarRefId::VarRef(decl_id))
71+
if let Some(decl_id) = file_ref.get_decl_id(&range) {
72+
return Some(VarRefId::VarRef(decl_id));
73+
}
74+
75+
let global_decl_id = db.get_global_index().resolve_global_decl_id(db, name)?;
76+
Some(VarRefId::VarRef(global_decl_id))
7377
}
7478
}
7579
}

0 commit comments

Comments
 (0)