Skip to content

Commit

Permalink
Auto merge of rust-lang#94865 - notriddle:notriddle/single-colon-path…
Browse files Browse the repository at this point in the history
…-not-const-generics, r=cjgillot

diagnostics: single colon within `<>` probably, not type ascription

Fixes rust-lang#94812
  • Loading branch information
bors committed Mar 12, 2022
2 parents 22a20e3 + 26e299a commit f103b29
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 0 deletions.
13 changes: 13 additions & 0 deletions compiler/rustc_parse/src/parser/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2073,6 +2073,19 @@ impl<'a> Parser<'a> {
let value = self.mk_expr_err(start.to(expr.span));
err.emit();
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()
{
// Avoid the following output by checking that we consumed a full const arg:
Expand Down
13 changes: 13 additions & 0 deletions src/test/ui/generics/single-colon-path-not-const-generics.rs
Original file line number Diff line number Diff line change
@@ -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() {}
11 changes: 11 additions & 0 deletions src/test/ui/generics/single-colon-path-not-const-generics.stderr
Original file line number Diff line number Diff line change
@@ -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

0 comments on commit f103b29

Please sign in to comment.