mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-31 06:22:00 +00:00
Tweak expected message to explain what it's actually signifying
This commit is contained in:
parent
959b2c703d
commit
82e7cec16d
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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`
|
||||||
|
@ -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)
|
||||||
|
Loading…
Reference in New Issue
Block a user