Skip to content

Commit 99d1770

Browse files
committed
fix enum field assign int
1 parent 36cccdb commit 99d1770

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

crates/emmylua_code_analysis/src/diagnostic/test/assign_type_mismatch_test.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,9 @@ mod tests {
8888
"#
8989
));
9090

91-
assert!(!ws.check_code_for_namespace(
91+
// TODO: 解决枚举值运算结果的推断问题
92+
// 暂时没有好的方式去处理这个警告, 在 ts 中, 枚举值运算的结果不是实际值, 但我们目前的结果是实际值, 所以难以处理
93+
assert!(ws.check_code_for_namespace(
9294
DiagnosticCode::AssignTypeMismatch,
9395
r#"
9496
---@enum SubscriberFlags
@@ -639,7 +641,9 @@ return t
639641
#[test]
640642
fn test_issue_295() {
641643
let mut ws = VirtualWorkspace::new();
642-
assert!(!ws.check_code_for(
644+
// TODO: 解决枚举值运算结果的推断问题
645+
// 暂时没有好的方式去处理这个警告, 在 ts 中, 枚举值运算的结果不是实际值, 但我们目前的结果是实际值, 所以难以处理
646+
assert!(ws.check_code_for(
643647
DiagnosticCode::AssignTypeMismatch,
644648
r#"
645649

crates/emmylua_code_analysis/src/semantic/type_check/ref_type.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,11 @@ fn check_ref_enum(
9797
if union_types
9898
.get_types()
9999
.iter()
100-
.all(|t| matches!(t, LuaType::DocIntegerConst(_)))
101-
&& matches!(compact_type, LuaType::Integer)
100+
.all(|t| matches!(t, LuaType::DocIntegerConst(_) | LuaType::IntegerConst(_)))
101+
&& matches!(
102+
compact_type,
103+
LuaType::Integer | LuaType::DocIntegerConst(_) | LuaType::IntegerConst(_)
104+
)
102105
{
103106
return Ok(());
104107
}

0 commit comments

Comments
 (0)