mirror of
https://github.com/rust-lang/rust.git
synced 2024-12-02 11:44:28 +00:00
796be88062
When suggesting a type on inference error, do not use `{closure@..}`. Instead, replace with an appropriate `fn` ptr. On the error message, use `short_ty_string` and write long types to disk. ``` error[E0284]: type annotations needed for `Select<{closure@lib.rs:2782:13}, _, Expression<'_>, _>` --> crates/lang/src/parser.rs:41:13 | 41 | let lit = select! { | ^^^ 42 | Token::Int(i) = e => Expression::new(Expr::Lit(ast::Lit::Int(i.parse().unwrap())), e.span()), | ---- type must be known at this point | = note: the full type name has been written to '/home/gh-estebank/iowo/target/debug/deps/lang-e2d6e25819442273.long-type-4587393693885174369.txt' = note: cannot satisfy `<_ as chumsky::input::Input<'_>>::Span == SimpleSpan` help: consider giving `lit` an explicit type, where the type for type parameter `I` is specified | 41 | let lit: Select<for<'a, 'b> fn(tokens::Token<'_>, &'a mut MapExtra<'_, 'b, _, _>) -> Option<Expression<'_>>, _, Expression<'_>, _> = select! { | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ``` instead of ``` error[E0284]: type annotations needed for `Select<{closure@/home/gh-estebank/.cargo/registry/src/index.crates.io-6f17d22bba15001f/chumsky-1.0.0-alpha.6/src/lib.rs:2782:13: 2782:28}, _, Expression<'_>, _>` --> crates/lang/src/parser.rs:41:13 | 41 | let lit = select! { | ^^^ 42 | Token::Int(i) = e => Expression::new(Expr::Lit(ast::Lit::Int(i.parse().unwrap())), e.span()), | ---- type must be known at this point | = note: cannot satisfy `<_ as chumsky::input::Input<'_>>::Span == SimpleSpan` help: consider giving `lit` an explicit type, where the type for type parameter `I` is specified | 41 | let lit: Select<{closure@/home/gh-estebank/.cargo/registry/src/index.crates.io-6f17d22bba15001f/chumsky-1.0.0-alpha.6/src/lib.rs:2782:13: 2782:28}, _, Expression<'_>, _> = select! { | ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ``` Fix #123630.
36 lines
1.1 KiB
Plaintext
36 lines
1.1 KiB
Plaintext
error[E0308]: mismatched types
|
|
--> $DIR/issue-62504.rs:18:21
|
|
|
|
|
LL | ArrayHolder([0; Self::SIZE])
|
|
| ^^^^^^^^^^^^^^^ expected `X`, found `Self::SIZE`
|
|
|
|
|
= note: expected constant `X`
|
|
found constant `Self::SIZE`
|
|
|
|
error: unconstrained generic constant
|
|
--> $DIR/issue-62504.rs:18:25
|
|
|
|
|
LL | ArrayHolder([0; Self::SIZE])
|
|
| ^^^^^^^^^^
|
|
|
|
|
help: try adding a `where` bound
|
|
|
|
|
LL | pub const fn new() -> Self where [(); Self::SIZE]: {
|
|
| +++++++++++++++++++++++
|
|
|
|
error[E0282]: type annotations needed for `ArrayHolder<_>`
|
|
--> $DIR/issue-62504.rs:26:9
|
|
|
|
|
LL | let mut array = ArrayHolder::new();
|
|
| ^^^^^^^^^
|
|
|
|
|
help: consider giving `array` an explicit type, where the value of const parameter `X` is specified
|
|
|
|
|
LL | let mut array: ArrayHolder<X> = ArrayHolder::new();
|
|
| ++++++++++++++++
|
|
|
|
error: aborting due to 3 previous errors
|
|
|
|
Some errors have detailed explanations: E0282, E0308.
|
|
For more information about an error, try `rustc --explain E0282`.
|