summaryrefslogtreecommitdiffstats
path: root/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs')
-rw-r--r--src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs b/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs
new file mode 100644
index 000000000..549fc8fc6
--- /dev/null
+++ b/src/test/ui/associated-types/associated-types-projection-to-unrelated-trait-in-method-without-default.rs
@@ -0,0 +1,30 @@
+// run-rustfix
+// Check that we get an error when you use `<Self as Get>::Value` in
+// the trait definition even if there is no default method.
+
+trait Get {
+ type Value;
+}
+
+trait Other {
+ fn okay<U:Get>(&self, foo: U, bar: <Self as Get>::Value);
+ //~^ ERROR E0277
+}
+
+impl Get for () {
+ type Value = f32;
+}
+
+impl Get for f64 {
+ type Value = u32;
+}
+
+impl Other for () {
+ fn okay<U:Get>(&self, _foo: U, _bar: <Self as Get>::Value) { }
+}
+
+impl Other for f64 {
+ fn okay<U:Get>(&self, _foo: U, _bar: <Self as Get>::Value) { }
+}
+
+fn main() { }