Skip to content

Commit 500880d

Browse files
committed
workaround fix test
1 parent f78ce16 commit 500880d

File tree

2 files changed

+13
-11
lines changed

2 files changed

+13
-11
lines changed

crates/emmylua_code_analysis/src/semantic/generic/tpl_pattern.rs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ use crate::{
88
check_type_compact,
99
db_index::{DbIndex, LuaGenericType, LuaType},
1010
semantic::{member::infer_member_map, LuaInferCache},
11-
InferFailReason, LuaFunctionType, LuaMemberKey, LuaMemberOwner, LuaObjectType, LuaTupleType,
12-
LuaUnionType, VariadicType,
11+
InferFailReason, LuaFunctionType, LuaMemberKey, LuaMemberOwner, LuaObjectType,
12+
LuaSemanticDeclId, LuaTupleType, LuaUnionType, VariadicType,
1313
};
1414

1515
use super::type_substitutor::TypeSubstitutor;
@@ -251,13 +251,20 @@ fn object_tpl_pattern_match_member_owner_match(
251251
1 => v[0].typ.clone(),
252252
_ => {
253253
let mut types = Vec::new();
254-
for m in v {
254+
for m in &v {
255255
types.push(m.typ.clone());
256256
}
257257
LuaType::Union(LuaUnionType::new(types).into())
258258
}
259259
};
260260

261+
// this is a workaround, I need refactor infer member map
262+
if resolve_type.is_unknown() && v.len() > 0 {
263+
if let Some(LuaSemanticDeclId::Member(member_id)) = &v[0].property_owner_id {
264+
return Err(InferFailReason::UnResolveMemberType(*member_id));
265+
}
266+
}
267+
261268
if let Some(_) = resolve_key {
262269
if let Some(field_value) = object.get_field(&k) {
263270
tpl_pattern_match(db, cache, root, field_value, &resolve_type, substitutor)?;

crates/emmylua_code_analysis/src/semantic/infer/infer_call/mod.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -203,14 +203,9 @@ fn collect_func_by_signature(
203203

204204
let mut overloads = signature.overloads.clone();
205205

206-
let signature_fake_func = LuaFunctionType::new(
207-
signature.is_async,
208-
signature.is_colon_define,
209-
signature.get_type_params(),
210-
signature.get_return_type(),
211-
);
212-
213-
overloads.push(signature_fake_func.into());
206+
let signature_fake_func = signature.to_doc_func_type();
207+
208+
overloads.push(signature_fake_func);
214209

215210
if signature.is_generic() {
216211
let func = resolve_signature(db, cache, overloads, call_expr, true, None)?;

0 commit comments

Comments
 (0)