From fd28614cb799b762880b25b976760ddd0c530e92 Mon Sep 17 00:00:00 2001 From: Jonas Schievink Date: Sun, 15 Sep 2019 01:15:22 +0200 Subject: [PATCH] Add regression test for #26681 --- src/test/ui/associated-types/issue-26681.rs | 20 +++++++++++++++++++ .../ui/associated-types/issue-26681.stderr | 12 +++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/test/ui/associated-types/issue-26681.rs create mode 100644 src/test/ui/associated-types/issue-26681.stderr diff --git a/src/test/ui/associated-types/issue-26681.rs b/src/test/ui/associated-types/issue-26681.rs new file mode 100644 index 000000000000..a0a8c86d9495 --- /dev/null +++ b/src/test/ui/associated-types/issue-26681.rs @@ -0,0 +1,20 @@ +#![feature(associated_type_defaults)] + +// This is a partial regression test for #26681, which used to fail to resolve +// `Self` in the assoc. constant, and now fails with a type mismatch because +// `Self::Fv` cannot be assumed to equal `u8` inside the trait. + +trait Foo { + type Bar; +} + +impl Foo for u8 { + type Bar = (); +} + +trait Baz { + type Fv: Foo = u8; + const C: ::Bar = 6665; //~ error: mismatched types +} + +fn main() {} diff --git a/src/test/ui/associated-types/issue-26681.stderr b/src/test/ui/associated-types/issue-26681.stderr new file mode 100644 index 000000000000..27175a247fa8 --- /dev/null +++ b/src/test/ui/associated-types/issue-26681.stderr @@ -0,0 +1,12 @@ +error[E0308]: mismatched types + --> $DIR/issue-26681.rs:17:39 + | +LL | const C: ::Bar = 6665; + | ^^^^ expected associated type, found integer + | + = note: expected type `<::Fv as Foo>::Bar` + found type `{integer}` + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`.