@@ -14,7 +14,7 @@ impl LuaMemberIndexItem {
1414 }
1515
1616 pub fn resolve_semantic_decl ( & self , db : & DbIndex ) -> Option < LuaSemanticDeclId > {
17- resolve_member_property ( db, & self )
17+ resolve_member_semantic_id ( db, & self )
1818 }
1919
2020 pub ( super ) fn resolve_member_id ( & self , member_index : & LuaMemberIndex ) -> Option < LuaMemberId > {
@@ -177,7 +177,7 @@ enum MemberTypeResolveState {
177177 FileDecl ,
178178}
179179
180- fn resolve_member_property (
180+ fn resolve_member_semantic_id (
181181 db : & DbIndex ,
182182 member_item : & LuaMemberIndexItem ,
183183) -> Option < LuaSemanticDeclId > {
@@ -201,14 +201,20 @@ fn resolve_member_property(
201201
202202 match resolve_state {
203203 MemberSemanticDeclResolveState :: MetaOrNone => {
204+ let mut last_valid_member =
205+ LuaSemanticDeclId :: Member ( members. first ( ) ?. get_id ( ) ) ;
204206 for member in & members {
205207 let feature = member. get_feature ( ) ;
206208 if feature. is_meta_decl ( ) {
207- return Some ( LuaSemanticDeclId :: Member ( member. get_id ( ) ) ) ;
209+ let semantic_id = LuaSemanticDeclId :: Member ( member. get_id ( ) ) ;
210+ last_valid_member = semantic_id. clone ( ) ;
211+ if check_member_version ( db, semantic_id. clone ( ) ) {
212+ return Some ( semantic_id) ;
213+ }
208214 }
209215 }
210216
211- Some ( LuaSemanticDeclId :: Member ( members . first ( ) ? . get_id ( ) ) )
217+ Some ( last_valid_member )
212218 }
213219 MemberSemanticDeclResolveState :: FirstDefine => {
214220 for member in & members {
@@ -241,3 +247,16 @@ enum MemberSemanticDeclResolveState {
241247 FirstDefine ,
242248 FileDecl ,
243249}
250+
251+ fn check_member_version ( db : & DbIndex , semantic_id : LuaSemanticDeclId ) -> bool {
252+ let Some ( property) = db. get_property_index ( ) . get_property ( & semantic_id) else {
253+ return true ;
254+ } ;
255+
256+ if let Some ( version) = & property. version_conds {
257+ let version_number = db. get_emmyrc ( ) . runtime . version . to_lua_version_number ( ) ;
258+ return version. iter ( ) . any ( |cond| cond. check ( & version_number) ) ;
259+ }
260+
261+ true
262+ }
0 commit comments