File tree Expand file tree Collapse file tree 2 files changed +33
-1
lines changed Expand file tree Collapse file tree 2 files changed +33
-1
lines changed Original file line number Diff line number Diff line change @@ -81,7 +81,7 @@ impl<'a> InferenceContext<'a> {
81
81
let generics = crate :: utils:: generics ( self . db . upcast ( ) , impl_id. into ( ) ) ;
82
82
let substs = Substs :: type_params_for_generics ( & generics) ;
83
83
let ty = self . db . impl_self_ty ( impl_id) . subst ( & substs) ;
84
- if let Some ( ( AdtId :: StructId ( struct_id) , _ ) ) = ty. as_adt ( ) {
84
+ if let Some ( ( AdtId :: StructId ( struct_id) , substs ) ) = ty. as_adt ( ) {
85
85
let ty = self . db . value_ty ( struct_id. into ( ) ) . subst ( & substs) ;
86
86
return Some ( ty) ;
87
87
} else {
Original file line number Diff line number Diff line change @@ -633,3 +633,35 @@ where
633
633
"###
634
634
) ;
635
635
}
636
+
637
+ #[ test]
638
+ fn issue_4953 ( ) {
639
+ assert_snapshot ! (
640
+ infer( r#"
641
+ pub struct Foo(pub i64);
642
+ impl Foo {
643
+ fn test() -> Self { Self(0i64) }
644
+ }
645
+ "# ) ,
646
+ @r###"
647
+ 59..73 '{ Self(0i64) }': Foo
648
+ 61..65 'Self': Foo(i64) -> Foo
649
+ 61..71 'Self(0i64)': Foo
650
+ 66..70 '0i64': i64
651
+ "###
652
+ ) ;
653
+ assert_snapshot ! (
654
+ infer( r#"
655
+ pub struct Foo<T>(pub T);
656
+ impl Foo<i64> {
657
+ fn test() -> Self { Self(0i64) }
658
+ }
659
+ "# ) ,
660
+ @r###"
661
+ 65..79 '{ Self(0i64) }': Foo<i64>
662
+ 67..71 'Self': Foo<i64>(i64) -> Foo<i64>
663
+ 67..77 'Self(0i64)': Foo<i64>
664
+ 72..76 '0i64': i64
665
+ "###
666
+ ) ;
667
+ }
You can’t perform that action at this time.
0 commit comments