parent
349b3b324d
commit
5da2bf197d
3 changed files with 74 additions and 10 deletions
|
@ -722,11 +722,6 @@ where
|
|||
// Skip lifetime parameters of the enclosing item(s)
|
||||
|
||||
substs.as_closure().tupled_upvars_ty().visit_with(self);
|
||||
|
||||
for upvar_ty in substs.as_closure().upvar_tys() {
|
||||
upvar_ty.visit_with(self);
|
||||
}
|
||||
|
||||
substs.as_closure().sig_as_fn_ptr_ty().visit_with(self);
|
||||
}
|
||||
|
||||
|
@ -735,11 +730,6 @@ where
|
|||
// Also skip the witness type, because that has no free regions.
|
||||
|
||||
substs.as_generator().tupled_upvars_ty().visit_with(self);
|
||||
|
||||
for upvar_ty in substs.as_generator().upvar_tys() {
|
||||
upvar_ty.visit_with(self);
|
||||
}
|
||||
|
||||
substs.as_generator().return_ty().visit_with(self);
|
||||
substs.as_generator().yield_ty().visit_with(self);
|
||||
substs.as_generator().resume_ty().visit_with(self);
|
||||
|
|
19
src/test/ui/issues/issue-78720.rs
Normal file
19
src/test/ui/issues/issue-78720.rs
Normal file
|
@ -0,0 +1,19 @@
|
|||
fn server() -> impl {
|
||||
//~^ ERROR at least one trait must be specified
|
||||
().map2(|| "")
|
||||
}
|
||||
|
||||
trait FilterBase2 {
|
||||
fn map2<F>(self, F) -> Map2<F> {}
|
||||
//~^ ERROR mismatched types
|
||||
//~^^ ERROR the size for values of type `Self` cannot be known at compilation time
|
||||
}
|
||||
|
||||
struct Map2<Segment2> {
|
||||
_func: F,
|
||||
//~^ ERROR cannot find type `F` in this scope
|
||||
}
|
||||
|
||||
impl<F> FilterBase2 for F {}
|
||||
|
||||
fn main() {}
|
55
src/test/ui/issues/issue-78720.stderr
Normal file
55
src/test/ui/issues/issue-78720.stderr
Normal file
|
@ -0,0 +1,55 @@
|
|||
error: at least one trait must be specified
|
||||
--> $DIR/issue-78720.rs:1:16
|
||||
|
|
||||
LL | fn server() -> impl {
|
||||
| ^^^^
|
||||
|
||||
error[E0412]: cannot find type `F` in this scope
|
||||
--> $DIR/issue-78720.rs:13:12
|
||||
|
|
||||
LL | _func: F,
|
||||
| ^
|
||||
|
|
||||
::: $SRC_DIR/core/src/ops/function.rs:LL:COL
|
||||
|
|
||||
LL | pub trait Fn<Args>: FnMut<Args> {
|
||||
| ------------------------------- similarly named trait `Fn` defined here
|
||||
|
|
||||
help: a trait with a similar name exists
|
||||
|
|
||||
LL | _func: Fn,
|
||||
| ^^
|
||||
help: you might be missing a type parameter
|
||||
|
|
||||
LL | struct Map2<Segment2, F> {
|
||||
| ^^^
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-78720.rs:7:36
|
||||
|
|
||||
LL | fn map2<F>(self, F) -> Map2<F> {}
|
||||
| ^^ expected struct `Map2`, found `()`
|
||||
|
|
||||
= note: expected struct `Map2<F>`
|
||||
found unit type `()`
|
||||
|
||||
error[E0277]: the size for values of type `Self` cannot be known at compilation time
|
||||
--> $DIR/issue-78720.rs:7:16
|
||||
|
|
||||
LL | fn map2<F>(self, F) -> Map2<F> {}
|
||||
| ^^^^ doesn't have a size known at compile-time
|
||||
|
|
||||
= help: unsized fn params are gated as an unstable feature
|
||||
help: consider further restricting `Self`
|
||||
|
|
||||
LL | fn map2<F>(self, F) -> Map2<F> where Self: Sized {}
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
help: function arguments must have a statically known size, borrowed types always have a known size
|
||||
|
|
||||
LL | fn map2<F>(&self, F) -> Map2<F> {}
|
||||
| ^
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0277, E0308, E0412.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
Loading…
Add table
Add a link
Reference in a new issue