mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-28 19:17:43 +00:00
Auto merge of #94865 - notriddle:notriddle/single-colon-path-not-const-generics, r=cjgillot
diagnostics: single colon within `<>` probably, not type ascription Fixes #94812
This commit is contained in:
commit
f103b2969b
@ -2073,6 +2073,19 @@ impl<'a> Parser<'a> {
|
|||||||
let value = self.mk_expr_err(start.to(expr.span));
|
let value = self.mk_expr_err(start.to(expr.span));
|
||||||
err.emit();
|
err.emit();
|
||||||
return Ok(GenericArg::Const(AnonConst { id: ast::DUMMY_NODE_ID, value }));
|
return Ok(GenericArg::Const(AnonConst { id: ast::DUMMY_NODE_ID, value }));
|
||||||
|
} else if token::Colon == snapshot.token.kind
|
||||||
|
&& expr.span.lo() == snapshot.token.span.hi()
|
||||||
|
&& matches!(expr.kind, ExprKind::Path(..))
|
||||||
|
{
|
||||||
|
// Find a mistake like "foo::var:A".
|
||||||
|
err.span_suggestion(
|
||||||
|
snapshot.token.span,
|
||||||
|
"write a path separator here",
|
||||||
|
"::".to_string(),
|
||||||
|
Applicability::MaybeIncorrect,
|
||||||
|
);
|
||||||
|
err.emit();
|
||||||
|
return Ok(GenericArg::Type(self.mk_ty(start.to(expr.span), TyKind::Err)));
|
||||||
} else if token::Comma == self.token.kind || self.token.kind.should_end_const_arg()
|
} else if token::Comma == self.token.kind || self.token.kind.should_end_const_arg()
|
||||||
{
|
{
|
||||||
// Avoid the following output by checking that we consumed a full const arg:
|
// Avoid the following output by checking that we consumed a full const arg:
|
||||||
|
13
src/test/ui/generics/single-colon-path-not-const-generics.rs
Normal file
13
src/test/ui/generics/single-colon-path-not-const-generics.rs
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
pub mod foo {
|
||||||
|
pub mod bar {
|
||||||
|
pub struct A;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub struct Foo {
|
||||||
|
a: Vec<foo::bar:A>,
|
||||||
|
//~^ ERROR expected
|
||||||
|
//~| HELP path separator
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
@ -0,0 +1,11 @@
|
|||||||
|
error: expected one of `,` or `>`, found `:`
|
||||||
|
--> $DIR/single-colon-path-not-const-generics.rs:8:18
|
||||||
|
|
|
||||||
|
LL | a: Vec<foo::bar:A>,
|
||||||
|
| ^
|
||||||
|
| |
|
||||||
|
| expected one of `,` or `>`
|
||||||
|
| help: write a path separator here: `::`
|
||||||
|
|
||||||
|
error: aborting due to previous error
|
||||||
|
|
Loading…
Reference in New Issue
Block a user