mirror of https://github.com/rust-lang/rust
47 lines
912 B
Rust
47 lines
912 B
Rust
//@ run-rustfix
|
|
|
|
use std::ops::Add;
|
|
|
|
struct A<B>(B);
|
|
|
|
impl<B> Add for A<B> where B: Add<Output = B> {
|
|
type Output = Self;
|
|
|
|
fn add(self, rhs: Self) -> Self {
|
|
A(self.0 + rhs.0) //~ ERROR mismatched types
|
|
}
|
|
}
|
|
|
|
struct C<B>(B);
|
|
|
|
impl<B: Add<Output = B>> Add for C<B> {
|
|
type Output = Self;
|
|
|
|
fn add(self, rhs: Self) -> Self {
|
|
Self(self.0 + rhs.0) //~ ERROR mismatched types
|
|
}
|
|
}
|
|
|
|
struct D<B>(B);
|
|
|
|
impl<B: std::ops::Add<Output = B>> Add for D<B> {
|
|
type Output = Self;
|
|
|
|
fn add(self, rhs: Self) -> Self {
|
|
Self(self.0 + rhs.0) //~ ERROR cannot add `B` to `B`
|
|
}
|
|
}
|
|
|
|
struct E<B>(B);
|
|
|
|
impl<B: Add<Output = B>> Add for E<B> where B: Add<Output = B> {
|
|
//~^ ERROR equality constraints are not yet supported in `where` clauses
|
|
type Output = Self;
|
|
|
|
fn add(self, rhs: Self) -> Self {
|
|
Self(self.0 + rhs.0) //~ ERROR mismatched types
|
|
}
|
|
}
|
|
|
|
fn main() {}
|