Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/hir-ty/src/tests/diagnostics.rs')
-rw-r--r--crates/hir-ty/src/tests/diagnostics.rs42
1 files changed, 42 insertions, 0 deletions
diff --git a/crates/hir-ty/src/tests/diagnostics.rs b/crates/hir-ty/src/tests/diagnostics.rs
index 1876be303a..80f92eaf43 100644
--- a/crates/hir-ty/src/tests/diagnostics.rs
+++ b/crates/hir-ty/src/tests/diagnostics.rs
@@ -1,3 +1,5 @@
+use crate::tests::check_no_mismatches;
+
use super::check;
#[test]
@@ -94,3 +96,43 @@ fn test(x: bool) {
"#,
);
}
+
+#[test]
+fn no_mismatches_on_atpit() {
+ check_no_mismatches(
+ r#"
+//- minicore: option, sized
+#![feature(impl_trait_in_assoc_type)]
+
+trait WrappedAssoc {
+ type Assoc;
+ fn do_thing(&self) -> Option<Self::Assoc>;
+}
+
+struct Foo;
+impl WrappedAssoc for Foo {
+ type Assoc = impl Sized;
+
+ fn do_thing(&self) -> Option<Self::Assoc> {
+ Some(())
+ }
+}
+"#,
+ );
+ check_no_mismatches(
+ r#"
+//- minicore: option, sized
+#![feature(impl_trait_in_assoc_type)]
+
+trait Trait {
+ type Assoc;
+ const DEFINE: Option<Self::Assoc>;
+}
+
+impl Trait for () {
+ type Assoc = impl Sized;
+ const DEFINE: Option<Self::Assoc> = Option::Some(());
+}
+"#,
+ );
+}