Taint _
placeholder types
This commit is contained in:
parent
174e73a3f6
commit
4586fdce47
@ -2543,7 +2543,11 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||||||
self.suggest_trait_fn_ty_for_impl_fn_infer(hir_id, Some(i))
|
self.suggest_trait_fn_ty_for_impl_fn_infer(hir_id, Some(i))
|
||||||
{
|
{
|
||||||
infer_replacements.push((a.span, suggested_ty.to_string()));
|
infer_replacements.push((a.span, suggested_ty.to_string()));
|
||||||
return suggested_ty;
|
return Ty::new_error_with_message(
|
||||||
|
self.tcx(),
|
||||||
|
a.span,
|
||||||
|
suggested_ty.to_string(),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2561,7 +2565,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
|
|||||||
self.suggest_trait_fn_ty_for_impl_fn_infer(hir_id, None)
|
self.suggest_trait_fn_ty_for_impl_fn_infer(hir_id, None)
|
||||||
{
|
{
|
||||||
infer_replacements.push((output.span, suggested_ty.to_string()));
|
infer_replacements.push((output.span, suggested_ty.to_string()));
|
||||||
suggested_ty
|
Ty::new_error_with_message(self.tcx(), output.span, suggested_ty.to_string())
|
||||||
} else {
|
} else {
|
||||||
visitor.visit_ty(output);
|
visitor.visit_ty(output);
|
||||||
self.ast_ty_to_ty(output)
|
self.ast_ty_to_ty(output)
|
||||||
|
@ -0,0 +1,13 @@
|
|||||||
|
trait Deserialize {
|
||||||
|
fn deserialize(&self);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ArchivedVec<T>(T);
|
||||||
|
|
||||||
|
impl<T> Deserialize for ArchivedVec<T> {
|
||||||
|
fn deserialize(s: _) {}
|
||||||
|
//~^ ERROR: `_` is not allowed within types on item signatures
|
||||||
|
//~| ERROR: has a `&self` declaration in the trait, but not in the impl
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
@ -0,0 +1,24 @@
|
|||||||
|
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
|
||||||
|
--> $DIR/method-argument-mismatch-variance-ice-119867.rs:8:23
|
||||||
|
|
|
||||||
|
LL | fn deserialize(s: _) {}
|
||||||
|
| ^ not allowed in type signatures
|
||||||
|
|
|
||||||
|
help: try replacing `_` with the type in the corresponding trait method signature
|
||||||
|
|
|
||||||
|
LL | fn deserialize(s: &ArchivedVec<T>) {}
|
||||||
|
| ~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
error[E0186]: method `deserialize` has a `&self` declaration in the trait, but not in the impl
|
||||||
|
--> $DIR/method-argument-mismatch-variance-ice-119867.rs:8:5
|
||||||
|
|
|
||||||
|
LL | fn deserialize(&self);
|
||||||
|
| ---------------------- `&self` used in trait
|
||||||
|
...
|
||||||
|
LL | fn deserialize(s: _) {}
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^ expected `&self` in impl
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
Some errors have detailed explanations: E0121, E0186.
|
||||||
|
For more information about an error, try `rustc --explain E0121`.
|
Loading…
x
Reference in New Issue
Block a user