]> git.lizzy.rs Git - rust.git/commitdiff
expand: address review comments
authorMazdak Farrokhzad <twingoow@gmail.com>
Wed, 18 Mar 2020 12:34:11 +0000 (13:34 +0100)
committerMazdak Farrokhzad <twingoow@gmail.com>
Tue, 24 Mar 2020 05:28:56 +0000 (06:28 +0100)
src/librustc_expand/mbe/macro_rules.rs
src/test/ui/editions/edition-keywords-2018-2015-parsing.rs
src/test/ui/editions/edition-keywords-2018-2015-parsing.stderr
src/test/ui/editions/edition-keywords-2018-2018-parsing.rs
src/test/ui/editions/edition-keywords-2018-2018-parsing.stderr
src/test/ui/parser/macro/issue-33569.rs
src/test/ui/parser/macro/issue-33569.stderr
src/test/ui/proc-macro/invalid-punct-ident-4.rs
src/test/ui/proc-macro/invalid-punct-ident-4.stderr

index 43bc72090bc43892536abfc2d2d298f4fba0c378..859362b5e29d391cd269ff8fe344fd4d6c82d5a5 100644 (file)
@@ -180,17 +180,12 @@ fn expand<'cx>(
     }
 }
 
-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) {
@@ -443,14 +438,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));
         }
     };
 
@@ -513,16 +508,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(
index a7a10d0f677afc24aaa571b11913a664f5e1f35a..d5ed9fb9a285efd885f5f40527eaf4ed7a1a6b48 100644 (file)
@@ -1,6 +1,8 @@
 // edition:2018
 // aux-build:edition-kw-macro-2015.rs
 
+#![feature(async_closure)]
+
 fn main() {}
 
 #[macro_use]
@@ -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
 }
index 3c3b934b531c81ed83f65f819760bdd2fbf3617f..28663563c6ccdf1079aea69293ca1398d0613f09 100644 (file)
@@ -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
@@ -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
@@ -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
@@ -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`.
index b12ad76a74798f49dec992c2630d663c8728214a..044ab249f2c2660f61ae510d4c9e798fd0af578e 100644 (file)
@@ -1,6 +1,8 @@
 // edition:2018
 // aux-build:edition-kw-macro-2018.rs
 
+#![feature(async_closure)]
+
 fn main() {}
 
 #[macro_use]
@@ -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
 }
index a2b129d17e0be14f9b17a9b7828fce3ffed65677..cda7e65e437e85e1f31803096da47d7d1b4fd710 100644 (file)
@@ -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
@@ -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
@@ -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
@@ -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`.
index e32825ad3e06449a4fe23e8d3e1ee9160c2b86a9..80e2d7c6545ba277512e0c9c2ad7ee0a0c70be40 100644 (file)
@@ -1,5 +1,3 @@
-fn main() {}
-
 macro_rules! foo {
     { $+ } => { //~ ERROR expected identifier, found `+`
                 //~^ ERROR missing fragment specifier
@@ -8,3 +6,5 @@ macro_rules! foo {
 }
 
 foo!();
+
+fn main() {}
index a08d26095f5643891fa5da143ee7f4b6e88cf8d5..b4d38d3ce4806ca8c5a6d9bf50241a3c01bdb684 100644 (file)
@@ -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 |     { $+ } => {
    |        ^
index ab0250f53f6992251805bbb41f036b2b9a43fbf6..59b347dac679c252dd44fccd83acda84ffa59d5e 100644 (file)
@@ -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
+}
index 296e2fb094280e2fa1f1f650489f1f192fe213a7..3b357aecea864d685397256279ec1cb31f317979 100644 (file)
@@ -1,5 +1,5 @@
 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
@@ -7,20 +7,19 @@ LL | lexer_failure!();
    = 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`.