Skip to content

Commit

Permalink
expand: address review comments
Browse files Browse the repository at this point in the history
  • Loading branch information
Centril committed Mar 18, 2020
1 parent 83313e4 commit 7d38b0f
Show file tree
Hide file tree
Showing 9 changed files with 64 additions and 64 deletions.
29 changes: 11 additions & 18 deletions src/librustc_expand/mbe/macro_rules.rs
Original file line number Diff line number Diff line change
Expand Up @@ -181,17 +181,12 @@ impl TTMacroExpander for MacroRulesMacroExpander {
}
}

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) {
Expand Down Expand Up @@ -450,14 +445,14 @@ pub fn compile_declarative_macro(
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));
}
};

Expand Down Expand Up @@ -520,16 +515,14 @@ pub fn compile_declarative_macro(
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(
Expand Down
6 changes: 5 additions & 1 deletion src/test/ui/editions/edition-keywords-2018-2015-parsing.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// edition:2018
// aux-build:edition-kw-macro-2015.rs

#![feature(async_closure)]

fn main() {}

#[macro_use]
Expand All @@ -19,8 +21,10 @@ pub fn check_async() {
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
}
25 changes: 12 additions & 13 deletions src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
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
Expand All @@ -10,7 +10,7 @@ LL | let mut r#async = 1;
| ^^^^^^^

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
Expand All @@ -21,13 +21,13 @@ LL | module::r#async();
| ^^^^^^^

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
Expand All @@ -38,20 +38,19 @@ error: macro expansion ends with an incomplete expression: expected one of `move
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`.
6 changes: 5 additions & 1 deletion src/test/ui/editions/edition-keywords-2018-2018-parsing.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// edition:2018
// aux-build:edition-kw-macro-2018.rs

#![feature(async_closure)]

fn main() {}

#[macro_use]
Expand All @@ -19,8 +21,10 @@ pub fn check_async() {
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
}
25 changes: 12 additions & 13 deletions src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
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
Expand All @@ -10,7 +10,7 @@ LL | let mut r#async = 1;
| ^^^^^^^

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
Expand All @@ -21,13 +21,13 @@ LL | module::r#async();
| ^^^^^^^

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
Expand All @@ -38,20 +38,19 @@ error: macro expansion ends with an incomplete expression: expected one of `move
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`.
4 changes: 2 additions & 2 deletions src/test/ui/parser/macro/issue-33569.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
fn main() {}

macro_rules! foo {
{ $+ } => { //~ ERROR expected identifier, found `+`
//~^ ERROR missing fragment specifier
Expand All @@ -8,3 +6,5 @@ macro_rules! foo {
}

foo!();

fn main() {}
6 changes: 3 additions & 3 deletions src/test/ui/parser/macro/issue-33569.stderr
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
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 | { $+ } => {
| ^
Expand Down
8 changes: 5 additions & 3 deletions src/test/ui/proc-macro/invalid-punct-ident-4.rs
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
// 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
}
19 changes: 9 additions & 10 deletions src/test/ui/proc-macro/invalid-punct-ident-4.stderr
Original file line number Diff line number Diff line change
@@ -1,26 +1,25 @@
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`.

0 comments on commit 7d38b0f

Please sign in to comment.