Tweak expected message to explain what it's actually signifying

This commit is contained in:
Michael Goulet 2023-09-23 00:56:43 +00:00
parent 959b2c703d
commit 82e7cec16d
3 changed files with 10 additions and 6 deletions

View File

@ -616,9 +616,13 @@ fn foo(&self) -> Self::T { String::new() }
for item in &items[..] { for item in &items[..] {
if let hir::AssocItemKind::Type = item.kind { if let hir::AssocItemKind::Type = item.kind {
let assoc_ty = tcx.type_of(item.id.owner_id).instantiate_identity(); let assoc_ty = tcx.type_of(item.id.owner_id).instantiate_identity();
if let hir::Defaultness::Default { has_value: true } = tcx.defaultness(item.id.owner_id)
if self.infcx.can_eq(param_env, assoc_ty, found) { && self.infcx.can_eq(param_env, assoc_ty, found)
diag.span_label(item.span, "expected this associated type"); {
diag.span_label(
item.span,
format!("associated type is `default` and may be overridden"),
);
return true; return true;
} }
} }

View File

@ -29,7 +29,7 @@ error[E0053]: method `make` has an incompatible type for trait
--> $DIR/defaults-specialization.rs:35:18 --> $DIR/defaults-specialization.rs:35:18
| |
LL | default type Ty = bool; LL | default type Ty = bool;
| ----------------------- expected this associated type | ----------------------- associated type is `default` and may be overridden
LL | LL |
LL | fn make() -> bool { true } LL | fn make() -> bool { true }
| ^^^^ | ^^^^
@ -76,7 +76,7 @@ error[E0308]: mismatched types
--> $DIR/defaults-specialization.rs:44:29 --> $DIR/defaults-specialization.rs:44:29
| |
LL | default type Ty = bool; LL | default type Ty = bool;
| ----------------------- expected this associated type | ----------------------- associated type is `default` and may be overridden
LL | LL |
LL | fn make() -> Self::Ty { true } LL | fn make() -> Self::Ty { true }
| -------- ^^^^ expected associated type, found `bool` | -------- ^^^^ expected associated type, found `bool`

View File

@ -12,7 +12,7 @@ error[E0308]: mismatched types
--> $DIR/specialization-default-types.rs:15:9 --> $DIR/specialization-default-types.rs:15:9
| |
LL | default type Output = Box<T>; LL | default type Output = Box<T>;
| ----------------------------- expected this associated type | ----------------------------- associated type is `default` and may be overridden
LL | default fn generate(self) -> Self::Output { LL | default fn generate(self) -> Self::Output {
| ------------ expected `<T as Example>::Output` because of return type | ------------ expected `<T as Example>::Output` because of return type
LL | Box::new(self) LL | Box::new(self)