diff options
-rw-r--r-- | disabled_tests_run-pass.txt | 4 | ||||
-rw-r--r-- | src/macro_rules/eval.cpp | 9 |
2 files changed, 10 insertions, 3 deletions
diff --git a/disabled_tests_run-pass.txt b/disabled_tests_run-pass.txt index a0cdb566..2aa127a9 100644 --- a/disabled_tests_run-pass.txt +++ b/disabled_tests_run-pass.txt @@ -21,11 +21,11 @@ deriving-copyclone # BUG: `derive(Copy,Clone)` generates a standard clone impl format-ref-cell # BUG: format_args! ordering ifmt # MISSING: Support for * in format_args! hygiene # TODO: Attempted to copy a :expr fragment (shouldn't error, bug in impl?) -hygienic-labels # BUG: macro_rules eval doesn't support break/continue labels -hygienic-labels-in-let # ^ issue-11085 # MISSING: cfg() on enum variants issue-15221 # BUG: macro_rules eval - :pat in :pat issue-18859 # BUG: module_path! doesn't include crate name +hygienic-labels # BUG: hygine doesn't apply to loop labels +hygienic-labels-in-let # ^ # codegen-units sepcomp-fns diff --git a/src/macro_rules/eval.cpp b/src/macro_rules/eval.cpp index 6344b26a..fc54616e 100644 --- a/src/macro_rules/eval.cpp +++ b/src/macro_rules/eval.cpp @@ -1116,6 +1116,9 @@ namespace return consume_tt(lex); } break; + case TOK_RWORD_BOX: + lex.consume(); + return consume_pat(lex); case TOK_AMP: case TOK_DOUBLE_AMP: lex.consume(); @@ -1202,6 +1205,7 @@ namespace case TOK_STAR: // Deref case TOK_DASH: // Negate case TOK_EXCLAM: // Invert + case TOK_RWORD_BOX: // Box lex.consume(); break; case TOK_AMP: @@ -1222,9 +1226,12 @@ namespace switch(lex.next()) { case TOK_RWORD_CONTINUE: - case TOK_RWORD_RETURN: case TOK_RWORD_BREAK: lex.consume(); + lex.consume_if(TOK_LIFETIME); + if(0) + case TOK_RWORD_RETURN: + lex.consume(); switch(lex.next()) { case TOK_EOF: |