summaryrefslogtreecommitdiffstats
path: root/src/test/ui/associated-types/issue-37883.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/associated-types/issue-37883.rs')
-rw-r--r--src/test/ui/associated-types/issue-37883.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/ui/associated-types/issue-37883.rs b/src/test/ui/associated-types/issue-37883.rs
new file mode 100644
index 000000000..d854f6af3
--- /dev/null
+++ b/src/test/ui/associated-types/issue-37883.rs
@@ -0,0 +1,25 @@
+// check-pass
+
+use std::ops::Mul;
+
+fn main() {}
+
+trait Ring {}
+trait Real: Ring {}
+
+trait Module: Sized + Mul<<Self as Module>::Ring, Output = Self> {
+ type Ring: Ring;
+}
+
+trait EuclideanSpace {
+ type Coordinates: Module<Ring = Self::Real>;
+ type Real: Real;
+}
+
+trait Translation<E: EuclideanSpace> {
+ fn to_vector(&self) -> E::Coordinates;
+
+ fn powf(&self, n: <E::Coordinates as Module>::Ring) -> E::Coordinates {
+ self.to_vector() * n
+ }
+}