@@ -224,7 +224,6 @@ fn infer_custom_type_member(
224224 let owner = LuaMemberOwner :: Type ( prefix_type_id. clone ( ) ) ;
225225 let index_key = index_expr. get_index_key ( ) . ok_or ( InferFailReason :: None ) ?;
226226 let key: LuaMemberKey = index_key. clone ( ) . into ( ) ;
227- dbg ! ( & db. get_member_index( ) . get_members( & owner) ) ;
228227 if let Some ( member_item) = db. get_member_index ( ) . get_member_item ( & owner, & key) {
229228 return member_item. resolve_type ( db) ;
230229 }
@@ -255,12 +254,9 @@ fn infer_custom_type_member(
255254 if let LuaIndexKey :: Expr ( expr) = index_key {
256255 if let Some ( keys) = expr_to_member_key ( db, cache, & expr) {
257256 let mut result_type = Vec :: new ( ) ;
258- dbg ! ( & keys) ;
259257 for key in keys {
260258 // 解决 enum[enum] | class[class] 的情况
261- if let Some ( member_type) =
262- get_expr_key_members ( db, type_decl, & key, & owner, cache, infer_guard, & index_expr)
263- {
259+ if let Some ( member_type) = get_expr_key_members ( db, & key, & owner) {
264260 if !result_type. contains ( & member_type) {
265261 result_type. push ( member_type) ;
266262 }
@@ -286,19 +282,11 @@ fn infer_custom_type_member(
286282 Err ( InferFailReason :: FieldDotFound )
287283}
288284
289- #[ allow( unused) ]
290285fn get_expr_key_members (
291286 db : & DbIndex ,
292- type_decl : & LuaTypeDecl ,
293287 key : & LuaMemberKey ,
294288 owner : & LuaMemberOwner ,
295- cache : & mut LuaInferCache ,
296- infer_guard : & mut InferGuard ,
297- index_expr : & LuaIndexMemberExpr ,
298289) -> Option < LuaType > {
299- // if !type_decl.is_enum() {
300- // return None;
301- // }
302290 let LuaMemberKey :: Expr ( LuaType :: Ref ( index_id) ) = key else {
303291 return None ;
304292 } ;
@@ -322,90 +310,6 @@ fn get_expr_key_members(
322310 }
323311 }
324312
325- // 此时是 enum[enum] 的情况
326- // if index_type_decl == type_decl {
327- // // 只在包含 [key] 属性时才允许
328- // if !type_decl.is_enum_key() {
329- // return None;
330- // }
331-
332- // match db.get_member_index().get_members(&owner) {
333- // Some(members) => {
334- // for member in members {
335- // db.get_type_index()
336- // .get_type_cache(&member.get_id().into())
337- // .map(|it| it.as_type())
338- // .map(|it| result.push(it.clone()));
339- // }
340- // }
341- // // enum 没有成员时, 返回 unknown
342- // None => {
343- // result.push(LuaType::Unknown);
344- // }
345- // }
346- // }
347-
348- if index_type_decl. is_alias ( ) {
349- // let origin_type = index_type_decl.get_alias_origin(db, None)?;
350- // let mut member_keys = Vec::new();
351- // get_all_member_key(db, index_type_decl, &origin_type, &mut member_keys);
352- // for key in member_keys {
353- // if let Some(member_item) = db.get_member_index().get_member_item(&owner, &key) {
354- // if let Ok(member_type) = member_item.resolve_type(db) {
355- // if !result.contains(&member_type) {
356- // result.push(member_type);
357- // }
358- // }
359- // }
360- // }
361- // dbg!(&member_keys);
362- // dbg!(&origin_type);
363- // match &origin_type {
364- // LuaType::Union(union_type) => {
365- // for typ in union_type.get_types() {
366- // match typ {
367- // LuaType::Ref(id) => {
368- // let type_decl = db.get_type_index().get_type_decl(id)?;
369- // dbg!(&type_decl);
370- // if type_decl.is_enum() {
371- // let a = infer_member_by_member_key(
372- // db,
373- // cache,
374- // typ,
375- // index_expr.clone(),
376- // infer_guard,
377- // );
378- // dbg!(&a);
379- // }
380- // }
381- // _ => {}
382- // }
383- // }
384- // }
385- // _ => {}
386- // }
387-
388- // if let LuaType::MultiLineUnion(types) = &origin_type {
389- // for (typ, _) in types.get_unions() {
390- // let member_key: LuaMemberKey = match typ {
391- // LuaType::DocStringConst(s) => (*s).to_string().into(),
392- // LuaType::IntegerConst(i) => (*i).into(),
393- // _ => continue,
394- // };
395-
396- // if let Some(member_item) =
397- // db.get_member_index().get_member_item(&owner, &member_key)
398- // {
399- // if let Ok(member_type) = member_item.resolve_type(db) {
400- // if !result.contains(&member_type) {
401- // result.push(member_type);
402- // }
403- // }
404- // }
405- // }
406- // }
407- }
408-
409313 return match result. len ( ) {
410314 0 => None ,
411315 1 => Some ( result[ 0 ] . clone ( ) ) ,
0 commit comments