}
}
-struct MacroRulesDummyExpander;
-
-impl TTMacroExpander for MacroRulesDummyExpander {
- fn expand<'cx>(
- &self,
- _: &'cx mut ExtCtxt<'_>,
- sp: Span,
- _: TokenStream,
- ) -> Box<dyn MacResult + 'cx> {
- DummyResult::any(sp)
- }
+fn macro_rules_dummy_expander<'cx>(
+ _: &'cx mut ExtCtxt<'_>,
+ span: Span,
+ _: TokenStream,
+) -> Box<dyn MacResult + 'cx> {
+ DummyResult::any(span)
}
fn trace_macros_note(cx_expansions: &mut FxHashMap<Span, Vec<String>>, sp: Span, message: String) {
let s = parse_failure_msg(&token);
let sp = token.span.substitute_dummy(def.span);
sess.span_diagnostic.struct_span_err(sp, &s).span_label(sp, msg).emit();
- return mk_syn_ext(Box::new(MacroRulesDummyExpander));
+ return mk_syn_ext(Box::new(macro_rules_dummy_expander));
}
Error(sp, msg) => {
sess.span_diagnostic.struct_span_err(sp.substitute_dummy(def.span), &msg).emit();
- return mk_syn_ext(Box::new(MacroRulesDummyExpander));
+ return mk_syn_ext(Box::new(macro_rules_dummy_expander));
}
ErrorReported => {
- return mk_syn_ext(Box::new(MacroRulesDummyExpander));
+ return mk_syn_ext(Box::new(macro_rules_dummy_expander));
}
};
None => {}
}
- let expander: Box<_> = Box::new(MacroRulesMacroExpander {
+ mk_syn_ext(Box::new(MacroRulesMacroExpander {
name: def.ident,
span: def.span,
transparency,
lhses,
rhses,
valid,
- });
-
- mk_syn_ext(expander)
+ }))
}
fn check_lhs_nt_follows(
// edition:2018
// aux-build:edition-kw-macro-2015.rs
+#![feature(async_closure)]
+
fn main() {}
#[macro_use]
r#async = consumes_async_raw!(async); //~ ERROR no rules expected the token `async`
r#async = consumes_async_raw!(r#async); // OK
- if passes_ident!(async) == 1 {} //~ ERROR async closures are unstable
+ if passes_ident!(async) == 1 {}
if passes_ident!(r#async) == 1 {} // OK
module::async(); //~ ERROR expected identifier, found keyword `async`
module::r#async(); // OK
+
+ let _recovery_witness: () = 0; //~ ERROR mismatched types
}
error: expected identifier, found keyword `async`
- --> $DIR/edition-keywords-2018-2015-parsing.rs:14:13
+ --> $DIR/edition-keywords-2018-2015-parsing.rs:16:13
|
LL | let mut async = 1;
| ^^^^^ expected identifier, found keyword
| ^^^^^^^
error: expected identifier, found keyword `async`
- --> $DIR/edition-keywords-2018-2015-parsing.rs:24:13
+ --> $DIR/edition-keywords-2018-2015-parsing.rs:26:13
|
LL | module::async();
| ^^^^^ expected identifier, found keyword
| ^^^^^^^
error: no rules expected the token `r#async`
- --> $DIR/edition-keywords-2018-2015-parsing.rs:18:31
+ --> $DIR/edition-keywords-2018-2015-parsing.rs:20:31
|
LL | r#async = consumes_async!(r#async);
| ^^^^^^^ no rules expected this token in macro call
error: no rules expected the token `async`
- --> $DIR/edition-keywords-2018-2015-parsing.rs:19:35
+ --> $DIR/edition-keywords-2018-2015-parsing.rs:21:35
|
LL | r#async = consumes_async_raw!(async);
| ^^^^^ no rules expected this token in macro call
LL | ($i: ident) => ($i)
| ^ expected one of `move`, `|`, or `||`
|
- ::: $DIR/edition-keywords-2018-2015-parsing.rs:22:8
+ ::: $DIR/edition-keywords-2018-2015-parsing.rs:24:8
|
LL | if passes_ident!(async) == 1 {}
| -------------------- in this macro invocation
-error[E0658]: async closures are unstable
- --> $DIR/edition-keywords-2018-2015-parsing.rs:22:22
+error[E0308]: mismatched types
+ --> $DIR/edition-keywords-2018-2015-parsing.rs:29:33
|
-LL | if passes_ident!(async) == 1 {}
- | ^^^^^
- |
- = note: see issue #62290 <https://github.com/rust-lang/rust/issues/62290> for more information
- = help: add `#![feature(async_closure)]` to the crate attributes to enable
+LL | let _recovery_witness: () = 0;
+ | -- ^ expected `()`, found integer
+ | |
+ | expected due to this
error: aborting due to 6 previous errors
-For more information about this error, try `rustc --explain E0658`.
+For more information about this error, try `rustc --explain E0308`.
// edition:2018
// aux-build:edition-kw-macro-2018.rs
+#![feature(async_closure)]
+
fn main() {}
#[macro_use]
r#async = consumes_async_raw!(async); //~ ERROR no rules expected the token `async`
r#async = consumes_async_raw!(r#async); // OK
- if passes_ident!(async) == 1 {} //~ ERROR async closures are unstable
+ if passes_ident!(async) == 1 {}
if passes_ident!(r#async) == 1 {} // OK
module::async(); //~ ERROR expected identifier, found keyword `async`
module::r#async(); // OK
+
+ let _recovery_witness: () = 0; //~ ERROR mismatched types
}
error: expected identifier, found keyword `async`
- --> $DIR/edition-keywords-2018-2018-parsing.rs:14:13
+ --> $DIR/edition-keywords-2018-2018-parsing.rs:16:13
|
LL | let mut async = 1;
| ^^^^^ expected identifier, found keyword
| ^^^^^^^
error: expected identifier, found keyword `async`
- --> $DIR/edition-keywords-2018-2018-parsing.rs:24:13
+ --> $DIR/edition-keywords-2018-2018-parsing.rs:26:13
|
LL | module::async();
| ^^^^^ expected identifier, found keyword
| ^^^^^^^
error: no rules expected the token `r#async`
- --> $DIR/edition-keywords-2018-2018-parsing.rs:18:31
+ --> $DIR/edition-keywords-2018-2018-parsing.rs:20:31
|
LL | r#async = consumes_async!(r#async);
| ^^^^^^^ no rules expected this token in macro call
error: no rules expected the token `async`
- --> $DIR/edition-keywords-2018-2018-parsing.rs:19:35
+ --> $DIR/edition-keywords-2018-2018-parsing.rs:21:35
|
LL | r#async = consumes_async_raw!(async);
| ^^^^^ no rules expected this token in macro call
LL | ($i: ident) => ($i)
| ^ expected one of `move`, `|`, or `||`
|
- ::: $DIR/edition-keywords-2018-2018-parsing.rs:22:8
+ ::: $DIR/edition-keywords-2018-2018-parsing.rs:24:8
|
LL | if passes_ident!(async) == 1 {}
| -------------------- in this macro invocation
-error[E0658]: async closures are unstable
- --> $DIR/edition-keywords-2018-2018-parsing.rs:22:22
+error[E0308]: mismatched types
+ --> $DIR/edition-keywords-2018-2018-parsing.rs:29:33
|
-LL | if passes_ident!(async) == 1 {}
- | ^^^^^
- |
- = note: see issue #62290 <https://github.com/rust-lang/rust/issues/62290> for more information
- = help: add `#![feature(async_closure)]` to the crate attributes to enable
+LL | let _recovery_witness: () = 0;
+ | -- ^ expected `()`, found integer
+ | |
+ | expected due to this
error: aborting due to 6 previous errors
-For more information about this error, try `rustc --explain E0658`.
+For more information about this error, try `rustc --explain E0308`.
-fn main() {}
-
macro_rules! foo {
{ $+ } => { //~ ERROR expected identifier, found `+`
//~^ ERROR missing fragment specifier
}
foo!();
+
+fn main() {}
error: expected identifier, found `+`
- --> $DIR/issue-33569.rs:4:8
+ --> $DIR/issue-33569.rs:2:8
|
LL | { $+ } => {
| ^
error: expected one of: `*`, `+`, or `?`
- --> $DIR/issue-33569.rs:6:13
+ --> $DIR/issue-33569.rs:4:13
|
LL | $(x)(y)
| ^^^
error: missing fragment specifier
- --> $DIR/issue-33569.rs:4:8
+ --> $DIR/issue-33569.rs:2:8
|
LL | { $+ } => {
| ^
// aux-build:invalid-punct-ident.rs
-// We use `main` not found below as a witness for error recovery in proc macro expansion.
-
-#[macro_use] //~ ERROR `main` function not found
+#[macro_use]
extern crate invalid_punct_ident;
lexer_failure!();
//~^ ERROR proc macro panicked
//~| ERROR unexpected closing delimiter: `)`
+
+fn main() {
+ let _recovery_witness: () = 0; //~ ERROR mismatched types
+}
error: unexpected closing delimiter: `)`
- --> $DIR/invalid-punct-ident-4.rs:8:1
+ --> $DIR/invalid-punct-ident-4.rs:6:1
|
LL | lexer_failure!();
| ^^^^^^^^^^^^^^^^^ unexpected closing delimiter
= note: this error originates in a macro (in Nightly builds, run with -Z macro-backtrace for more info)
error: proc macro panicked
- --> $DIR/invalid-punct-ident-4.rs:8:1
+ --> $DIR/invalid-punct-ident-4.rs:6:1
|
LL | lexer_failure!();
| ^^^^^^^^^^^^^^^^^
-error[E0601]: `main` function not found in crate `invalid_punct_ident_4`
- --> $DIR/invalid-punct-ident-4.rs:5:1
+error[E0308]: mismatched types
+ --> $DIR/invalid-punct-ident-4.rs:11:33
|
-LL | / #[macro_use]
-LL | | extern crate invalid_punct_ident;
-LL | |
-LL | | lexer_failure!();
- | |_________________^ consider adding a `main` function to `$DIR/invalid-punct-ident-4.rs`
+LL | let _recovery_witness: () = 0;
+ | -- ^ expected `()`, found integer
+ | |
+ | expected due to this
error: aborting due to 3 previous errors
-For more information about this error, try `rustc --explain E0601`.
+For more information about this error, try `rustc --explain E0308`.