File tree Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Expand file tree Collapse file tree 1 file changed +47
-0
lines changed Original file line number Diff line number Diff line change @@ -3469,3 +3469,50 @@ pub trait Deserialize {
34693469 "# ,
34703470 ) ;
34713471}
3472+
3473+ #[ test]
3474+ fn bin_op_adt_with_rhs_primitive ( ) {
3475+ check_infer_with_mismatches (
3476+ r#"
3477+ #[lang = "add"]
3478+ pub trait Add<Rhs = Self> {
3479+ type Output;
3480+ fn add(self, rhs: Rhs) -> Self::Output;
3481+ }
3482+
3483+ struct Wrapper(u32);
3484+ impl Add<u32> for Wrapper {
3485+ type Output = Self;
3486+ fn add(self, rhs: u32) -> Wrapper {
3487+ Wrapper(rhs)
3488+ }
3489+ }
3490+ fn main(){
3491+ let wrapped = Wrapper(10);
3492+ let num: u32 = 2;
3493+ let res = wrapped + num;
3494+
3495+ }"# ,
3496+ expect ! [ [ r#"
3497+ 72..76 'self': Self
3498+ 78..81 'rhs': Rhs
3499+ 192..196 'self': Wrapper
3500+ 198..201 'rhs': u32
3501+ 219..247 '{ ... }': Wrapper
3502+ 229..236 'Wrapper': Wrapper(u32) -> Wrapper
3503+ 229..241 'Wrapper(rhs)': Wrapper
3504+ 237..240 'rhs': u32
3505+ 259..345 '{ ...um; }': ()
3506+ 269..276 'wrapped': Wrapper
3507+ 279..286 'Wrapper': Wrapper(u32) -> Wrapper
3508+ 279..290 'Wrapper(10)': Wrapper
3509+ 287..289 '10': u32
3510+ 300..303 'num': u32
3511+ 311..312 '2': u32
3512+ 322..325 'res': Wrapper
3513+ 328..335 'wrapped': Wrapper
3514+ 328..341 'wrapped + num': Wrapper
3515+ 338..341 'num': u32
3516+ "# ] ] ,
3517+ )
3518+ }
You can’t perform that action at this time.
0 commit comments