);
let is_normalized_ty_expected = !matches!(
- obligation.cause.code,
+ obligation.cause.code.peel_derives(),
ObligationCauseCode::ItemObligation(_)
| ObligationCauseCode::BindingObligation(_, _)
| ObligationCauseCode::ObjectCastObligation(_)
| ---------- required by `Visit::visit`
...
LL | <() as Visit>::visit();
- | ^^^^^^^^^^^^^^^^^^^^ expected `()`, found `&()`
+ | ^^^^^^^^^^^^^^^^^^^^ expected `&()`, found `()`
|
= note: required because of the requirements on the impl of `Visit` for `()`
--- /dev/null
+error[E0271]: type mismatch resolving `<() as Super>::Assoc == ()`
+ --> $DIR/projection-mismatch-in-impl-where-clause.rs:13:14
+ |
+LL | fn test() -> impl Test {
+ | ^^^^^^^^^ expected `()`, found `u8`
+ |
+ = note: required because of the requirements on the impl of `Test` for `()`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0271`.
--> $DIR/issue-33941.rs:4:14
|
LL | for _ in HashMap::new().iter().cloned() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected tuple, found reference
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found tuple
|
- = note: expected tuple `(&_, &_)`
- found reference `&_`
+ = note: expected reference `&_`
+ found tuple `(&_, &_)`
= note: required because of the requirements on the impl of `Iterator` for `Cloned<std::collections::hash_map::Iter<'_, _, _>>`
= note: required because of the requirements on the impl of `IntoIterator` for `Cloned<std::collections::hash_map::Iter<'_, _, _>>`
= note: required by `into_iter`
--> $DIR/issue-33941.rs:4:14
|
LL | for _ in HashMap::new().iter().cloned() {}
- | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected tuple, found reference
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected reference, found tuple
|
- = note: expected tuple `(&_, &_)`
- found reference `&_`
+ = note: expected reference `&_`
+ found tuple `(&_, &_)`
= note: required because of the requirements on the impl of `Iterator` for `Cloned<std::collections::hash_map::Iter<'_, _, _>>`
= note: required by `std::iter::Iterator::next`
| ---------- required by `Visit::visit`
...
LL | <() as Visit>::visit();
- | ^^^^^^^^^^^^^^^^^^^^ expected `&()`, found `()`
+ | ^^^^^^^^^^^^^^^^^^^^ expected `()`, found `&()`
|
= note: required because of the requirements on the impl of `Visit` for `()`