From db6b3c1ce4004b7834cbeb6d6b5feac74f7cd4c0 Mon Sep 17 00:00:00 2001 From: Aaron Hill Date: Sun, 9 Aug 2020 13:36:31 -0400 Subject: [PATCH] Remove normalization of `Span` debug output in proc-macro tests Fixes #74800 The definition of `is_x86_feature_detected!` (and similar macros) depends on the platform - it is produced by a `cfg_if!` invocation on x86, and a plain `#[cfg]` on other platforms. Since it is part of the prelude, we will end up importing different hygiene information depending on the platform. This previously required us to avoid printing raw `SyntaxContext` ids in any tests that uses the standard library, since the captured output will be platform-dependent. Previously, we replaced all `SyntaxContext` ids with "#CTXT", and the raw `Span` lo/hi bytes with "LO..HI". This commit adds `#![no_std]` and `extern crate std` to all proc-macro tests that print spans. This suppresses the prelude import, while still using lang items from `std` (which gives us a buildable binary). With this apporach, we will only load hygiene information for things which we explicitly import. This lets us re-add `-Z unpretty=expanded,hygiene`, since its output can now be made stable across all platforms. Additionally, we use `-Z span-debug` in more places, which lets us avoid the "LO..HI" normalization hack. --- .../ui/proc-macro/doc-comment-preserved.rs | 6 +- .../proc-macro/doc-comment-preserved.stdout | 18 ++-- .../ui/proc-macro/dollar-crate-issue-57089.rs | 7 +- .../dollar-crate-issue-57089.stdout | 32 +++---- .../ui/proc-macro/dollar-crate-issue-62325.rs | 8 +- .../dollar-crate-issue-62325.stdout | 44 ++++----- src/test/ui/proc-macro/dollar-crate.rs | 7 +- src/test/ui/proc-macro/dollar-crate.stdout | 96 +++++++++---------- src/test/ui/proc-macro/input-interpolated.rs | 5 +- .../ui/proc-macro/input-interpolated.stdout | 24 ++--- src/test/ui/proc-macro/meta-macro-hygiene.rs | 7 +- .../ui/proc-macro/meta-macro-hygiene.stdout | 66 ++++++++++++- src/test/ui/proc-macro/meta-macro.rs | 4 +- src/test/ui/proc-macro/meta-macro.stdout | 2 +- src/test/ui/proc-macro/nested-macro-rules.rs | 4 +- .../ui/proc-macro/nested-macro-rules.stdout | 8 +- src/test/ui/proc-macro/nodelim-groups.rs | 4 +- src/test/ui/proc-macro/nodelim-groups.stdout | 54 +++++------ 18 files changed, 233 insertions(+), 163 deletions(-) diff --git a/src/test/ui/proc-macro/doc-comment-preserved.rs b/src/test/ui/proc-macro/doc-comment-preserved.rs index c2724ae18066a..ed8ca99bd2c94 100644 --- a/src/test/ui/proc-macro/doc-comment-preserved.rs +++ b/src/test/ui/proc-macro/doc-comment-preserved.rs @@ -1,9 +1,9 @@ // check-pass +// compile-flags: -Z span-debug // aux-build:test-macros.rs -// Anonymize unstable non-dummy spans while still showing dummy spans `0..0`. -// normalize-stdout-test "bytes\([^0]\w*\.\.(\w+)\)" -> "bytes(LO..$1)" -// normalize-stdout-test "bytes\((\w+)\.\.[^0]\w*\)" -> "bytes($1..HI)" +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; #[macro_use] extern crate test_macros; diff --git a/src/test/ui/proc-macro/doc-comment-preserved.stdout b/src/test/ui/proc-macro/doc-comment-preserved.stdout index f7904536a7613..f4160d7da80e5 100644 --- a/src/test/ui/proc-macro/doc-comment-preserved.stdout +++ b/src/test/ui/proc-macro/doc-comment-preserved.stdout @@ -11,44 +11,44 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ Punct { ch: '#', spacing: Alone, - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:13:1: 19:3 (#0), }, Group { delimiter: Bracket, stream: TokenStream [ Ident { ident: "doc", - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:13:1: 19:3 (#0), }, Punct { ch: '=', spacing: Alone, - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:13:1: 19:3 (#0), }, Literal { kind: Str, symbol: "\n*******\n* DOC *\n* DOC *\n* DOC *\n*******\n", suffix: None, - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:13:1: 19:3 (#0), }, ], - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:13:1: 19:3 (#0), }, Ident { ident: "pub", - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:20:1: 20:4 (#0), }, Ident { ident: "struct", - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:20:5: 20:11 (#0), }, Ident { ident: "S", - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:20:12: 20:13 (#0), }, Punct { ch: ';', spacing: Alone, - span: #0 bytes(LO..HI), + span: $DIR/doc-comment-preserved.rs:20:13: 20:14 (#0), }, ] diff --git a/src/test/ui/proc-macro/dollar-crate-issue-57089.rs b/src/test/ui/proc-macro/dollar-crate-issue-57089.rs index 9ce90e42069fb..27bfa099f211a 100644 --- a/src/test/ui/proc-macro/dollar-crate-issue-57089.rs +++ b/src/test/ui/proc-macro/dollar-crate-issue-57089.rs @@ -1,11 +1,10 @@ // check-pass // edition:2018 +// compile-flags: -Z span-debug // aux-build:test-macros.rs -// Anonymize unstable non-dummy spans while still showing dummy spans `0..0`. -// normalize-stdout-test "bytes\([^0]\w*\.\.(\w+)\)" -> "bytes(LO..$1)" -// normalize-stdout-test "bytes\((\w+)\.\.[^0]\w*\)" -> "bytes($1..HI)" -// normalize-stdout-test "#\d+" -> "#CTXT" +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; #[macro_use] extern crate test_macros; diff --git a/src/test/ui/proc-macro/dollar-crate-issue-57089.stdout b/src/test/ui/proc-macro/dollar-crate-issue-57089.stdout index c36c75603876d..9a5afbd604f42 100644 --- a/src/test/ui/proc-macro/dollar-crate-issue-57089.stdout +++ b/src/test/ui/proc-macro/dollar-crate-issue-57089.stdout @@ -2,79 +2,79 @@ PRINT-BANG INPUT (DISPLAY): struct M($crate :: S) ; PRINT-BANG INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:13: 17:19 (#3), }, Ident { ident: "M", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:20: 17:21 (#3), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:22: 17:28 (#3), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#3), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:28: 17:30 (#3), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:30: 17:31 (#3), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:21: 17:32 (#3), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:17:32: 17:33 (#3), }, ] PRINT-ATTR INPUT (DISPLAY): struct A($crate :: S) ; PRINT-ATTR INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:9: 21:15 (#3), }, Ident { ident: "A", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:16: 21:17 (#3), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:18: 21:24 (#3), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#3), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:24: 21:26 (#3), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:26: 21:27 (#3), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:17: 21:28 (#3), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-57089.rs:21:28: 21:29 (#3), }, ] diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.rs b/src/test/ui/proc-macro/dollar-crate-issue-62325.rs index 2a9ff4c20cdec..d828fb9fd805d 100644 --- a/src/test/ui/proc-macro/dollar-crate-issue-62325.rs +++ b/src/test/ui/proc-macro/dollar-crate-issue-62325.rs @@ -1,12 +1,12 @@ // check-pass // edition:2018 +// compile-flags: -Z span-debug // aux-build:test-macros.rs // aux-build:dollar-crate-external.rs -// Anonymize unstable non-dummy spans while still showing dummy spans `0..0`. -// normalize-stdout-test "bytes\([^0]\w*\.\.(\w+)\)" -> "bytes(LO..$1)" -// normalize-stdout-test "bytes\((\w+)\.\.[^0]\w*\)" -> "bytes($1..HI)" -// normalize-stdout-test "#\d+" -> "#CTXT" + +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; #[macro_use] extern crate test_macros; diff --git a/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout b/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout index 456940b89da2b..fc62eadd31376 100644 --- a/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout +++ b/src/test/ui/proc-macro/dollar-crate-issue-62325.stdout @@ -2,109 +2,109 @@ PRINT-ATTR INPUT (DISPLAY): struct A(identity ! ($crate :: S)) ; PRINT-ATTR INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:5: 19:11 (#3), }, Ident { ident: "A", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:12: 19:13 (#3), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "identity", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:14: 19:22 (#3), }, Punct { ch: '!', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:22: 19:23 (#3), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:24: 19:30 (#3), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:30: 19:32 (#3), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:30: 19:32 (#3), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:32: 19:33 (#3), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:23: 19:34 (#3), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:13: 19:35 (#3), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate-issue-62325.rs:19:35: 19:36 (#3), }, ] PRINT-ATTR INPUT (DISPLAY): struct B(identity ! ($crate :: S)) ; PRINT-ATTR INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:5: 21:11 (#10), }, Ident { ident: "B", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:12: 21:13 (#10), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "identity", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:14: 21:22 (#10), }, Punct { ch: '!', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:22: 21:23 (#10), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:24: 21:30 (#10), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:30: 21:32 (#10), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:30: 21:32 (#10), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:32: 21:33 (#10), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:23: 21:34 (#10), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:13: 21:35 (#10), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:21:35: 21:36 (#10), }, ] diff --git a/src/test/ui/proc-macro/dollar-crate.rs b/src/test/ui/proc-macro/dollar-crate.rs index 1a5223d3d4190..ac27dfa1aeb44 100644 --- a/src/test/ui/proc-macro/dollar-crate.rs +++ b/src/test/ui/proc-macro/dollar-crate.rs @@ -1,12 +1,11 @@ // check-pass // edition:2018 +// compile-flags: -Z span-debug // aux-build:test-macros.rs // aux-build:dollar-crate-external.rs -// Anonymize unstable non-dummy spans while still showing dummy spans `0..0`. -// normalize-stdout-test "bytes\([^0]\w*\.\.(\w+)\)" -> "bytes(LO..$1)" -// normalize-stdout-test "bytes\((\w+)\.\.[^0]\w*\)" -> "bytes($1..HI)" -// normalize-stdout-test "#\d+" -> "#CTXT" +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; #[macro_use] extern crate test_macros; diff --git a/src/test/ui/proc-macro/dollar-crate.stdout b/src/test/ui/proc-macro/dollar-crate.stdout index deef102afb2d9..72fc658858304 100644 --- a/src/test/ui/proc-macro/dollar-crate.stdout +++ b/src/test/ui/proc-macro/dollar-crate.stdout @@ -2,239 +2,239 @@ PRINT-BANG INPUT (DISPLAY): struct M($crate :: S) ; PRINT-BANG INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:17: 20:23 (#3), }, Ident { ident: "M", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:24: 20:25 (#3), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:26: 20:32 (#3), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:32: 20:34 (#3), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:32: 20:34 (#3), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:34: 20:35 (#3), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:25: 20:36 (#3), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:20:36: 20:37 (#3), }, ] PRINT-ATTR INPUT (DISPLAY): struct A($crate :: S) ; PRINT-ATTR INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:13: 24:19 (#3), }, Ident { ident: "A", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:20: 24:21 (#3), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:22: 24:28 (#3), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:28: 24:30 (#3), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:28: 24:30 (#3), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:30: 24:31 (#3), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:21: 24:32 (#3), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:24:32: 24:33 (#3), }, ] PRINT-DERIVE INPUT (DISPLAY): struct D($crate :: S) ; PRINT-DERIVE INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:13: 27:19 (#3), }, Ident { ident: "D", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:20: 27:21 (#3), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:22: 27:28 (#3), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:28: 27:30 (#3), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:28: 27:30 (#3), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:30: 27:31 (#3), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:21: 27:32 (#3), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/dollar-crate.rs:27:32: 27:33 (#3), }, ] PRINT-BANG INPUT (DISPLAY): struct M($crate :: S) ; PRINT-BANG INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:13: 7:19 (#13), }, Ident { ident: "M", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:20: 7:21 (#13), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:22: 7:28 (#13), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:28: 7:30 (#13), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:28: 7:30 (#13), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:30: 7:31 (#13), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:21: 7:32 (#13), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:7:32: 7:33 (#13), }, ] PRINT-ATTR INPUT (DISPLAY): struct A($crate :: S) ; PRINT-ATTR INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:9: 11:15 (#13), }, Ident { ident: "A", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:16: 11:17 (#13), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:18: 11:24 (#13), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:24: 11:26 (#13), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:24: 11:26 (#13), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:26: 11:27 (#13), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:17: 11:28 (#13), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:11:28: 11:29 (#13), }, ] PRINT-DERIVE INPUT (DISPLAY): struct D($crate :: S) ; PRINT-DERIVE INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:9: 14:15 (#13), }, Ident { ident: "D", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:16: 14:17 (#13), }, Group { delimiter: Parenthesis, stream: TokenStream [ Ident { ident: "$crate", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:18: 14:24 (#13), }, Punct { ch: ':', spacing: Joint, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:24: 14:26 (#13), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:24: 14:26 (#13), }, Ident { ident: "S", - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:26: 14:27 (#13), }, ], - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:17: 14:28 (#13), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(LO..HI), + span: $DIR/auxiliary/dollar-crate-external.rs:14:28: 14:29 (#13), }, ] diff --git a/src/test/ui/proc-macro/input-interpolated.rs b/src/test/ui/proc-macro/input-interpolated.rs index 41c829d9d8899..5e49e330cacfa 100644 --- a/src/test/ui/proc-macro/input-interpolated.rs +++ b/src/test/ui/proc-macro/input-interpolated.rs @@ -1,9 +1,12 @@ // Check what token streams proc macros see when interpolated tokens are passed to them as input. // check-pass -// normalize-stdout-test "#\d+" -> "#CTXT" +// edition:2018 // aux-build:test-macros.rs +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; + #[macro_use] extern crate test_macros; diff --git a/src/test/ui/proc-macro/input-interpolated.stdout b/src/test/ui/proc-macro/input-interpolated.stdout index d98f52249a781..9cf33ba4a9df4 100644 --- a/src/test/ui/proc-macro/input-interpolated.stdout +++ b/src/test/ui/proc-macro/input-interpolated.stdout @@ -5,61 +5,61 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ stream: TokenStream [ Ident { ident: "A", - span: #CTXT bytes(445..446), + span: #0 bytes(503..504), }, ], - span: #CTXT bytes(312..314), + span: #3 bytes(370..372), }, ] PRINT-ATTR INPUT (DISPLAY): const A : u8 = 0 ; PRINT-ATTR INPUT (DEBUG): TokenStream [ Ident { ident: "const", - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Ident { ident: "A", - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Punct { ch: ':', spacing: Alone, - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Ident { ident: "u8", - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Punct { ch: '=', spacing: Alone, - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Literal { kind: Integer, symbol: "0", suffix: None, - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Punct { ch: ';', spacing: Alone, - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, ] PRINT-DERIVE INPUT (DISPLAY): struct A { } PRINT-DERIVE INPUT (DEBUG): TokenStream [ Ident { ident: "struct", - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Ident { ident: "A", - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, Group { delimiter: Brace, stream: TokenStream [], - span: #CTXT bytes(0..0), + span: #0 bytes(0..0), }, ] diff --git a/src/test/ui/proc-macro/meta-macro-hygiene.rs b/src/test/ui/proc-macro/meta-macro-hygiene.rs index 4b1787453cb55..c11cf42956f21 100644 --- a/src/test/ui/proc-macro/meta-macro-hygiene.rs +++ b/src/test/ui/proc-macro/meta-macro-hygiene.rs @@ -1,13 +1,16 @@ // aux-build:make-macro.rs // aux-build:meta-macro.rs // edition:2018 -// compile-flags: -Z span-debug -Z macro-backtrace +// compile-flags: -Z span-debug -Z macro-backtrace -Z unpretty=expanded,hygiene // check-pass -// normalize-stdout-test "#\d+" -> "#CTXT" // normalize-stdout-test "\d+#" -> "0#" // // We don't care about symbol ids, so we set them all to 0 // in the stdout + +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; + extern crate meta_macro; macro_rules! produce_it { diff --git a/src/test/ui/proc-macro/meta-macro-hygiene.stdout b/src/test/ui/proc-macro/meta-macro-hygiene.stdout index e162bdd7fc090..dfd3e6a839a80 100644 --- a/src/test/ui/proc-macro/meta-macro-hygiene.stdout +++ b/src/test/ui/proc-macro/meta-macro-hygiene.stdout @@ -1,3 +1,63 @@ -Def site: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) -Input: TokenStream [Ident { ident: "$crate", span: $DIR/meta-macro-hygiene.rs:20:37: 20:43 (#CTXT) }, Punct { ch: ':', spacing: Joint, span: $DIR/meta-macro-hygiene.rs:20:43: 20:45 (#CTXT) }, Punct { ch: ':', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:20:43: 20:45 (#CTXT) }, Ident { ident: "dummy", span: $DIR/meta-macro-hygiene.rs:20:45: 20:50 (#CTXT) }, Punct { ch: '!', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:20:50: 20:51 (#CTXT) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/meta-macro-hygiene.rs:20:51: 20:53 (#CTXT) }] -Respanned: TokenStream [Ident { ident: "$crate", span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) }, Punct { ch: ':', spacing: Joint, span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) }, Punct { ch: ':', spacing: Alone, span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) }, Ident { ident: "dummy", span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) }, Punct { ch: '!', spacing: Alone, span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) }] +Def site: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#4) +Input: TokenStream [Ident { ident: "$crate", span: $DIR/meta-macro-hygiene.rs:23:37: 23:43 (#3) }, Punct { ch: ':', spacing: Joint, span: $DIR/meta-macro-hygiene.rs:23:43: 23:45 (#3) }, Punct { ch: ':', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:23:43: 23:45 (#3) }, Ident { ident: "dummy", span: $DIR/meta-macro-hygiene.rs:23:45: 23:50 (#3) }, Punct { ch: '!', spacing: Alone, span: $DIR/meta-macro-hygiene.rs:23:50: 23:51 (#3) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/meta-macro-hygiene.rs:23:51: 23:53 (#3) }] +Respanned: TokenStream [Ident { ident: "$crate", span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#4) }, Punct { ch: ':', spacing: Joint, span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#4) }, Punct { ch: ':', spacing: Alone, span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#4) }, Ident { ident: "dummy", span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#4) }, Punct { ch: '!', spacing: Alone, span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#4) }, Group { delimiter: Parenthesis, stream: TokenStream [], span: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#4) }] +#![feature /* 0#0 */(prelude_import)] +// aux-build:make-macro.rs +// aux-build:meta-macro.rs +// edition:2018 +// compile-flags: -Z span-debug -Z macro-backtrace -Z unpretty=expanded,hygiene +// check-pass +// normalize-stdout-test "\d+#" -> "0#" +// +// We don't care about symbol ids, so we set them all to 0 +// in the stdout + +#![no_std /* 0#0 */] +#[prelude_import /* 0#1 */] +use core /* 0#1 */::prelude /* 0#1 */::v1 /* 0#1 */::*; +#[macro_use /* 0#1 */] +extern crate core /* 0#1 */; +#[macro_use /* 0#1 */] +extern crate compiler_builtins /* 0#1 */; +// Don't load unnecessary hygiene information from std +extern crate std /* 0#0 */; + +extern crate meta_macro /* 0#0 */; + +macro_rules! produce_it + /* + 0#0 + */ { + () => + { + meta_macro :: print_def_site ! ($ crate :: dummy ! ()) ; + // `print_def_site!` will respan the `$crate` identifier + // with `Span::def_site()`. This should cause it to resolve + // relative to `meta_macro`, *not* `make_macro` (despite + // the fact that that `print_def_site` is produced by + // a `macro_rules!` macro in `make_macro`). + } +} + +fn main /* 0#0 */() { } + +/* +Expansions: +0: parent: ExpnId(0), call_site_ctxt: #0, def_site_ctxt: #0, kind: Root +1: parent: ExpnId(0), call_site_ctxt: #0, def_site_ctxt: #0, kind: AstPass(StdImports) +2: parent: ExpnId(0), call_site_ctxt: #0, def_site_ctxt: #0, kind: Macro(Bang, "produce_it") +3: parent: ExpnId(2), call_site_ctxt: #3, def_site_ctxt: #0, kind: Macro(Bang, "meta_macro::print_def_site") +4: parent: ExpnId(3), call_site_ctxt: #4, def_site_ctxt: #0, kind: Macro(Bang, "$crate::dummy") + +SyntaxContexts: +#0: parent: #0, outer_mark: (ExpnId(0), Opaque) +#1: parent: #0, outer_mark: (ExpnId(1), Opaque) +#2: parent: #0, outer_mark: (ExpnId(1), Transparent) +#3: parent: #0, outer_mark: (ExpnId(2), SemiTransparent) +#4: parent: #0, outer_mark: (ExpnId(3), Opaque) +#5: parent: #3, outer_mark: (ExpnId(3), Transparent) +#6: parent: #0, outer_mark: (ExpnId(3), SemiTransparent) +#7: parent: #0, outer_mark: (ExpnId(4), Opaque) +#8: parent: #4, outer_mark: (ExpnId(4), Transparent) +#9: parent: #4, outer_mark: (ExpnId(4), SemiTransparent) +*/ diff --git a/src/test/ui/proc-macro/meta-macro.rs b/src/test/ui/proc-macro/meta-macro.rs index 579e232c0d92b..dbac90382d1d7 100644 --- a/src/test/ui/proc-macro/meta-macro.rs +++ b/src/test/ui/proc-macro/meta-macro.rs @@ -2,9 +2,11 @@ // aux-build:meta-macro.rs // edition:2018 // compile-flags: -Z span-debug -// normalize-stdout-test "#\d+" -> "#CTXT" // run-pass +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; + extern crate meta_macro; fn main() { diff --git a/src/test/ui/proc-macro/meta-macro.stdout b/src/test/ui/proc-macro/meta-macro.stdout index a9847a25d9273..71aa565f4dd6d 100644 --- a/src/test/ui/proc-macro/meta-macro.stdout +++ b/src/test/ui/proc-macro/meta-macro.stdout @@ -1,3 +1,3 @@ -Def site: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#CTXT) +Def site: $DIR/auxiliary/make-macro.rs:7:9: 16:10 (#3) Input: TokenStream [] Respanned: TokenStream [] diff --git a/src/test/ui/proc-macro/nested-macro-rules.rs b/src/test/ui/proc-macro/nested-macro-rules.rs index 62c3dd84ce1a4..2fef0e5fad074 100644 --- a/src/test/ui/proc-macro/nested-macro-rules.rs +++ b/src/test/ui/proc-macro/nested-macro-rules.rs @@ -2,9 +2,11 @@ // aux-build:nested-macro-rules.rs // aux-build:test-macros.rs // compile-flags: -Z span-debug -// normalize-stdout-test "#\d+" -> "#CTXT" // edition:2018 +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; + extern crate nested_macro_rules; extern crate test_macros; diff --git a/src/test/ui/proc-macro/nested-macro-rules.stdout b/src/test/ui/proc-macro/nested-macro-rules.stdout index 337b9863def1b..7feea56c5d860 100644 --- a/src/test/ui/proc-macro/nested-macro-rules.stdout +++ b/src/test/ui/proc-macro/nested-macro-rules.stdout @@ -5,10 +5,10 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ stream: TokenStream [ Ident { ident: "FirstStruct", - span: $DIR/auxiliary/nested-macro-rules.rs:15:14: 15:25 (#CTXT), + span: $DIR/auxiliary/nested-macro-rules.rs:15:14: 15:25 (#5), }, ], - span: $DIR/auxiliary/nested-macro-rules.rs:9:27: 9:32 (#CTXT), + span: $DIR/auxiliary/nested-macro-rules.rs:9:27: 9:32 (#4), }, ] PRINT-BANG INPUT (DISPLAY): SecondStruct @@ -18,9 +18,9 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ stream: TokenStream [ Ident { ident: "SecondStruct", - span: $DIR/nested-macro-rules.rs:19:38: 19:50 (#CTXT), + span: $DIR/nested-macro-rules.rs:21:38: 21:50 (#11), }, ], - span: $DIR/auxiliary/nested-macro-rules.rs:9:27: 9:32 (#CTXT), + span: $DIR/auxiliary/nested-macro-rules.rs:9:27: 9:32 (#10), }, ] diff --git a/src/test/ui/proc-macro/nodelim-groups.rs b/src/test/ui/proc-macro/nodelim-groups.rs index 1dc8796de90f9..db2a879f40504 100644 --- a/src/test/ui/proc-macro/nodelim-groups.rs +++ b/src/test/ui/proc-macro/nodelim-groups.rs @@ -1,11 +1,13 @@ // run-pass // aux-build:test-macros.rs // compile-flags: -Z span-debug -// normalize-stdout-test "#\d+" -> "#CTXT" // edition:2018 // // Tests the pretty-printing behavior of inserting `NoDelim` groups +#![no_std] // Don't load unnecessary hygiene information from std +extern crate std; + extern crate test_macros; use test_macros::print_bang_consume; diff --git a/src/test/ui/proc-macro/nodelim-groups.stdout b/src/test/ui/proc-macro/nodelim-groups.stdout index 79cdf2b53b52e..2fcd41f6da056 100644 --- a/src/test/ui/proc-macro/nodelim-groups.stdout +++ b/src/test/ui/proc-macro/nodelim-groups.stdout @@ -4,7 +4,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ kind: Str, symbol: "hi", suffix: None, - span: $DIR/nodelim-groups.rs:14:42: 14:46 (#CTXT), + span: $DIR/nodelim-groups.rs:16:42: 16:46 (#3), }, Group { delimiter: None, @@ -13,12 +13,12 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ kind: Integer, symbol: "1", suffix: None, - span: $DIR/nodelim-groups.rs:18:16: 18:17 (#CTXT), + span: $DIR/nodelim-groups.rs:20:16: 20:17 (#0), }, Punct { ch: '+', spacing: Alone, - span: $DIR/nodelim-groups.rs:18:18: 18:19 (#CTXT), + span: $DIR/nodelim-groups.rs:20:18: 20:19 (#0), }, Group { delimiter: Parenthesis, @@ -27,24 +27,24 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ kind: Integer, symbol: "25", suffix: None, - span: $DIR/nodelim-groups.rs:18:21: 18:23 (#CTXT), + span: $DIR/nodelim-groups.rs:20:21: 20:23 (#0), }, ], - span: $DIR/nodelim-groups.rs:18:20: 18:24 (#CTXT), + span: $DIR/nodelim-groups.rs:20:20: 20:24 (#0), }, Punct { ch: '+', spacing: Alone, - span: $DIR/nodelim-groups.rs:18:25: 18:26 (#CTXT), + span: $DIR/nodelim-groups.rs:20:25: 20:26 (#0), }, Literal { kind: Integer, symbol: "1", suffix: None, - span: $DIR/nodelim-groups.rs:18:27: 18:28 (#CTXT), + span: $DIR/nodelim-groups.rs:20:27: 20:28 (#0), }, ], - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#3), }, Group { delimiter: Parenthesis, @@ -53,21 +53,21 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ kind: Integer, symbol: "1", suffix: None, - span: $DIR/nodelim-groups.rs:14:53: 14:54 (#CTXT), + span: $DIR/nodelim-groups.rs:16:53: 16:54 (#3), }, Punct { ch: '+', spacing: Alone, - span: $DIR/nodelim-groups.rs:14:55: 14:56 (#CTXT), + span: $DIR/nodelim-groups.rs:16:55: 16:56 (#3), }, Literal { kind: Integer, symbol: "1", suffix: None, - span: $DIR/nodelim-groups.rs:14:57: 14:58 (#CTXT), + span: $DIR/nodelim-groups.rs:16:57: 16:58 (#3), }, ], - span: $DIR/nodelim-groups.rs:14:52: 14:59 (#CTXT), + span: $DIR/nodelim-groups.rs:16:52: 16:59 (#3), }, ] PRINT-BANG INPUT (DISPLAY): "hi" "hello".len() + "world".len() (1 + 1) @@ -77,7 +77,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ kind: Str, symbol: "hi", suffix: None, - span: $DIR/nodelim-groups.rs:14:42: 14:46 (#CTXT), + span: $DIR/nodelim-groups.rs:16:42: 16:46 (#8), }, Group { delimiter: None, @@ -86,49 +86,49 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ kind: Str, symbol: "hello", suffix: None, - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Punct { ch: '.', spacing: Alone, - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Ident { ident: "len", - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Group { delimiter: Parenthesis, stream: TokenStream [], - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Punct { ch: '+', spacing: Alone, - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Literal { kind: Str, symbol: "world", suffix: None, - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Punct { ch: '.', spacing: Alone, - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Ident { ident: "len", - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Group { delimiter: Parenthesis, stream: TokenStream [], - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, ], - span: $DIR/nodelim-groups.rs:14:47: 14:51 (#CTXT), + span: $DIR/nodelim-groups.rs:16:47: 16:51 (#8), }, Group { delimiter: Parenthesis, @@ -137,20 +137,20 @@ PRINT-BANG INPUT (DEBUG): TokenStream [ kind: Integer, symbol: "1", suffix: None, - span: $DIR/nodelim-groups.rs:14:53: 14:54 (#CTXT), + span: $DIR/nodelim-groups.rs:16:53: 16:54 (#8), }, Punct { ch: '+', spacing: Alone, - span: $DIR/nodelim-groups.rs:14:55: 14:56 (#CTXT), + span: $DIR/nodelim-groups.rs:16:55: 16:56 (#8), }, Literal { kind: Integer, symbol: "1", suffix: None, - span: $DIR/nodelim-groups.rs:14:57: 14:58 (#CTXT), + span: $DIR/nodelim-groups.rs:16:57: 16:58 (#8), }, ], - span: $DIR/nodelim-groups.rs:14:52: 14:59 (#CTXT), + span: $DIR/nodelim-groups.rs:16:52: 16:59 (#8), }, ]