Rollup merge of #132332 - nnethercote:use-token_descr-more, r=estebank
Use `token_descr` more in error messages This is the first two commits from #124141, put into their own PR to get things rolling. Commit messages have the details. r? ``@estebank`` cc ``@petrochenkov``
This commit is contained in:
commit
2480e3bbc5
@ -74,7 +74,7 @@ expand_helper_attribute_name_invalid =
|
|||||||
`{$name}` cannot be a name of derive helper attribute
|
`{$name}` cannot be a name of derive helper attribute
|
||||||
|
|
||||||
expand_incomplete_parse =
|
expand_incomplete_parse =
|
||||||
macro expansion ignores token `{$token}` and any following
|
macro expansion ignores {$descr} and any tokens following
|
||||||
.label = caused by the macro expansion here
|
.label = caused by the macro expansion here
|
||||||
.note = the usage of `{$macro_path}!` is likely invalid in {$kind_name} context
|
.note = the usage of `{$macro_path}!` is likely invalid in {$kind_name} context
|
||||||
.suggestion_add_semi = you might be missing a semicolon here
|
.suggestion_add_semi = you might be missing a semicolon here
|
||||||
|
@ -275,7 +275,7 @@ pub(crate) struct UnsupportedKeyValue {
|
|||||||
pub(crate) struct IncompleteParse<'a> {
|
pub(crate) struct IncompleteParse<'a> {
|
||||||
#[primary_span]
|
#[primary_span]
|
||||||
pub span: Span,
|
pub span: Span,
|
||||||
pub token: Cow<'a, str>,
|
pub descr: String,
|
||||||
#[label]
|
#[label]
|
||||||
pub label_span: Span,
|
pub label_span: Span,
|
||||||
pub macro_path: &'a ast::Path,
|
pub macro_path: &'a ast::Path,
|
||||||
|
@ -21,6 +21,7 @@
|
|||||||
use rustc_feature::Features;
|
use rustc_feature::Features;
|
||||||
use rustc_parse::parser::{
|
use rustc_parse::parser::{
|
||||||
AttemptLocalParseRecovery, CommaRecoveryMode, ForceCollect, Parser, RecoverColon, RecoverComma,
|
AttemptLocalParseRecovery, CommaRecoveryMode, ForceCollect, Parser, RecoverColon, RecoverComma,
|
||||||
|
token_descr,
|
||||||
};
|
};
|
||||||
use rustc_parse::validate_attr;
|
use rustc_parse::validate_attr;
|
||||||
use rustc_session::lint::BuiltinLintDiag;
|
use rustc_session::lint::BuiltinLintDiag;
|
||||||
@ -1013,7 +1014,7 @@ pub(crate) fn ensure_complete_parse<'a>(
|
|||||||
span: Span,
|
span: Span,
|
||||||
) {
|
) {
|
||||||
if parser.token != token::Eof {
|
if parser.token != token::Eof {
|
||||||
let token = pprust::token_to_string(&parser.token);
|
let descr = token_descr(&parser.token);
|
||||||
// Avoid emitting backtrace info twice.
|
// Avoid emitting backtrace info twice.
|
||||||
let def_site_span = parser.token.span.with_ctxt(SyntaxContext::root());
|
let def_site_span = parser.token.span.with_ctxt(SyntaxContext::root());
|
||||||
|
|
||||||
@ -1029,7 +1030,7 @@ pub(crate) fn ensure_complete_parse<'a>(
|
|||||||
|
|
||||||
parser.dcx().emit_err(IncompleteParse {
|
parser.dcx().emit_err(IncompleteParse {
|
||||||
span: def_site_span,
|
span: def_site_span,
|
||||||
token,
|
descr,
|
||||||
label_span: span,
|
label_span: span,
|
||||||
macro_path,
|
macro_path,
|
||||||
kind_name,
|
kind_name,
|
||||||
|
@ -2,10 +2,9 @@
|
|||||||
|
|
||||||
use rustc_ast::token::{self, Token, TokenKind};
|
use rustc_ast::token::{self, Token, TokenKind};
|
||||||
use rustc_ast::tokenstream::TokenStream;
|
use rustc_ast::tokenstream::TokenStream;
|
||||||
use rustc_ast_pretty::pprust;
|
|
||||||
use rustc_errors::{Applicability, Diag, DiagCtxtHandle, DiagMessage};
|
use rustc_errors::{Applicability, Diag, DiagCtxtHandle, DiagMessage};
|
||||||
use rustc_macros::Subdiagnostic;
|
use rustc_macros::Subdiagnostic;
|
||||||
use rustc_parse::parser::{Parser, Recovery};
|
use rustc_parse::parser::{Parser, Recovery, token_descr};
|
||||||
use rustc_session::parse::ParseSess;
|
use rustc_session::parse::ParseSess;
|
||||||
use rustc_span::source_map::SourceMap;
|
use rustc_span::source_map::SourceMap;
|
||||||
use rustc_span::symbol::Ident;
|
use rustc_span::symbol::Ident;
|
||||||
@ -336,17 +335,11 @@ pub(super) fn annotate_doc_comment(err: &mut Diag<'_>, sm: &SourceMap, span: Spa
|
|||||||
/// other tokens, this is "unexpected token...".
|
/// other tokens, this is "unexpected token...".
|
||||||
pub(super) fn parse_failure_msg(tok: &Token, expected_token: Option<&Token>) -> Cow<'static, str> {
|
pub(super) fn parse_failure_msg(tok: &Token, expected_token: Option<&Token>) -> Cow<'static, str> {
|
||||||
if let Some(expected_token) = expected_token {
|
if let Some(expected_token) = expected_token {
|
||||||
Cow::from(format!(
|
Cow::from(format!("expected {}, found {}", token_descr(expected_token), token_descr(tok)))
|
||||||
"expected `{}`, found `{}`",
|
|
||||||
pprust::token_to_string(expected_token),
|
|
||||||
pprust::token_to_string(tok),
|
|
||||||
))
|
|
||||||
} else {
|
} else {
|
||||||
match tok.kind {
|
match tok.kind {
|
||||||
token::Eof => Cow::from("unexpected end of macro invocation"),
|
token::Eof => Cow::from("unexpected end of macro invocation"),
|
||||||
_ => {
|
_ => Cow::from(format!("no rules expected {}", token_descr(tok))),
|
||||||
Cow::from(format!("no rules expected the token `{}`", pprust::token_to_string(tok)))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,11 +78,10 @@
|
|||||||
pub(crate) use NamedMatch::*;
|
pub(crate) use NamedMatch::*;
|
||||||
pub(crate) use ParseResult::*;
|
pub(crate) use ParseResult::*;
|
||||||
use rustc_ast::token::{self, DocComment, NonterminalKind, Token};
|
use rustc_ast::token::{self, DocComment, NonterminalKind, Token};
|
||||||
use rustc_ast_pretty::pprust;
|
|
||||||
use rustc_data_structures::fx::FxHashMap;
|
use rustc_data_structures::fx::FxHashMap;
|
||||||
use rustc_errors::ErrorGuaranteed;
|
use rustc_errors::ErrorGuaranteed;
|
||||||
use rustc_lint_defs::pluralize;
|
use rustc_lint_defs::pluralize;
|
||||||
use rustc_parse::parser::{ParseNtResult, Parser};
|
use rustc_parse::parser::{ParseNtResult, Parser, token_descr};
|
||||||
use rustc_span::Span;
|
use rustc_span::Span;
|
||||||
use rustc_span::symbol::{Ident, MacroRulesNormalizedIdent};
|
use rustc_span::symbol::{Ident, MacroRulesNormalizedIdent};
|
||||||
|
|
||||||
@ -150,7 +149,7 @@ impl Display for MatcherLoc {
|
|||||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
match self {
|
match self {
|
||||||
MatcherLoc::Token { token } | MatcherLoc::SequenceSep { separator: token } => {
|
MatcherLoc::Token { token } | MatcherLoc::SequenceSep { separator: token } => {
|
||||||
write!(f, "`{}`", pprust::token_to_string(token))
|
write!(f, "{}", token_descr(token))
|
||||||
}
|
}
|
||||||
MatcherLoc::MetaVarDecl { bind, kind, .. } => {
|
MatcherLoc::MetaVarDecl { bind, kind, .. } => {
|
||||||
write!(f, "meta-variable `${bind}")?;
|
write!(f, "meta-variable `${bind}")?;
|
||||||
|
@ -424,7 +424,7 @@ pub(super) fn from_token(token: &Token) -> Option<Self> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(super) fn token_descr(token: &Token) -> String {
|
pub fn token_descr(token: &Token) -> String {
|
||||||
let name = pprust::token_to_string(token).to_string();
|
let name = pprust::token_to_string(token).to_string();
|
||||||
|
|
||||||
let kind = match (TokenDescription::from_token(token), &token.kind) {
|
let kind = match (TokenDescription::from_token(token), &token.kind) {
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
pub fn main() {
|
pub fn main() {
|
||||||
vec![,]; //~ ERROR no rules expected the token `,`
|
vec![,]; //~ ERROR no rules expected `,`
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `,`
|
error: no rules expected `,`
|
||||||
--> $DIR/vec-macro-with-comma-only.rs:2:10
|
--> $DIR/vec-macro-with-comma-only.rs:2:10
|
||||||
|
|
|
|
||||||
LL | vec![,];
|
LL | vec![,];
|
||||||
|
@ -13,8 +13,8 @@ pub fn check_async() {
|
|||||||
let mut r#async = 1; // OK
|
let mut r#async = 1; // OK
|
||||||
|
|
||||||
r#async = consumes_async!(async); // OK
|
r#async = consumes_async!(async); // OK
|
||||||
r#async = consumes_async!(r#async); //~ ERROR no rules expected the token `r#async`
|
r#async = consumes_async!(r#async); //~ ERROR no rules expected `r#async`
|
||||||
r#async = consumes_async_raw!(async); //~ ERROR no rules expected the token `async`
|
r#async = consumes_async_raw!(async); //~ ERROR no rules expected `async`
|
||||||
r#async = consumes_async_raw!(r#async); // OK
|
r#async = consumes_async_raw!(r#async); // OK
|
||||||
|
|
||||||
if passes_ident!(async) == 1 {} // OK
|
if passes_ident!(async) == 1 {} // OK
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `r#async`
|
error: no rules expected `r#async`
|
||||||
--> $DIR/edition-keywords-2015-2015-parsing.rs:16:31
|
--> $DIR/edition-keywords-2015-2015-parsing.rs:16:31
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async!(r#async);
|
LL | r#async = consumes_async!(r#async);
|
||||||
@ -10,7 +10,7 @@ note: while trying to match `async`
|
|||||||
LL | (async) => (1)
|
LL | (async) => (1)
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `async`
|
error: no rules expected `async`
|
||||||
--> $DIR/edition-keywords-2015-2015-parsing.rs:17:35
|
--> $DIR/edition-keywords-2015-2015-parsing.rs:17:35
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async_raw!(async);
|
LL | r#async = consumes_async_raw!(async);
|
||||||
|
@ -13,8 +13,8 @@ pub fn check_async() {
|
|||||||
let mut r#async = 1; // OK
|
let mut r#async = 1; // OK
|
||||||
|
|
||||||
r#async = consumes_async!(async); // OK
|
r#async = consumes_async!(async); // OK
|
||||||
r#async = consumes_async!(r#async); //~ ERROR no rules expected the token `r#async`
|
r#async = consumes_async!(r#async); //~ ERROR no rules expected `r#async`
|
||||||
r#async = consumes_async_raw!(async); //~ ERROR no rules expected the token `async`
|
r#async = consumes_async_raw!(async); //~ ERROR no rules expected `async`
|
||||||
r#async = consumes_async_raw!(r#async); // OK
|
r#async = consumes_async_raw!(r#async); // OK
|
||||||
|
|
||||||
if passes_ident!(async) == 1 {} // OK
|
if passes_ident!(async) == 1 {} // OK
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `r#async`
|
error: no rules expected `r#async`
|
||||||
--> $DIR/edition-keywords-2015-2018-parsing.rs:16:31
|
--> $DIR/edition-keywords-2015-2018-parsing.rs:16:31
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async!(r#async);
|
LL | r#async = consumes_async!(r#async);
|
||||||
@ -10,7 +10,7 @@ note: while trying to match `async`
|
|||||||
LL | (async) => (1)
|
LL | (async) => (1)
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `async`
|
error: no rules expected `async`
|
||||||
--> $DIR/edition-keywords-2015-2018-parsing.rs:17:35
|
--> $DIR/edition-keywords-2015-2018-parsing.rs:17:35
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async_raw!(async);
|
LL | r#async = consumes_async_raw!(async);
|
||||||
|
@ -17,8 +17,8 @@ pub fn check_async() {
|
|||||||
let mut r#async = 1; // OK
|
let mut r#async = 1; // OK
|
||||||
|
|
||||||
r#async = consumes_async!(async); // OK
|
r#async = consumes_async!(async); // OK
|
||||||
r#async = consumes_async!(r#async); //~ ERROR no rules expected the token `r#async`
|
r#async = consumes_async!(r#async); //~ ERROR no rules expected `r#async`
|
||||||
r#async = consumes_async_raw!(async); //~ ERROR no rules expected the token `async`
|
r#async = consumes_async_raw!(async); //~ ERROR no rules expected keyword `async`
|
||||||
r#async = consumes_async_raw!(r#async); // OK
|
r#async = consumes_async_raw!(r#async); // OK
|
||||||
|
|
||||||
if passes_ident!(async) == 1 {} // FIXME: Edition hygiene bug, async here is 2018 and reserved
|
if passes_ident!(async) == 1 {} // FIXME: Edition hygiene bug, async here is 2018 and reserved
|
||||||
|
@ -20,19 +20,19 @@ help: escape `async` to use it as an identifier
|
|||||||
LL | module::r#async();
|
LL | module::r#async();
|
||||||
| ++
|
| ++
|
||||||
|
|
||||||
error: no rules expected the token `r#async`
|
error: no rules expected `r#async`
|
||||||
--> $DIR/edition-keywords-2018-2015-parsing.rs:20:31
|
--> $DIR/edition-keywords-2018-2015-parsing.rs:20:31
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async!(r#async);
|
LL | r#async = consumes_async!(r#async);
|
||||||
| ^^^^^^^ no rules expected this token in macro call
|
| ^^^^^^^ no rules expected this token in macro call
|
||||||
|
|
|
|
||||||
note: while trying to match `async`
|
note: while trying to match keyword `async`
|
||||||
--> $DIR/auxiliary/edition-kw-macro-2015.rs:17:6
|
--> $DIR/auxiliary/edition-kw-macro-2015.rs:17:6
|
||||||
|
|
|
|
||||||
LL | (async) => (1)
|
LL | (async) => (1)
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `async`
|
error: no rules expected keyword `async`
|
||||||
--> $DIR/edition-keywords-2018-2015-parsing.rs:21:35
|
--> $DIR/edition-keywords-2018-2015-parsing.rs:21:35
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async_raw!(async);
|
LL | r#async = consumes_async_raw!(async);
|
||||||
|
@ -24,8 +24,8 @@ pub fn check_async() {
|
|||||||
let mut r#async = 1; // OK
|
let mut r#async = 1; // OK
|
||||||
|
|
||||||
r#async = consumes_async!(async); // OK
|
r#async = consumes_async!(async); // OK
|
||||||
r#async = consumes_async!(r#async); //~ ERROR no rules expected the token `r#async`
|
r#async = consumes_async!(r#async); //~ ERROR no rules expected `r#async`
|
||||||
r#async = consumes_async_raw!(async); //~ ERROR no rules expected the token `async`
|
r#async = consumes_async_raw!(async); //~ ERROR no rules expected keyword `async`
|
||||||
r#async = consumes_async_raw!(r#async); // OK
|
r#async = consumes_async_raw!(r#async); // OK
|
||||||
|
|
||||||
if passes_ident!(async) == 1 {} // FIXME: Edition hygiene bug, async here is 2018 and reserved
|
if passes_ident!(async) == 1 {} // FIXME: Edition hygiene bug, async here is 2018 and reserved
|
||||||
|
@ -20,19 +20,19 @@ help: escape `async` to use it as an identifier
|
|||||||
LL | module::r#async();
|
LL | module::r#async();
|
||||||
| ++
|
| ++
|
||||||
|
|
||||||
error: no rules expected the token `r#async`
|
error: no rules expected `r#async`
|
||||||
--> $DIR/edition-keywords-2018-2018-parsing.rs:27:31
|
--> $DIR/edition-keywords-2018-2018-parsing.rs:27:31
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async!(r#async);
|
LL | r#async = consumes_async!(r#async);
|
||||||
| ^^^^^^^ no rules expected this token in macro call
|
| ^^^^^^^ no rules expected this token in macro call
|
||||||
|
|
|
|
||||||
note: while trying to match `async`
|
note: while trying to match keyword `async`
|
||||||
--> $DIR/auxiliary/edition-kw-macro-2018.rs:17:6
|
--> $DIR/auxiliary/edition-kw-macro-2018.rs:17:6
|
||||||
|
|
|
|
||||||
LL | (async) => (1)
|
LL | (async) => (1)
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `async`
|
error: no rules expected keyword `async`
|
||||||
--> $DIR/edition-keywords-2018-2018-parsing.rs:28:35
|
--> $DIR/edition-keywords-2018-2018-parsing.rs:28:35
|
||||||
|
|
|
|
||||||
LL | r#async = consumes_async_raw!(async);
|
LL | r#async = consumes_async_raw!(async);
|
||||||
|
@ -1,3 +1,3 @@
|
|||||||
fn main() {
|
fn main() {
|
||||||
panic!(@); //~ ERROR no rules expected the token `@`
|
panic!(@); //~ ERROR no rules expected `@`
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `@`
|
error: no rules expected `@`
|
||||||
--> $DIR/fail-simple.rs:2:12
|
--> $DIR/fail-simple.rs:2:12
|
||||||
|
|
|
|
||||||
LL | panic!(@);
|
LL | panic!(@);
|
||||||
|
@ -10,7 +10,7 @@ error: expected one of `,`, `.`, `?`, or an operator, found `some`
|
|||||||
LL | assert!(true some extra junk);
|
LL | assert!(true some extra junk);
|
||||||
| ^^^^ expected one of `,`, `.`, `?`, or an operator
|
| ^^^^ expected one of `,`, `.`, `?`, or an operator
|
||||||
|
|
||||||
error: no rules expected the token `blah`
|
error: no rules expected `blah`
|
||||||
--> $DIR/assert-trailing-junk.rs:15:30
|
--> $DIR/assert-trailing-junk.rs:15:30
|
||||||
|
|
|
|
||||||
LL | assert!(true, "whatever" blah);
|
LL | assert!(true, "whatever" blah);
|
||||||
@ -28,7 +28,7 @@ LL | assert!(true "whatever" blah);
|
|||||||
| |
|
| |
|
||||||
| help: try adding a comma
|
| help: try adding a comma
|
||||||
|
|
||||||
error: no rules expected the token `blah`
|
error: no rules expected `blah`
|
||||||
--> $DIR/assert-trailing-junk.rs:18:29
|
--> $DIR/assert-trailing-junk.rs:18:29
|
||||||
|
|
|
|
||||||
LL | assert!(true "whatever" blah);
|
LL | assert!(true "whatever" blah);
|
||||||
|
@ -10,7 +10,7 @@ error: expected one of `,`, `.`, `?`, or an operator, found `some`
|
|||||||
LL | assert!(true some extra junk);
|
LL | assert!(true some extra junk);
|
||||||
| ^^^^ expected one of `,`, `.`, `?`, or an operator
|
| ^^^^ expected one of `,`, `.`, `?`, or an operator
|
||||||
|
|
||||||
error: no rules expected the token `blah`
|
error: no rules expected `blah`
|
||||||
--> $DIR/assert-trailing-junk.rs:15:30
|
--> $DIR/assert-trailing-junk.rs:15:30
|
||||||
|
|
|
|
||||||
LL | assert!(true, "whatever" blah);
|
LL | assert!(true, "whatever" blah);
|
||||||
@ -28,7 +28,7 @@ LL | assert!(true "whatever" blah);
|
|||||||
| |
|
| |
|
||||||
| help: try adding a comma
|
| help: try adding a comma
|
||||||
|
|
||||||
error: no rules expected the token `blah`
|
error: no rules expected `blah`
|
||||||
--> $DIR/assert-trailing-junk.rs:18:29
|
--> $DIR/assert-trailing-junk.rs:18:29
|
||||||
|
|
|
|
||||||
LL | assert!(true "whatever" blah);
|
LL | assert!(true "whatever" blah);
|
||||||
|
@ -2,7 +2,7 @@ macro_rules! number {
|
|||||||
(neg false, $self:ident) => { $self };
|
(neg false, $self:ident) => { $self };
|
||||||
($signed:tt => $ty:ty;) => {
|
($signed:tt => $ty:ty;) => {
|
||||||
number!(neg $signed, $self);
|
number!(neg $signed, $self);
|
||||||
//~^ ERROR no rules expected the token `$`
|
//~^ ERROR no rules expected `$`
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `$`
|
error: no rules expected `$`
|
||||||
--> $DIR/best-failure.rs:4:30
|
--> $DIR/best-failure.rs:4:30
|
||||||
|
|
|
|
||||||
LL | macro_rules! number {
|
LL | macro_rules! number {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `const`
|
error: no rules expected keyword `const`
|
||||||
--> $DIR/expr_2021_inline_const.rs:23:12
|
--> $DIR/expr_2021_inline_const.rs:23:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! m2021 {
|
LL | macro_rules! m2021 {
|
||||||
@ -13,7 +13,7 @@ note: while trying to match meta-variable `$e:expr_2021`
|
|||||||
LL | ($e:expr_2021) => {
|
LL | ($e:expr_2021) => {
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `const`
|
error: no rules expected keyword `const`
|
||||||
--> $DIR/expr_2021_inline_const.rs:24:12
|
--> $DIR/expr_2021_inline_const.rs:24:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! m2024 {
|
LL | macro_rules! m2024 {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `const`
|
error: no rules expected keyword `const`
|
||||||
--> $DIR/expr_2021_inline_const.rs:23:12
|
--> $DIR/expr_2021_inline_const.rs:23:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! m2021 {
|
LL | macro_rules! m2021 {
|
||||||
|
@ -20,8 +20,8 @@ macro_rules! test {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
m2021!(const { 1 }); //~ ERROR: no rules expected the token `const`
|
m2021!(const { 1 }); //~ ERROR: no rules expected keyword `const`
|
||||||
m2024!(const { 1 }); //[edi2021]~ ERROR: no rules expected the token `const`
|
m2024!(const { 1 }); //[edi2021]~ ERROR: no rules expected keyword `const`
|
||||||
|
|
||||||
test!(expr);
|
test!(expr);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `_`
|
error: no rules expected reserved identifier `_`
|
||||||
--> $DIR/expr_2024_underscore_expr.rs:19:12
|
--> $DIR/expr_2024_underscore_expr.rs:19:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! m2021 {
|
LL | macro_rules! m2021 {
|
||||||
@ -13,7 +13,7 @@ note: while trying to match meta-variable `$e:expr_2021`
|
|||||||
LL | ($e:expr_2021) => {
|
LL | ($e:expr_2021) => {
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `_`
|
error: no rules expected reserved identifier `_`
|
||||||
--> $DIR/expr_2024_underscore_expr.rs:20:12
|
--> $DIR/expr_2024_underscore_expr.rs:20:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! m2024 {
|
LL | macro_rules! m2024 {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `_`
|
error: no rules expected reserved identifier `_`
|
||||||
--> $DIR/expr_2024_underscore_expr.rs:19:12
|
--> $DIR/expr_2024_underscore_expr.rs:19:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! m2021 {
|
LL | macro_rules! m2021 {
|
||||||
|
@ -16,6 +16,6 @@ macro_rules! m2024 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
m2021!(_); //~ ERROR: no rules expected the token `_`
|
m2021!(_); //~ ERROR: no rules expected reserved identifier `_`
|
||||||
m2024!(_); //[edi2021]~ ERROR: no rules expected the token `_`
|
m2024!(_); //[edi2021]~ ERROR: no rules expected reserved identifier `_`
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
macro_rules! make_macro {
|
macro_rules! make_macro {
|
||||||
($macro_name:tt) => {
|
($macro_name:tt) => {
|
||||||
macro_rules! $macro_name {
|
macro_rules! $macro_name {
|
||||||
//~^ ERROR macro expansion ignores token `{` and any following
|
//~^ ERROR macro expansion ignores `{` and any tokens following
|
||||||
//~| ERROR cannot find macro `macro_rules` in this scope
|
//~| ERROR cannot find macro `macro_rules` in this scope
|
||||||
//~| put a macro name here
|
//~| put a macro name here
|
||||||
() => {}
|
() => {}
|
||||||
|
@ -13,7 +13,7 @@ help: add a semicolon
|
|||||||
LL | macro_rules! $macro_name; {
|
LL | macro_rules! $macro_name; {
|
||||||
| +
|
| +
|
||||||
|
|
||||||
error: macro expansion ignores token `{` and any following
|
error: macro expansion ignores `{` and any tokens following
|
||||||
--> $DIR/issue-118786.rs:7:34
|
--> $DIR/issue-118786.rs:7:34
|
||||||
|
|
|
|
||||||
LL | macro_rules! $macro_name {
|
LL | macro_rules! $macro_name {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
macro_rules! t {
|
macro_rules! t {
|
||||||
() => ( String ; ); //~ ERROR macro expansion ignores token `;`
|
() => ( String ; ); //~ ERROR macro expansion ignores `;`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: macro expansion ignores token `;` and any following
|
error: macro expansion ignores `;` and any tokens following
|
||||||
--> $DIR/issue-30007.rs:2:20
|
--> $DIR/issue-30007.rs:2:20
|
||||||
|
|
|
|
||||||
LL | () => ( String ; );
|
LL | () => ( String ; );
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
macro_rules! m {
|
macro_rules! m {
|
||||||
() => {
|
() => {
|
||||||
let //~ ERROR macro expansion ignores token `let` and any following
|
let //~ ERROR macro expansion ignores keyword `let` and any tokens following
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: macro expansion ignores token `let` and any following
|
error: macro expansion ignores keyword `let` and any tokens following
|
||||||
--> $DIR/issue-54441.rs:3:9
|
--> $DIR/issue-54441.rs:3:9
|
||||||
|
|
|
|
||||||
LL | let
|
LL | let
|
||||||
|
@ -22,21 +22,21 @@ macro_rules! barstar {
|
|||||||
pub fn main() {
|
pub fn main() {
|
||||||
foo!();
|
foo!();
|
||||||
foo!(a);
|
foo!(a);
|
||||||
foo!(a?); //~ ERROR no rules expected the token `?`
|
foo!(a?); //~ ERROR no rules expected `?`
|
||||||
foo!(a?a); //~ ERROR no rules expected the token `?`
|
foo!(a?a); //~ ERROR no rules expected `?`
|
||||||
foo!(a?a?a); //~ ERROR no rules expected the token `?`
|
foo!(a?a?a); //~ ERROR no rules expected `?`
|
||||||
|
|
||||||
barplus!(); //~ERROR unexpected end of macro invocation
|
barplus!(); //~ERROR unexpected end of macro invocation
|
||||||
barplus!(a); //~ERROR unexpected end of macro invocation
|
barplus!(a); //~ERROR unexpected end of macro invocation
|
||||||
barplus!(a?); //~ ERROR no rules expected the token `?`
|
barplus!(a?); //~ ERROR no rules expected `?`
|
||||||
barplus!(a?a); //~ ERROR no rules expected the token `?`
|
barplus!(a?a); //~ ERROR no rules expected `?`
|
||||||
barplus!(a+);
|
barplus!(a+);
|
||||||
barplus!(+);
|
barplus!(+);
|
||||||
|
|
||||||
barstar!(); //~ERROR unexpected end of macro invocation
|
barstar!(); //~ERROR unexpected end of macro invocation
|
||||||
barstar!(a); //~ERROR unexpected end of macro invocation
|
barstar!(a); //~ERROR unexpected end of macro invocation
|
||||||
barstar!(a?); //~ ERROR no rules expected the token `?`
|
barstar!(a?); //~ ERROR no rules expected `?`
|
||||||
barstar!(a?a); //~ ERROR no rules expected the token `?`
|
barstar!(a?a); //~ ERROR no rules expected `?`
|
||||||
barstar!(a*);
|
barstar!(a*);
|
||||||
barstar!(*);
|
barstar!(*);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ error: the `?` macro repetition operator does not take a separator
|
|||||||
LL | ($(a),?) => {};
|
LL | ($(a),?) => {};
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2015.rs:25:11
|
--> $DIR/macro-at-most-once-rep-2015.rs:25:11
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -15,7 +15,7 @@ LL | foo!(a?);
|
|||||||
|
|
|
|
||||||
= note: while trying to match sequence end
|
= note: while trying to match sequence end
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2015.rs:26:11
|
--> $DIR/macro-at-most-once-rep-2015.rs:26:11
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -26,7 +26,7 @@ LL | foo!(a?a);
|
|||||||
|
|
|
|
||||||
= note: while trying to match sequence end
|
= note: while trying to match sequence end
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2015.rs:27:11
|
--> $DIR/macro-at-most-once-rep-2015.rs:27:11
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -67,7 +67,7 @@ note: while trying to match `+`
|
|||||||
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2015.rs:31:15
|
--> $DIR/macro-at-most-once-rep-2015.rs:31:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barplus {
|
LL | macro_rules! barplus {
|
||||||
@ -82,7 +82,7 @@ note: while trying to match `+`
|
|||||||
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2015.rs:32:15
|
--> $DIR/macro-at-most-once-rep-2015.rs:32:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barplus {
|
LL | macro_rules! barplus {
|
||||||
@ -127,7 +127,7 @@ note: while trying to match `*`
|
|||||||
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2015.rs:38:15
|
--> $DIR/macro-at-most-once-rep-2015.rs:38:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barstar {
|
LL | macro_rules! barstar {
|
||||||
@ -142,7 +142,7 @@ note: while trying to match `*`
|
|||||||
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2015.rs:39:15
|
--> $DIR/macro-at-most-once-rep-2015.rs:39:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barstar {
|
LL | macro_rules! barstar {
|
||||||
|
@ -22,21 +22,21 @@ macro_rules! barstar {
|
|||||||
pub fn main() {
|
pub fn main() {
|
||||||
foo!();
|
foo!();
|
||||||
foo!(a);
|
foo!(a);
|
||||||
foo!(a?); //~ ERROR no rules expected the token `?`
|
foo!(a?); //~ ERROR no rules expected `?`
|
||||||
foo!(a?a); //~ ERROR no rules expected the token `?`
|
foo!(a?a); //~ ERROR no rules expected `?`
|
||||||
foo!(a?a?a); //~ ERROR no rules expected the token `?`
|
foo!(a?a?a); //~ ERROR no rules expected `?`
|
||||||
|
|
||||||
barplus!(); //~ERROR unexpected end of macro invocation
|
barplus!(); //~ERROR unexpected end of macro invocation
|
||||||
barplus!(a); //~ERROR unexpected end of macro invocation
|
barplus!(a); //~ERROR unexpected end of macro invocation
|
||||||
barplus!(a?); //~ ERROR no rules expected the token `?`
|
barplus!(a?); //~ ERROR no rules expected `?`
|
||||||
barplus!(a?a); //~ ERROR no rules expected the token `?`
|
barplus!(a?a); //~ ERROR no rules expected `?`
|
||||||
barplus!(a+);
|
barplus!(a+);
|
||||||
barplus!(+);
|
barplus!(+);
|
||||||
|
|
||||||
barstar!(); //~ERROR unexpected end of macro invocation
|
barstar!(); //~ERROR unexpected end of macro invocation
|
||||||
barstar!(a); //~ERROR unexpected end of macro invocation
|
barstar!(a); //~ERROR unexpected end of macro invocation
|
||||||
barstar!(a?); //~ ERROR no rules expected the token `?`
|
barstar!(a?); //~ ERROR no rules expected `?`
|
||||||
barstar!(a?a); //~ ERROR no rules expected the token `?`
|
barstar!(a?a); //~ ERROR no rules expected `?`
|
||||||
barstar!(a*);
|
barstar!(a*);
|
||||||
barstar!(*);
|
barstar!(*);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ error: the `?` macro repetition operator does not take a separator
|
|||||||
LL | ($(a),?) => {};
|
LL | ($(a),?) => {};
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2018.rs:25:11
|
--> $DIR/macro-at-most-once-rep-2018.rs:25:11
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -15,7 +15,7 @@ LL | foo!(a?);
|
|||||||
|
|
|
|
||||||
= note: while trying to match sequence end
|
= note: while trying to match sequence end
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2018.rs:26:11
|
--> $DIR/macro-at-most-once-rep-2018.rs:26:11
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -26,7 +26,7 @@ LL | foo!(a?a);
|
|||||||
|
|
|
|
||||||
= note: while trying to match sequence end
|
= note: while trying to match sequence end
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2018.rs:27:11
|
--> $DIR/macro-at-most-once-rep-2018.rs:27:11
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -67,7 +67,7 @@ note: while trying to match `+`
|
|||||||
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2018.rs:31:15
|
--> $DIR/macro-at-most-once-rep-2018.rs:31:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barplus {
|
LL | macro_rules! barplus {
|
||||||
@ -82,7 +82,7 @@ note: while trying to match `+`
|
|||||||
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
LL | ($(a)?+) => {}; // ok. matches "a+" and "+"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2018.rs:32:15
|
--> $DIR/macro-at-most-once-rep-2018.rs:32:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barplus {
|
LL | macro_rules! barplus {
|
||||||
@ -127,7 +127,7 @@ note: while trying to match `*`
|
|||||||
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2018.rs:38:15
|
--> $DIR/macro-at-most-once-rep-2018.rs:38:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barstar {
|
LL | macro_rules! barstar {
|
||||||
@ -142,7 +142,7 @@ note: while trying to match `*`
|
|||||||
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
LL | ($(a)?*) => {}; // ok. matches "a*" and "*"
|
||||||
| ^
|
| ^
|
||||||
|
|
||||||
error: no rules expected the token `?`
|
error: no rules expected `?`
|
||||||
--> $DIR/macro-at-most-once-rep-2018.rs:39:15
|
--> $DIR/macro-at-most-once-rep-2018.rs:39:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! barstar {
|
LL | macro_rules! barstar {
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
// (typeof used because it's surprisingly hard to find an unparsed token after a stmt)
|
// (typeof used because it's surprisingly hard to find an unparsed token after a stmt)
|
||||||
macro_rules! m {
|
macro_rules! m {
|
||||||
() => ( i ; typeof ); //~ ERROR expected expression, found reserved keyword `typeof`
|
() => ( i ; typeof ); //~ ERROR expected expression, found reserved keyword `typeof`
|
||||||
//~| ERROR macro expansion ignores token `typeof`
|
//~| ERROR macro expansion ignores reserved keyword `typeof`
|
||||||
//~| ERROR macro expansion ignores token `;`
|
//~| ERROR macro expansion ignores `;`
|
||||||
//~| ERROR macro expansion ignores token `;`
|
//~| ERROR macro expansion ignores `;`
|
||||||
//~| ERROR cannot find type `i` in this scope
|
//~| ERROR cannot find type `i` in this scope
|
||||||
//~| ERROR cannot find value `i` in this scope
|
//~| ERROR cannot find value `i` in this scope
|
||||||
//~| WARN trailing semicolon in macro
|
//~| WARN trailing semicolon in macro
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: macro expansion ignores token `;` and any following
|
error: macro expansion ignores `;` and any tokens following
|
||||||
--> $DIR/macro-context.rs:3:15
|
--> $DIR/macro-context.rs:3:15
|
||||||
|
|
|
|
||||||
LL | () => ( i ; typeof );
|
LL | () => ( i ; typeof );
|
||||||
@ -9,7 +9,7 @@ LL | let a: m!();
|
|||||||
|
|
|
|
||||||
= note: the usage of `m!` is likely invalid in type context
|
= note: the usage of `m!` is likely invalid in type context
|
||||||
|
|
||||||
error: macro expansion ignores token `typeof` and any following
|
error: macro expansion ignores reserved keyword `typeof` and any tokens following
|
||||||
--> $DIR/macro-context.rs:3:17
|
--> $DIR/macro-context.rs:3:17
|
||||||
|
|
|
|
||||||
LL | () => ( i ; typeof );
|
LL | () => ( i ; typeof );
|
||||||
@ -20,7 +20,7 @@ LL | let i = m!();
|
|||||||
|
|
|
|
||||||
= note: the usage of `m!` is likely invalid in expression context
|
= note: the usage of `m!` is likely invalid in expression context
|
||||||
|
|
||||||
error: macro expansion ignores token `;` and any following
|
error: macro expansion ignores `;` and any tokens following
|
||||||
--> $DIR/macro-context.rs:3:15
|
--> $DIR/macro-context.rs:3:15
|
||||||
|
|
|
|
||||||
LL | () => ( i ; typeof );
|
LL | () => ( i ; typeof );
|
||||||
|
@ -11,7 +11,7 @@ macro_rules! foo {
|
|||||||
//~| NOTE `#[warn(semicolon_in_expressions_from_macros)]` on by default
|
//~| NOTE `#[warn(semicolon_in_expressions_from_macros)]` on by default
|
||||||
assert_eq!("B", "B");
|
assert_eq!("B", "B");
|
||||||
}
|
}
|
||||||
//~^^ ERROR macro expansion ignores token `assert_eq` and any following
|
//~^^ ERROR macro expansion ignores `assert_eq` and any tokens following
|
||||||
//~| NOTE the usage of `foo!` is likely invalid in expression context
|
//~| NOTE the usage of `foo!` is likely invalid in expression context
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ macro_rules! foo {
|
|||||||
//~| NOTE `#[warn(semicolon_in_expressions_from_macros)]` on by default
|
//~| NOTE `#[warn(semicolon_in_expressions_from_macros)]` on by default
|
||||||
assert_eq!("B", "B");
|
assert_eq!("B", "B");
|
||||||
}
|
}
|
||||||
//~^^ ERROR macro expansion ignores token `assert_eq` and any following
|
//~^^ ERROR macro expansion ignores `assert_eq` and any tokens following
|
||||||
//~| NOTE the usage of `foo!` is likely invalid in expression context
|
//~| NOTE the usage of `foo!` is likely invalid in expression context
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: macro expansion ignores token `assert_eq` and any following
|
error: macro expansion ignores `assert_eq` and any tokens following
|
||||||
--> $DIR/macro-in-expression-context.rs:12:9
|
--> $DIR/macro-in-expression-context.rs:12:9
|
||||||
|
|
|
|
||||||
LL | assert_eq!("B", "B");
|
LL | assert_eq!("B", "B");
|
||||||
|
@ -4,5 +4,5 @@ macro_rules! m { ($x:lifetime) => { } }
|
|||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
m!(a);
|
m!(a);
|
||||||
//~^ ERROR no rules expected the token `a`
|
//~^ ERROR no rules expected `a`
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `a`
|
error: no rules expected `a`
|
||||||
--> $DIR/macro-non-lifetime.rs:6:8
|
--> $DIR/macro-non-lifetime.rs:6:8
|
||||||
|
|
|
|
||||||
LL | macro_rules! m { ($x:lifetime) => { } }
|
LL | macro_rules! m { ($x:lifetime) => { } }
|
||||||
|
@ -19,16 +19,16 @@ fn main() {
|
|||||||
println!("{}" a);
|
println!("{}" a);
|
||||||
//~^ ERROR expected `,`, found `a`
|
//~^ ERROR expected `,`, found `a`
|
||||||
foo!(a b);
|
foo!(a b);
|
||||||
//~^ ERROR no rules expected the token `b`
|
//~^ ERROR no rules expected `b`
|
||||||
foo!(a, b, c, d e);
|
foo!(a, b, c, d e);
|
||||||
//~^ ERROR no rules expected the token `e`
|
//~^ ERROR no rules expected `e`
|
||||||
foo!(a, b, c d, e);
|
foo!(a, b, c d, e);
|
||||||
//~^ ERROR no rules expected the token `d`
|
//~^ ERROR no rules expected `d`
|
||||||
foo!(a, b, c d e);
|
foo!(a, b, c d e);
|
||||||
//~^ ERROR no rules expected the token `d`
|
//~^ ERROR no rules expected `d`
|
||||||
bar!(Level::Error, );
|
bar!(Level::Error, );
|
||||||
//~^ ERROR unexpected end of macro invocation
|
//~^ ERROR unexpected end of macro invocation
|
||||||
check!(<str as Debug>::fmt, "fmt");
|
check!(<str as Debug>::fmt, "fmt");
|
||||||
check!(<str as Debug>::fmt, "fmt",);
|
check!(<str as Debug>::fmt, "fmt",);
|
||||||
//~^ ERROR no rules expected the token `,`
|
//~^ ERROR no rules expected `,`
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ error: expected `,`, found `a`
|
|||||||
LL | println!("{}" a);
|
LL | println!("{}" a);
|
||||||
| ^ expected `,`
|
| ^ expected `,`
|
||||||
|
|
||||||
error: no rules expected the token `b`
|
error: no rules expected `b`
|
||||||
--> $DIR/missing-comma.rs:21:12
|
--> $DIR/missing-comma.rs:21:12
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -21,7 +21,7 @@ note: while trying to match meta-variable `$a:ident`
|
|||||||
LL | ($a:ident) => ();
|
LL | ($a:ident) => ();
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `e`
|
error: no rules expected `e`
|
||||||
--> $DIR/missing-comma.rs:23:21
|
--> $DIR/missing-comma.rs:23:21
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -38,7 +38,7 @@ note: while trying to match meta-variable `$d:ident`
|
|||||||
LL | ($a:ident, $b:ident, $c:ident, $d:ident) => ();
|
LL | ($a:ident, $b:ident, $c:ident, $d:ident) => ();
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `d`
|
error: no rules expected `d`
|
||||||
--> $DIR/missing-comma.rs:25:18
|
--> $DIR/missing-comma.rs:25:18
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -55,7 +55,7 @@ note: while trying to match meta-variable `$c:ident`
|
|||||||
LL | ($a:ident, $b:ident, $c:ident) => ();
|
LL | ($a:ident, $b:ident, $c:ident) => ();
|
||||||
| ^^^^^^^^
|
| ^^^^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `d`
|
error: no rules expected `d`
|
||||||
--> $DIR/missing-comma.rs:27:18
|
--> $DIR/missing-comma.rs:27:18
|
||||||
|
|
|
|
||||||
LL | macro_rules! foo {
|
LL | macro_rules! foo {
|
||||||
@ -85,7 +85,7 @@ note: while trying to match meta-variable `$arg:tt`
|
|||||||
LL | ($lvl:expr, $($arg:tt)+) => {}
|
LL | ($lvl:expr, $($arg:tt)+) => {}
|
||||||
| ^^^^^^^
|
| ^^^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `,`
|
error: no rules expected `,`
|
||||||
--> $DIR/missing-comma.rs:32:38
|
--> $DIR/missing-comma.rs:32:38
|
||||||
|
|
|
|
||||||
LL | macro_rules! check {
|
LL | macro_rules! check {
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
struct S;
|
struct S;
|
||||||
}
|
}
|
||||||
|
|
||||||
n!(a $nt_item b); //~ ERROR no rules expected the token `enum E {}`
|
n!(a $nt_item b); //~ ERROR no rules expected item `enum E {}`
|
||||||
}
|
}
|
||||||
|
|
||||||
simple_nonterminal!(a, 'a, (x, y, z)); // OK
|
simple_nonterminal!(a, 'a, (x, y, z)); // OK
|
||||||
@ -29,10 +29,10 @@ macro_rules! foo {
|
|||||||
(ident $x:ident) => { bar!(ident $x); };
|
(ident $x:ident) => { bar!(ident $x); };
|
||||||
(lifetime $x:lifetime) => { bar!(lifetime $x); };
|
(lifetime $x:lifetime) => { bar!(lifetime $x); };
|
||||||
(tt $x:tt) => { bar!(tt $x); };
|
(tt $x:tt) => { bar!(tt $x); };
|
||||||
(expr $x:expr) => { bar!(expr $x); }; //~ ERROR: no rules expected the token `3`
|
(expr $x:expr) => { bar!(expr $x); }; //~ ERROR: no rules expected expression `3`
|
||||||
(literal $x:literal) => { bar!(literal $x); }; //~ ERROR: no rules expected the token `4`
|
(literal $x:literal) => { bar!(literal $x); }; //~ ERROR: no rules expected literal `4`
|
||||||
(path $x:path) => { bar!(path $x); }; //~ ERROR: no rules expected the token `a::b::c`
|
(path $x:path) => { bar!(path $x); }; //~ ERROR: no rules expected path `a::b::c`
|
||||||
(stmt $x:stmt) => { bar!(stmt $x); }; //~ ERROR: no rules expected the token `let abc = 0`
|
(stmt $x:stmt) => { bar!(stmt $x); }; //~ ERROR: no rules expected statement `let abc = 0`
|
||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! bar {
|
macro_rules! bar {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `enum E {}`
|
error: no rules expected item `enum E {}`
|
||||||
--> $DIR/nonterminal-matching.rs:19:10
|
--> $DIR/nonterminal-matching.rs:19:10
|
||||||
|
|
|
|
||||||
LL | macro n(a $nt_item b) {
|
LL | macro n(a $nt_item b) {
|
||||||
@ -10,7 +10,7 @@ LL | n!(a $nt_item b);
|
|||||||
LL | complex_nonterminal!(enum E {});
|
LL | complex_nonterminal!(enum E {});
|
||||||
| ------------------------------- in this macro invocation
|
| ------------------------------- in this macro invocation
|
||||||
|
|
|
|
||||||
note: while trying to match `enum E {}`
|
note: while trying to match item `enum E {}`
|
||||||
--> $DIR/nonterminal-matching.rs:15:15
|
--> $DIR/nonterminal-matching.rs:15:15
|
||||||
|
|
|
|
||||||
LL | macro n(a $nt_item b) {
|
LL | macro n(a $nt_item b) {
|
||||||
@ -23,7 +23,7 @@ LL | complex_nonterminal!(enum E {});
|
|||||||
= help: try using `:tt` instead in the macro definition
|
= help: try using `:tt` instead in the macro definition
|
||||||
= note: this error originates in the macro `complex_nonterminal` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `complex_nonterminal` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: no rules expected the token `3`
|
error: no rules expected expression `3`
|
||||||
--> $DIR/nonterminal-matching.rs:32:35
|
--> $DIR/nonterminal-matching.rs:32:35
|
||||||
|
|
|
|
||||||
LL | (expr $x:expr) => { bar!(expr $x); };
|
LL | (expr $x:expr) => { bar!(expr $x); };
|
||||||
@ -45,7 +45,7 @@ LL | (expr 3) => {};
|
|||||||
= help: try using `:tt` instead in the macro definition
|
= help: try using `:tt` instead in the macro definition
|
||||||
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: no rules expected the token `4`
|
error: no rules expected literal `4`
|
||||||
--> $DIR/nonterminal-matching.rs:33:44
|
--> $DIR/nonterminal-matching.rs:33:44
|
||||||
|
|
|
|
||||||
LL | (literal $x:literal) => { bar!(literal $x); };
|
LL | (literal $x:literal) => { bar!(literal $x); };
|
||||||
@ -67,7 +67,7 @@ LL | (literal 4) => {};
|
|||||||
= help: try using `:tt` instead in the macro definition
|
= help: try using `:tt` instead in the macro definition
|
||||||
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: no rules expected the token `a::b::c`
|
error: no rules expected path `a::b::c`
|
||||||
--> $DIR/nonterminal-matching.rs:34:35
|
--> $DIR/nonterminal-matching.rs:34:35
|
||||||
|
|
|
|
||||||
LL | (path $x:path) => { bar!(path $x); };
|
LL | (path $x:path) => { bar!(path $x); };
|
||||||
@ -89,7 +89,7 @@ LL | (path a::b::c) => {};
|
|||||||
= help: try using `:tt` instead in the macro definition
|
= help: try using `:tt` instead in the macro definition
|
||||||
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `foo` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: no rules expected the token `let abc = 0`
|
error: no rules expected statement `let abc = 0`
|
||||||
--> $DIR/nonterminal-matching.rs:35:35
|
--> $DIR/nonterminal-matching.rs:35:35
|
||||||
|
|
|
|
||||||
LL | (stmt $x:stmt) => { bar!(stmt $x); };
|
LL | (stmt $x:stmt) => { bar!(stmt $x); };
|
||||||
@ -101,7 +101,7 @@ LL | macro_rules! bar {
|
|||||||
LL | foo!(stmt let abc = 0);
|
LL | foo!(stmt let abc = 0);
|
||||||
| ---------------------- in this macro invocation
|
| ---------------------- in this macro invocation
|
||||||
|
|
|
|
||||||
note: while trying to match `let`
|
note: while trying to match keyword `let`
|
||||||
--> $DIR/nonterminal-matching.rs:45:11
|
--> $DIR/nonterminal-matching.rs:45:11
|
||||||
|
|
|
|
||||||
LL | (stmt let abc = 0) => {};
|
LL | (stmt let abc = 0) => {};
|
||||||
|
@ -10,7 +10,7 @@ pub enum TokenKind {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
//~^^^^^ ERROR expected one of `(`, `,`, `=`, `{`, or `}`, found type `(String)`
|
//~^^^^^ ERROR expected one of `(`, `,`, `=`, `{`, or `}`, found type `(String)`
|
||||||
//~| ERROR macro expansion ignores token `(String)` and any following
|
//~| ERROR macro expansion ignores type `(String)` and any tokens following
|
||||||
|
|
||||||
values!(STRING(1) as (String) => cfg(test),);
|
values!(STRING(1) as (String) => cfg(test),);
|
||||||
//~^ ERROR expected one of `!` or `::`, found `<eof>`
|
//~^ ERROR expected one of `!` or `::`, found `<eof>`
|
||||||
|
@ -10,7 +10,7 @@ LL | values!(STRING(1) as (String) => cfg(test),);
|
|||||||
= help: enum variants can be `Variant`, `Variant = <integer>`, `Variant(Type, ..., TypeN)` or `Variant { fields: Types }`
|
= help: enum variants can be `Variant`, `Variant = <integer>`, `Variant(Type, ..., TypeN)` or `Variant { fields: Types }`
|
||||||
= note: this error originates in the macro `values` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `values` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: macro expansion ignores token `(String)` and any following
|
error: macro expansion ignores type `(String)` and any tokens following
|
||||||
--> $DIR/syntax-error-recovery.rs:7:26
|
--> $DIR/syntax-error-recovery.rs:7:26
|
||||||
|
|
|
|
||||||
LL | $token $($inner)? = $value,
|
LL | $token $($inner)? = $value,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `bcd`
|
error: no rules expected `bcd`
|
||||||
--> $DIR/trace_faulty_macros.rs:7:26
|
--> $DIR/trace_faulty_macros.rs:7:26
|
||||||
|
|
|
|
||||||
LL | macro_rules! my_faulty_macro {
|
LL | macro_rules! my_faulty_macro {
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
fn main() {
|
fn main() {
|
||||||
offset_of!(NotEnoughArguments); //~ ERROR unexpected end of macro invocation
|
offset_of!(NotEnoughArguments); //~ ERROR unexpected end of macro invocation
|
||||||
offset_of!(NotEnoughArgumentsWithAComma, ); //~ ERROR unexpected end of macro invocation
|
offset_of!(NotEnoughArgumentsWithAComma, ); //~ ERROR unexpected end of macro invocation
|
||||||
offset_of!(Container, field, too many arguments); //~ ERROR no rules expected the token `too`
|
offset_of!(Container, field, too many arguments); //~ ERROR no rules expected `too`
|
||||||
offset_of!(S, f); // compiles fine
|
offset_of!(S, f); // compiles fine
|
||||||
offset_of!(S, f,); // also compiles fine
|
offset_of!(S, f,); // also compiles fine
|
||||||
offset_of!(S, f.); //~ ERROR unexpected token: `)`
|
offset_of!(S, f.); //~ ERROR unexpected token: `)`
|
||||||
|
@ -16,7 +16,7 @@ LL | offset_of!(NotEnoughArgumentsWithAComma, );
|
|||||||
note: while trying to match meta-variable `$fields:expr`
|
note: while trying to match meta-variable `$fields:expr`
|
||||||
--> $SRC_DIR/core/src/mem/mod.rs:LL:COL
|
--> $SRC_DIR/core/src/mem/mod.rs:LL:COL
|
||||||
|
|
||||||
error: no rules expected the token `too`
|
error: no rules expected `too`
|
||||||
--> $DIR/offset-of-arg-count.rs:6:34
|
--> $DIR/offset-of-arg-count.rs:6:34
|
||||||
|
|
|
|
||||||
LL | offset_of!(Container, field, too many arguments);
|
LL | offset_of!(Container, field, too many arguments);
|
||||||
|
@ -76,7 +76,7 @@ error: suffixes on a tuple index are invalid
|
|||||||
LL | offset_of!((u8, u8), 1_u8);
|
LL | offset_of!((u8, u8), 1_u8);
|
||||||
| ^^^^ invalid suffix `u8`
|
| ^^^^ invalid suffix `u8`
|
||||||
|
|
||||||
error: no rules expected the token `+`
|
error: no rules expected `+`
|
||||||
--> $DIR/offset-of-tuple.rs:11:26
|
--> $DIR/offset-of-tuple.rs:11:26
|
||||||
|
|
|
|
||||||
LL | offset_of!((u8, u8), +1);
|
LL | offset_of!((u8, u8), +1);
|
||||||
|
@ -9,5 +9,5 @@ macro_rules! accept_pat {
|
|||||||
($p:pat) => {};
|
($p:pat) => {};
|
||||||
}
|
}
|
||||||
|
|
||||||
accept_pat!(p | q); //~ ERROR no rules expected the token `|`
|
accept_pat!(p | q); //~ ERROR no rules expected `|`
|
||||||
accept_pat!(|p| q); //~ ERROR no rules expected the token `|`
|
accept_pat!(|p| q); //~ ERROR no rules expected `|`
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `|`
|
error: no rules expected `|`
|
||||||
--> $DIR/or-patterns-syntactic-fail-2018.rs:12:15
|
--> $DIR/or-patterns-syntactic-fail-2018.rs:12:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! accept_pat {
|
LL | macro_rules! accept_pat {
|
||||||
@ -13,7 +13,7 @@ note: while trying to match meta-variable `$p:pat`
|
|||||||
LL | ($p:pat) => {};
|
LL | ($p:pat) => {};
|
||||||
| ^^^^^^
|
| ^^^^^^
|
||||||
|
|
||||||
error: no rules expected the token `|`
|
error: no rules expected `|`
|
||||||
--> $DIR/or-patterns-syntactic-fail-2018.rs:13:13
|
--> $DIR/or-patterns-syntactic-fail-2018.rs:13:13
|
||||||
|
|
|
|
||||||
LL | macro_rules! accept_pat {
|
LL | macro_rules! accept_pat {
|
||||||
|
@ -4,6 +4,6 @@ macro_rules! outer {
|
|||||||
|
|
||||||
outer! {
|
outer! {
|
||||||
//! Inner
|
//! Inner
|
||||||
} //~^ ERROR no rules expected the token `!`
|
} //~^ ERROR no rules expected `!`
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `!`
|
error: no rules expected `!`
|
||||||
--> $DIR/macro-doc-comments-1.rs:6:5
|
--> $DIR/macro-doc-comments-1.rs:6:5
|
||||||
|
|
|
|
||||||
LL | macro_rules! outer {
|
LL | macro_rules! outer {
|
||||||
|
@ -4,6 +4,6 @@ macro_rules! inner {
|
|||||||
|
|
||||||
inner! {
|
inner! {
|
||||||
/// Outer
|
/// Outer
|
||||||
} //~^ ERROR no rules expected the token `[`
|
} //~^ ERROR no rules expected `[`
|
||||||
|
|
||||||
fn main() { }
|
fn main() { }
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `[`
|
error: no rules expected `[`
|
||||||
--> $DIR/macro-doc-comments-2.rs:6:5
|
--> $DIR/macro-doc-comments-2.rs:6:5
|
||||||
|
|
|
|
||||||
LL | macro_rules! inner {
|
LL | macro_rules! inner {
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
macro_rules! arm {
|
macro_rules! arm {
|
||||||
($pattern:pat => $block:block) => {
|
($pattern:pat => $block:block) => {
|
||||||
$pattern => $block
|
$pattern => $block
|
||||||
//~^ ERROR macro expansion ignores token `=>` and any following
|
//~^ ERROR macro expansion ignores `=>` and any tokens following
|
||||||
//~| NOTE the usage of `arm!` is likely invalid in pattern context
|
//~| NOTE the usage of `arm!` is likely invalid in pattern context
|
||||||
//~| NOTE macros cannot expand to match arms
|
//~| NOTE macros cannot expand to match arms
|
||||||
};
|
};
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: macro expansion ignores token `=>` and any following
|
error: macro expansion ignores `=>` and any tokens following
|
||||||
--> $DIR/macro-expand-to-match-arm.rs:3:18
|
--> $DIR/macro-expand-to-match-arm.rs:3:18
|
||||||
|
|
|
|
||||||
LL | $pattern => $block
|
LL | $pattern => $block
|
||||||
|
@ -2,7 +2,7 @@ macro_rules! ignored_item {
|
|||||||
() => {
|
() => {
|
||||||
fn foo() {}
|
fn foo() {}
|
||||||
fn bar() {}
|
fn bar() {}
|
||||||
, //~ ERROR macro expansion ignores token `,`
|
, //~ ERROR macro expansion ignores `,`
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ macro_rules! ignored_expr {
|
|||||||
}
|
}
|
||||||
|
|
||||||
macro_rules! ignored_pat {
|
macro_rules! ignored_pat {
|
||||||
() => ( 1, 2 ) //~ ERROR macro expansion ignores token `,`
|
() => ( 1, 2 ) //~ ERROR macro expansion ignores `,`
|
||||||
}
|
}
|
||||||
|
|
||||||
ignored_item!();
|
ignored_item!();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: macro expansion ignores token `,` and any following
|
error: macro expansion ignores `,` and any tokens following
|
||||||
--> $DIR/macro-incomplete-parse.rs:5:9
|
--> $DIR/macro-incomplete-parse.rs:5:9
|
||||||
|
|
|
|
||||||
LL | ,
|
LL | ,
|
||||||
@ -20,7 +20,7 @@ LL | ignored_expr!();
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `ignored_expr` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `ignored_expr` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: macro expansion ignores token `,` and any following
|
error: macro expansion ignores `,` and any tokens following
|
||||||
--> $DIR/macro-incomplete-parse.rs:16:14
|
--> $DIR/macro-incomplete-parse.rs:16:14
|
||||||
|
|
|
|
||||||
LL | () => ( 1, 2 )
|
LL | () => ( 1, 2 )
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
macro_rules! bah {
|
macro_rules! bah {
|
||||||
($a:expr) => {
|
($a:expr) => {
|
||||||
$a
|
$a
|
||||||
}; //~^ ERROR macro expansion ignores token `2` and any following
|
}; //~^ ERROR macro expansion ignores expression `2` and any tokens following
|
||||||
}
|
}
|
||||||
|
|
||||||
trait Bar {
|
trait Bar {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: macro expansion ignores token `2` and any following
|
error: macro expansion ignores expression `2` and any tokens following
|
||||||
--> $DIR/trait-non-item-macros.rs:3:9
|
--> $DIR/trait-non-item-macros.rs:3:9
|
||||||
|
|
|
|
||||||
LL | $a
|
LL | $a
|
||||||
|
@ -13,7 +13,7 @@ fn main() {
|
|||||||
//~^ ERROR expected expression, found end of macro arguments
|
//~^ ERROR expected expression, found end of macro arguments
|
||||||
|
|
||||||
let _ = #[duplicate] "Hello, world!";
|
let _ = #[duplicate] "Hello, world!";
|
||||||
//~^ ERROR macro expansion ignores token `,` and any following
|
//~^ ERROR macro expansion ignores `,` and any tokens following
|
||||||
|
|
||||||
let _ = {
|
let _ = {
|
||||||
#[no_output]
|
#[no_output]
|
||||||
@ -22,7 +22,7 @@ fn main() {
|
|||||||
|
|
||||||
let _ = {
|
let _ = {
|
||||||
#[duplicate]
|
#[duplicate]
|
||||||
//~^ ERROR macro expansion ignores token `,` and any following
|
//~^ ERROR macro expansion ignores `,` and any tokens following
|
||||||
"Hello, world!"
|
"Hello, world!"
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ error: expected expression, found end of macro arguments
|
|||||||
LL | let _ = #[no_output] "Hello, world!";
|
LL | let _ = #[no_output] "Hello, world!";
|
||||||
| ^^^^^^^^^^^^
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
error: macro expansion ignores token `,` and any following
|
error: macro expansion ignores `,` and any tokens following
|
||||||
--> $DIR/attr-invalid-exprs.rs:15:13
|
--> $DIR/attr-invalid-exprs.rs:15:13
|
||||||
|
|
|
|
||||||
LL | let _ = #[duplicate] "Hello, world!";
|
LL | let _ = #[duplicate] "Hello, world!";
|
||||||
@ -16,7 +16,7 @@ help: you might be missing a semicolon here
|
|||||||
LL | let _ = #[duplicate]; "Hello, world!";
|
LL | let _ = #[duplicate]; "Hello, world!";
|
||||||
| +
|
| +
|
||||||
|
|
||||||
error: macro expansion ignores token `,` and any following
|
error: macro expansion ignores `,` and any tokens following
|
||||||
--> $DIR/attr-invalid-exprs.rs:24:9
|
--> $DIR/attr-invalid-exprs.rs:24:9
|
||||||
|
|
|
|
||||||
LL | #[duplicate]
|
LL | #[duplicate]
|
||||||
|
@ -114,8 +114,8 @@ macro_rules! mac {
|
|||||||
|
|
||||||
// We get errors reported and recover during macro expansion if the macro
|
// We get errors reported and recover during macro expansion if the macro
|
||||||
// doesn't produce a valid expression.
|
// doesn't produce a valid expression.
|
||||||
expand_expr_is!("string", echo_tts!("string"; hello)); //~ ERROR: macro expansion ignores token `hello` and any following
|
expand_expr_is!("string", echo_tts!("string"; hello)); //~ ERROR: macro expansion ignores `hello` and any tokens following
|
||||||
expand_expr_is!("string", echo_pm!("string"; hello)); //~ ERROR: macro expansion ignores token `;` and any following
|
expand_expr_is!("string", echo_pm!("string"; hello)); //~ ERROR: macro expansion ignores `;` and any tokens following
|
||||||
|
|
||||||
// For now, fail if a non-literal expression is expanded.
|
// For now, fail if a non-literal expression is expanded.
|
||||||
expand_expr_fail!(arbitrary_expression() + "etc");
|
expand_expr_fail!(arbitrary_expression() + "etc");
|
||||||
|
@ -22,7 +22,7 @@ error: expected expression, found `$`
|
|||||||
LL | expand_expr_fail!(echo_pm!($));
|
LL | expand_expr_fail!(echo_pm!($));
|
||||||
| ^ expected expression
|
| ^ expected expression
|
||||||
|
|
||||||
error: macro expansion ignores token `hello` and any following
|
error: macro expansion ignores `hello` and any tokens following
|
||||||
--> $DIR/expand-expr.rs:117:47
|
--> $DIR/expand-expr.rs:117:47
|
||||||
|
|
|
|
||||||
LL | expand_expr_is!("string", echo_tts!("string"; hello));
|
LL | expand_expr_is!("string", echo_tts!("string"; hello));
|
||||||
@ -34,7 +34,7 @@ help: you might be missing a semicolon here
|
|||||||
LL | expand_expr_is!("string", echo_tts!("string"; hello););
|
LL | expand_expr_is!("string", echo_tts!("string"; hello););
|
||||||
| +
|
| +
|
||||||
|
|
||||||
error: macro expansion ignores token `;` and any following
|
error: macro expansion ignores `;` and any tokens following
|
||||||
--> $DIR/expand-expr.rs:118:44
|
--> $DIR/expand-expr.rs:118:44
|
||||||
|
|
|
|
||||||
LL | expand_expr_is!("string", echo_pm!("string"; hello));
|
LL | expand_expr_is!("string", echo_pm!("string"; hello));
|
||||||
|
@ -68,7 +68,7 @@ macro_rules! use_expr {
|
|||||||
_ => {}
|
_ => {}
|
||||||
}
|
}
|
||||||
use_expr!(let 0 = 1);
|
use_expr!(let 0 = 1);
|
||||||
//~^ ERROR no rules expected the token `let`
|
//~^ ERROR no rules expected keyword `let`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -131,7 +131,7 @@ LL | use_expr!((let 0 = 1));
|
|||||||
|
|
|
|
||||||
= note: only supported directly in conditions of `if` and `while` expressions
|
= note: only supported directly in conditions of `if` and `while` expressions
|
||||||
|
|
||||||
error: no rules expected the token `let`
|
error: no rules expected keyword `let`
|
||||||
--> $DIR/feature-gate.rs:70:15
|
--> $DIR/feature-gate.rs:70:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! use_expr {
|
LL | macro_rules! use_expr {
|
||||||
|
@ -54,7 +54,7 @@ macro_rules! use_expr {
|
|||||||
#[cfg(FALSE)] (let 0 = 1);
|
#[cfg(FALSE)] (let 0 = 1);
|
||||||
//~^ ERROR expected expression, found `let` statement
|
//~^ ERROR expected expression, found `let` statement
|
||||||
use_expr!(let 0 = 1);
|
use_expr!(let 0 = 1);
|
||||||
//~^ ERROR no rules expected the token `let`
|
//~^ ERROR no rules expected keyword `let`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -14,7 +14,7 @@ LL | noop_expr!((let 0 = 1));
|
|||||||
|
|
|
|
||||||
= note: only supported directly in conditions of `if` and `while` expressions
|
= note: only supported directly in conditions of `if` and `while` expressions
|
||||||
|
|
||||||
error: no rules expected the token `let`
|
error: no rules expected keyword `let`
|
||||||
--> $DIR/feature-gate.rs:56:15
|
--> $DIR/feature-gate.rs:56:15
|
||||||
|
|
|
|
||||||
LL | macro_rules! use_expr {
|
LL | macro_rules! use_expr {
|
||||||
|
@ -5,5 +5,5 @@ macro_rules! identity {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let identity!(_) = 10; //~ ERROR no rules expected the token `_`
|
let identity!(_) = 10; //~ ERROR no rules expected reserved identifier `_`
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error: no rules expected the token `_`
|
error: no rules expected reserved identifier `_`
|
||||||
--> $DIR/underscore-ident-matcher.rs:8:19
|
--> $DIR/underscore-ident-matcher.rs:8:19
|
||||||
|
|
|
|
||||||
LL | macro_rules! identity {
|
LL | macro_rules! identity {
|
||||||
|
Loading…
Reference in New Issue
Block a user