@@ -7,15 +7,17 @@ mod resolve_closure;
77use crate :: {
88 db_index:: { DbIndex , LuaDeclId , LuaMemberId , LuaSignatureId } ,
99 profile:: Profile ,
10- FileId , InferFailReason , LuaSemanticDeclId ,
10+ FileId , InferFailReason , LuaMemberFeature , LuaSemanticDeclId ,
1111} ;
1212use check_reason:: { resolve_all_reason, resolve_as_any} ;
13- use emmylua_parser:: { LuaAssignStat , LuaCallExpr , LuaExpr , LuaFuncStat , LuaTableField } ;
13+ use emmylua_parser:: {
14+ LuaAssignStat , LuaCallExpr , LuaExpr , LuaFuncStat , LuaTableExpr , LuaTableField ,
15+ } ;
1416use infer_manager:: InferCacheManager ;
1517pub use merge_type:: { merge_decl_expr_type, merge_member_type} ;
1618use resolve:: {
1719 try_resolve_decl, try_resolve_iter_var, try_resolve_member, try_resolve_module,
18- try_resolve_module_ref, try_resolve_return_point,
20+ try_resolve_module_ref, try_resolve_return_point, try_resolve_table_field ,
1921} ;
2022use resolve_closure:: {
2123 try_resolve_closure_params, try_resolve_closure_parent_params, try_resolve_closure_return,
@@ -92,6 +94,9 @@ fn try_resolve(
9294 try_resolve_closure_parent_params ( db, config, un_resolve_closure_params)
9395 . unwrap_or ( false )
9496 }
97+ UnResolve :: TableField ( un_resolve_table_field) => {
98+ try_resolve_table_field ( db, config, un_resolve_table_field) . unwrap_or ( false )
99+ }
95100 UnResolve :: None => continue ,
96101 } ;
97102
@@ -116,6 +121,7 @@ pub enum UnResolve {
116121 ClosureReturn ( Box < UnResolveClosureReturn > ) ,
117122 ClosureParentParams ( Box < UnResolveParentClosureParams > ) ,
118123 ModuleRef ( Box < UnResolveModuleRef > ) ,
124+ TableField ( Box < UnResolveTableField > ) ,
119125}
120126
121127#[ allow( dead_code) ]
@@ -140,6 +146,7 @@ impl UnResolve {
140146 UnResolve :: ClosureParentParams ( un_resolve_closure_params) => {
141147 Some ( un_resolve_closure_params. file_id )
142148 }
149+ UnResolve :: TableField ( un_resolve_table_field) => Some ( un_resolve_table_field. file_id ) ,
143150 UnResolve :: ModuleRef ( _) => None ,
144151 UnResolve :: None => None ,
145152 }
@@ -279,3 +286,18 @@ impl From<UnResolveParentClosureParams> for UnResolve {
279286 UnResolve :: ClosureParentParams ( Box :: new ( un_resolve_closure_params) )
280287 }
281288}
289+
290+ #[ derive( Debug ) ]
291+ pub struct UnResolveTableField {
292+ pub file_id : FileId ,
293+ pub table_expr : LuaTableExpr ,
294+ pub field : LuaTableField ,
295+ pub decl_feature : LuaMemberFeature ,
296+ pub reason : InferFailReason ,
297+ }
298+
299+ impl From < UnResolveTableField > for UnResolve {
300+ fn from ( un_resolve_table_field : UnResolveTableField ) -> Self {
301+ UnResolve :: TableField ( Box :: new ( un_resolve_table_field) )
302+ }
303+ }
0 commit comments