File tree Expand file tree Collapse file tree 2 files changed +36
-10
lines changed
crates/emmylua_ls/src/handlers Expand file tree Collapse file tree 2 files changed +36
-10
lines changed Original file line number Diff line number Diff line change @@ -435,18 +435,20 @@ fn get_super_member_id(
435
435
member_key : & LuaMemberKey ,
436
436
infer_guard : & mut InferGuard ,
437
437
) -> Option < LuaMemberId > {
438
- if let LuaType :: Ref ( super_type_id) = & super_type {
439
- infer_guard. check ( super_type_id) . ok ( ) ?;
440
- let member_map = semantic_model. get_member_info_map ( & super_type) ?;
441
-
442
- if let Some ( member_infos) = member_map. get ( & member_key) {
443
- let first_property = member_infos. first ( ) ?. property_owner_id . clone ( ) ?;
444
- if let LuaSemanticDeclId :: Member ( member_id) = first_property {
445
- return Some ( member_id) ;
446
- }
438
+ let super_type_id = match & super_type {
439
+ LuaType :: Ref ( id) => id,
440
+ LuaType :: Generic ( generic) => generic. get_base_type_id_ref ( ) ,
441
+ _ => return None ,
442
+ } ;
443
+ infer_guard. check ( super_type_id) . ok ( ) ?;
444
+ let member_map = semantic_model. get_member_info_map ( & super_type) ?;
445
+
446
+ if let Some ( member_infos) = member_map. get ( & member_key) {
447
+ let first_property = member_infos. first ( ) ?. property_owner_id . clone ( ) ?;
448
+ if let LuaSemanticDeclId :: Member ( member_id) = first_property {
449
+ return Some ( member_id) ;
447
450
}
448
451
}
449
-
450
452
None
451
453
}
452
454
Original file line number Diff line number Diff line change @@ -319,4 +319,28 @@ mod tests {
319
319
. unwrap ( ) ;
320
320
assert_eq ! ( result. len( ) , 1 ) ;
321
321
}
322
+
323
+ #[ test]
324
+ fn test_generic_type_override ( ) {
325
+ let mut ws = ProviderVirtualWorkspace :: new ( ) ;
326
+ ws. def (
327
+ r#"
328
+ ---@class A<T>
329
+ ---@field aaa fun(a: integer): integer
330
+ "# ,
331
+ ) ;
332
+ let result = ws
333
+ . check_inlay_hint (
334
+ r#"
335
+ ---@class B<T>: A<T>
336
+ local B
337
+
338
+ function B:aaa(a)
339
+ return a
340
+ end
341
+ "# ,
342
+ )
343
+ . unwrap ( ) ;
344
+ assert_eq ! ( result. len( ) , 1 ) ;
345
+ }
322
346
}
You can’t perform that action at this time.
0 commit comments