diff options
Diffstat (limited to 'src/test/ui/type/type-unsatisfiable.rs')
-rw-r--r-- | src/test/ui/type/type-unsatisfiable.rs | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/src/test/ui/type/type-unsatisfiable.rs b/src/test/ui/type/type-unsatisfiable.rs deleted file mode 100644 index 7fbbb50dc..000000000 --- a/src/test/ui/type/type-unsatisfiable.rs +++ /dev/null @@ -1,59 +0,0 @@ -// revisions: lib usage -//[lib] compile-flags: --crate-type=lib -//[lib] build-pass - -use std::ops::Sub; -trait Vector2 { - type ScalarType; - - fn from_values(x: Self::ScalarType, y: Self::ScalarType) -> Self - where - Self: Sized; - - fn x(&self) -> Self::ScalarType; - fn y(&self) -> Self::ScalarType; -} - -impl<T> Sub for dyn Vector2<ScalarType = T> -where - T: Sub<Output = T>, - (dyn Vector2<ScalarType = T>): Sized, -{ - type Output = dyn Vector2<ScalarType = T>; - - fn sub(self, rhs: Self) -> Self::Output { - Self::from_values(self.x() - rhs.x(), self.y() - rhs.y()) - } -} - -struct Vec2 { - x: i32, - y: i32, -} - -impl Vector2 for Vec2 { - type ScalarType = i32; - - fn from_values(x: Self::ScalarType, y: Self::ScalarType) -> Self - where - Self: Sized, - { - Self { x, y } - } - - fn x(&self) -> Self::ScalarType { - self.x - } - fn y(&self) -> Self::ScalarType { - self.y - } -} - -#[cfg(usage)] -fn main() { - let hey: Box<dyn Vector2<ScalarType = i32>> = Box::new(Vec2 { x: 1, y: 2 }); - let word: Box<dyn Vector2<ScalarType = i32>> = Box::new(Vec2 { x: 1, y: 2 }); - - let bar = *hey - *word; - //[usage]~^ ERROR cannot subtract -} |