Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement `#[macro_export(local_inner_macros)]` (a solution for the macro helper import problem) #51496

Merged
merged 1 commit into from Jun 27, 2018

Conversation

@petrochenkov
Copy link
Contributor

petrochenkov commented Jun 11, 2018

Implement a solution for the macro helper issue discussed in #35896 as described in #35896 (comment).

Macros exported from libraries can be marked with #[macro_export(local_inner_macros)] and this annotation changes how nested macros in them are resolved.

If we have a fn-like macro call ident!(...) and ident comes from a macro_rules! macro marked with #[macro_export(local_inner_macros)] then it's replaced with $crate::ident!(...) and resolved as such ($crate gets the same context as ident).

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

rust-highfive commented Jun 11, 2018

r? @pnkfelix

(rust_highfive has picked a reviewer for you, use r? to override)

@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Jun 11, 2018

r? @nikomatsakis

cc @dtolnay @rust-lang/lang
I've added only a basic test, if you are interested in some test cases, please tell! I'll add them as well.

@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Jun 11, 2018

There's one subtle detail that affects how we treat the nom-like cases.

If we have a macro call using a macro variable, like $var!(...) where $var ultimately means ident, then we check whether that ident comes from a macro_helper_hack macro, not the macro call $var!(...) itself.

// Library crate
#[macro_export(macro_helper_hack)]
macro_rules! public {
    ($helper: ident) => {
        $helper!();
    }
}

// User crate
// `my_helper` is not affected by the macro helper hack (not changed to `$crate::my_helper`) and is resolved in the user crate, not library crate
public!(my_helper);

The primary alternative is to determine whether the change is applicable using context of the macro call $var!() rather than context of ident.
In that case my_helper would be resolved in the library crate.

@rust-highfive

This comment has been minimized.

Copy link
Collaborator

rust-highfive commented Jun 11, 2018

The job x86_64-gnu-llvm-3.9 of your PR failed on Travis (raw log). Through arcane magic we have determined that the following fragments from the build log may contain information about the problem.

Click to expand the log.
[00:44:37] ....................................................................................................
[00:44:41] ....................................................................................................
[00:44:44] ....................................................................................................
[00:44:47] ....................................................................................................
[00:44:52] ..............F.....................................................................................
[00:45:02] ....................................................................................................
[00:45:08] ....................................................................................................
[00:45:13] ......i..............................................................................i..............
[00:45:18] ....................................................................................................
---
[00:45:36] 273 
[00:45:36] 274 warning: unused attribute
[00:45:36] -   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:210:17
[00:45:36] -    |
[00:45:36] - LL |     mod inner { #![macro_export="4800"] }
[00:45:36] - 
[00:45:36] - warning: unused attribute
[00:45:36] -   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:213:5
[00:45:36] -    |
[00:45:36] -    |
[00:45:36] - LL |     #[macro_export = "4800"] fn f() { }
[00:45:36] - 
[00:45:36] - warning: unused attribute
[00:45:36] -   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:216:5
[00:45:36] -    |
[00:45:36] -    |
[00:45:36] - LL |     #[macro_export = "4800"] struct S;
[00:45:36] - 
[00:45:36] - warning: unused attribute
[00:45:36] -   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:219:5
[00:45:36] -    |
[00:45:36] -    |
[00:45:36] - LL |     #[macro_export = "4800"] type T = S;
[00:45:36] - 
[00:45:36] - warning: unused attribute
[00:45:36] -   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:222:5
[00:45:36] -    |
[00:45:36] -    |
[00:45:36] - LL |     #[macro_export = "4800"] impl S { }
[00:45:36] - 
[00:45:36] - warning: unused attribute
[00:45:36] -   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:207:1
[00:45:36] -    |
[00:45:36] -    |
[00:45:36] - LL | #[macro_export = "4800"]
[00:45:36] - 
[00:45:36] - warning: unused attribute
[00:45:36] 311   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:229:17
[00:45:36] 312    |
[00:45:36] 312    |
[00:45:36] 313 LL |     mod inner { #![plugin_registrar="4700"] }
[00:45:36] 1240    |
[00:45:36] 1240    |
[00:45:36] 1241 LL | #[type_length_limit="0100"]
[00:45:36] - 
[00:45:36] - warning: unused attribute
[00:45:36] -   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:54:1
[00:45:36] -    |
[00:45:36] -    |
[00:45:36] - LL | #![macro_export               = "4800"] //~ WARN unused attribute
[00:45:36] 1249 
[00:45:36] 1250 warning: unused attribute
[00:45:36] 1251   --> $DIR/issue-43106-gating-of-builtin-attrs.rs:55:1
[00:45:36] 
[00:45:36] 
[00:45:36] 
[00:45:36] The actual stderr differed from the expected stderr.
[00:45:36] Actual stderr saved to /checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs/issue-43106-gating-of-builtin-attrs.stderr
[00:45:36] To update references, rerun the tests and pass the `--bless` flag
[00:45:36] To only update this specific test, also pass `--test-args feature-gate/issue-43106-gating-of-builtin-attrs.rs`
[00:45:36] error: 1 errors occurred comparing output.
[00:45:36] status: exit code: 101
[00:45:36] status: exit code: 101
[00:45:36] command: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs" "--target=x86_64-unknown-linux-gnu" "--error-format" "json" "-Zui-testing" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs/a" "-Crpath" "-O" "-Zunstable-options" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs/auxiliary" "-A" "unused"
[00:45:36] ------------------------------------------
[00:45:36] 
[00:45:36] ------------------------------------------
[00:45:36] stderr:
[00:45:36] stderr:
[00:45:36] ------------------------------------------
[00:45:36] {"message":"macro_escape is a deprecated synonym for macro_use","code":null,"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13899,"byte_end":13914,"line_start":500,"line_end":500,"column_start":1,"column_end":16,"is_primary":true,"text":[{"text":"#[macro_escape]","highlight_start":1,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: macro_escape is a deprecated synonym for macro_use\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:500:1\n   |\nLL | #[macro_escape]\n   | ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"macro_escape is a deprecated synonym for macro_use","code":null,"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14011,"byte_end":14027,"line_start":503,"line_end":503,"column_start":17,"column_end":33,"is_primary":true,"text":[{"text":"    mod inner { #![macro_escape] }","highlight_start":17,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"consider an outer attribute, #[macro_use] mod ...","code":null,"level":"help","spans":[],"children":[],"rendered":null}],"rendered":"warning: macro_escape is a deprecated synonym for macro_use\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:503:17\n   |\nLL |     mod inner { #![macro_escape] }\n   |                 ^^^^^^^^^^^^^^^^\n   |\n   = help: consider an outer attribute, #[macro_use] mod ...\n\n"}
[00:45:36] {"message":"unknown lint: `x5400`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2078,"byte_end":2083,"line_start":49,"line_end":49,"column_start":33,"column_end":38,"is_primary":true,"text":[{"text":"#![warn                        (x5400)] //~ WARN unknown lint: `x5400`","highlight_start":33,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"lint level defined here","code":null,"level":"note","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":1963,"byte_end":1976,"line_start":44,"line_end":44,"column_start":28,"column_end":41,"is_primary":true,"text":[{"text":"#![warn(unused_attributes, unknown_lints)]","highlight_start":28,"highlight_end":41}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"warning: unknown lint: `x5400`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:49:33\n   |\nLL | #![warn                        (x5400)] //~ WARN unknown lint: `x5400`\n   |                                 ^^^^^\n   |\nnote: lint level defined here\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:44:28\n   |\nLL | #![warn(unused_attributes, unknown_lints)]\n   |                            ^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5300`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2149,"byte_end":2154,"line_start":50,"line_end":50,"column_start":33,"column_end":38,"is_primary":true,"text":[{"text":"#![allow                       (x5300)] //~ WARN unknown lint: `x5300`","highlight_start":33,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5300`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:50:33\n   |\nLL | #![allow                       (x5300)] //~ WARN unknown lint: `x5300`\n   |                                 ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5200`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2220,"byte_end":2225,"line_start":51,"line_end":51,"column_start":33,"column_end":38,"is_primary":true,"text":[{"text":"#![forbid                      (x5200)] //~ WARN unknown lint: `x5200`","highlight_start":33,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5200`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:51:33\n   |\nLL | #![forbid                      (x5200)] //~ WARN unknown lint: `x5200`\n   |                                 ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5100`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2291,"byte_end":2296,"line_start":52,"line_end":52,"column_start":33,"column_end":38,"is_primary":true,"text":[{"text":"#![deny                        (x5100)] //~ WARN unknown lint: `x5100`","highlight_start":33,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5100`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:52:33\n   |\nLL | #![deny                        (x5100)] //~ WARN unknown lint: `x5100`\n   |                                 ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5400`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5342,"byte_end":5347,"line_start":114,"line_end":114,"column_start":8,"column_end":13,"is_primary":true,"text":[{"text":"#[warn(x5400)]","highlight_start":8,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5400`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:114:8\n   |\nLL | #[warn(x5400)]\n   |        ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5400`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5417,"byte_end":5422,"line_start":117,"line_end":117,"column_start":25,"column_end":30,"is_primary":true,"text":[{"text":"    mod inner { #![warn(x5400)] }","highlight_start":25,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5400`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:117:25\n   |\nLL |     mod inner { #![warn(x5400)] }\n   |                         ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5400`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5475,"byte_end":5480,"line_start":120,"line_end":120,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[warn(x5400)] fn f() { }","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5400`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:120:12\n   |\nLL |     #[warn(x5400)] fn f() { }\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5400`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5542,"byte_end":5547,"line_start":123,"line_end":123,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[warn(x5400)] struct S;","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5400`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:123:12\n   |\nLL |     #[warn(x5400)] struct S;\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5400`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5608,"byte_end":5613,"line_start":126,"line_end":126,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[warn(x5400)] type T = S;","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5400`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:126:12\n   |\nLL |     #[warn(x5400)] type T = S;\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5400`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5676,"byte_end":5681,"line_start":129,"line_end":129,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[warn(x5400)] impl S { }","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5400`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:129:12\n   |\nLL |     #[warn(x5400)] impl S { }\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5300`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5742,"byte_end":5747,"line_start":133,"line_end":133,"column_start":9,"column_end":14,"is_primary":true,"text":[{"text":"#[allow(x5300)]","highlight_start":9,"highlight_end":14}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5300`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:133:9\n   |\nLL | #[allow(x5300)]\n   |         ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5300`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5819,"byte_end":5824,"line_start":136,"line_end":136,"column_start":26,"column_end":31,"is_primary":true,"text":[{"text":"    mod inner { #![allow(x5300)] }","highlight_start":26,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5300`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:136:26\n   |\nLL |     mod inner { #![allow(x5300)] }\n   |                          ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5300`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5878,"byte_end":5883,"line_start":139,"line_end":139,"column_start":13,"column_end":18,"is_primary":true,"text":[{"text":"    #[allow(x5300)] fn f() { }","highlight_start":13,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5300`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:139:13\n   |\nLL |     #[allow(x5300)] fn f() { }\n   |             ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5300`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":5946,"byte_end":5951,"line_start":142,"line_end":142,"column_start":13,"column_end":18,"is_primary":true,"text":[{"text":"    #[allow(x5300)] struct S;","highlight_start":13,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5300`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:142:13\n   |\nLL |     #[allow(x5300)] struct S;\n   |             ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5300`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6013,"byte_end":6018,"line_start":145,"line_end":145,"column_start":13,"column_end":18,"is_primary":true,"text":[{"text":"    #[allow(x5300)] type T = S;","highlight_start":13,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5300`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:145:13\n   |\nLL |     #[allow(x5300)] type T = S;\n   |             ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5300`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6082,"byte_end":6087,"line_start":148,"line_end":148,"column_start":13,"column_end":18,"is_primary":true,"text":[{"text":"    #[allow(x5300)] impl S { }","highlight_start":13,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5300`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:148:13\n   |\nLL |     #[allow(x5300)] impl S { }\n   |             ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5200`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6149,"byte_end":6154,"line_start":152,"line_end":152,"column_start":10,"column_end":15,"is_primary":true,"text":[{"text":"#[forbid(x5200)]","highlight_start":10,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5200`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:152:10\n   |\nLL | #[forbid(x5200)]\n   |          ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5200`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6228,"byte_end":6233,"line_start":155,"line_end":155,"column_start":27,"column_end":32,"is_primary":true,"text":[{"text":"    mod inner { #![forbid(x5200)] }","highlight_start":27,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5200`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:155:27\n   |\nLL |     mod inner { #![forbid(x5200)] }\n   |                           ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5200`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6288,"byte_end":6293,"line_start":158,"line_end":158,"column_start":14,"column_end":19,"is_primary":true,"text":[{"text":"    #[forbid(x5200)] fn f() { }","highlight_start":14,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5200`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:158:14\n   |\nLL |     #[forbid(x5200)] fn f() { }\n   |              ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5200`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6357,"byte_end":6362,"line_start":161,"line_end":161,"column_start":14,"column_end":19,"is_primary":true,"text":[{"text":"    #[forbid(x5200)] struct S;","highlight_start":14,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5200`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:161:14\n   |\nLL |     #[forbid(x5200)] struct S;\n   |              ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5200`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6425,"byte_end":6430,"line_start":164,"line_end":164,"column_start":14,"column_end":19,"is_primary":true,"text":[{"text":"    #[forbid(x5200)] type T = S;","highlight_start":14,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5200`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:164:14\n   |\nLL |     #[forbid(x5200)] type T = S;\n   |              ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5200`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6495,"byte_end":6500,"line_start":167,"line_end":167,"column_start":14,"column_end":19,"is_primary":true,"text":[{"text":"    #[forbid(x5200)] impl S { }","highlight_start":14,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5200`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:167:14\n   |\nLL |     #[forbid(x5200)] impl S { }\n   |              ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5100`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6560,"byte_end":6565,"line_start":171,"line_end":171,"column_start":8,"column_end":13,"is_primary":true,"text":[{"text":"#[deny(x5100)]","highlight_start":8,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5100`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:171:8\n   |\nLL | #[deny(x5100)]\n   |        ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5100`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6635,"byte_end":6640,"line_start":174,"line_end":174,"column_start":25,"column_end":30,"is_primary":true,"text":[{"text":"    mod inner { #![deny(x5100)] }","highlight_start":25,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5100`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:174:25\n   |\nLL |     mod inner { #![deny(x5100)] }\n   |                         ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5100`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6693,"byte_end":6698,"line_start":177,"line_end":177,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[deny(x5100)] fn f() { }","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5100`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:177:12\n   |\nLL |     #[deny(x5100)] fn f() { }\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5100`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6760,"byte_end":6765,"line_start":180,"line_end":180,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[deny(x5100)] struct S;","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5100`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:180:12\n   |\nLL |     #[deny(x5100)] struct S;\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5100`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6826,"byte_end":6831,"line_start":183,"line_end":183,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[deny(x5100)] type T = S;","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5100`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:183:12\n   |\nLL |     #[deny(x5100)] type T = S;\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"unknown lint: `x5100`","code":{"code":"unknown_lints","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":6894,"byte_end":6899,"line_start":186,"line_end":186,"column_start":12,"column_end":17,"is_primary":true,"text":[{"text":"    #[deny(x5100)] impl S { }","highlight_start":12,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unknown lint: `x5100`\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:186:12\n   |\nLL |     #[deny(x5100)] impl S { }\n   |            ^^^^^\n\n"}
[00:45:36] {"message":"`repr` attribute isn't configurable with a literal","code":{"code":"bad_repr","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9576,"byte_end":9591,"line_start":316,"line_end":316,"column_start":17,"column_end":32,"is_primary":true,"text":[{"text":"    mod inner { #![repr=\"3900\"] }","highlight_start":17,"highlight_end":32}],"label":"needs a hint","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"#[warn(bad_repr)] on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"warning: `repr` attribute isn't configurable with a literal\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:316:17\n   |\nLL |     mod inner { #![repr=\"3900\"] }\n   |                 ^^^^^^^^^^^^^^^ needs a hint\n   |\n   = note: #[warn(bad_repr)] on by default\n   = help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`\n   = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>\n\n"}
[00:45:36] {"message":"`repr` attribute isn't configurable with a literal","code":{"code":"bad_repr","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9695,"byte_end":9711,"line_start":320,"line_end":320,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[repr = \"3900\"] fn f() { }","highlight_start":5,"highlight_end":21}],"label":"needs a hint","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"warning: `repr` attribute isn't configurable with a literal\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:320:5\n   |\nLL |     #[repr = \"3900\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^ needs a hint\n   |\n   = help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`\n   = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>\n\n"}
[00:45:36] {"message":"`repr` attribute isn't configurable with a literal","code":{"code":"bad_repr","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9839,"byte_end":9855,"line_start":326,"line_end":326,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[repr = \"3900\"] type T = S;","highlight_start":5,"highlight_end":21}],"label":"needs a hint","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"warning: `repr` attribute isn't configurable with a literal\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:326:5\n   |\nLL |     #[repr = \"3900\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^ needs a hint\n   |\n   = help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`\n   = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>\n\n"}
[00:45:36] {"message":"`repr` attribute isn't configurable with a literal","code":{"code":"bad_repr","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9969,"byte_end":9985,"line_start":330,"line_end":330,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[repr = \"3900\"] impl S { }","highlight_start":5,"highlight_end":21}],"label":"needs a hint","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"warning: `repr` attribute isn't configurable with a literal\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:330:5\n   |\nLL |     #[repr = \"3900\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^ needs a hint\n   |\n   = help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`\n   = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>\n\n"}
[00:45:36] {"message":"`repr` attribute isn't configurable with a literal","code":{"code":"bad_repr","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9444,"byte_end":9460,"line_start":312,"line_end":312,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"#[repr = \"3900\"]","highlight_start":1,"highlight_end":17}],"label":"needs a hint","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"warning: `repr` attribute isn't configurable with a literal\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:312:1\n   |\nLL | #[repr = \"3900\"]\n   | ^^^^^^^^^^^^^^^^ needs a hint\n   |\n   = help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`\n   = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>\n\n"}
[00:45:36] {"message":"`repr` attribute isn't configurable with a literal","code":{"code":"bad_repr","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2922,"byte_end":2961,"line_start":62,"line_end":62,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![repr                       = \"3900\"]","highlight_start":1,"highlight_end":40}],"label":"needs a hint","suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`","code":null,"level":"help","spans":[],"children":[],"rendered":null},{"message":"for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"warning: `repr` attribute isn't configurable with a literal\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:62:1\n   |\nLL | #![repr                       = \"3900\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ needs a hint\n   |\n   = help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`\n   = note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7018,"byte_end":7030,"line_start":194,"line_end":194,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":"    #[macro_use] fn f() { }","highlight_start":5,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"lint level defined here","code":null,"level":"note","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":1944,"byte_end":1961,"line_start":44,"line_end":44,"column_start":9,"column_end":26,"is_primary":true,"text":[{"text":"#![warn(unused_attributes, unknown_lints)]","highlight_start":9,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":null}],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:194:5\n   |\nLL |     #[macro_use] fn f() { }\n   |     ^^^^^^^^^^^^\n   |\nnote: lint level defined here\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:44:9\n   |\nLL | #![warn(unused_attributes, unknown_lints)]\n   |         ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7078,"byte_end":7090,"line_start":197,"line_end":197,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":"    #[macro_use] struct S;","highlight_start":5,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:197:5\n   |\nLL |     #[macro_use] struct S;\n   |     ^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7137,"byte_end":7149,"line_start":200,"line_end":200,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":"    #[macro_use] type T = S;","highlight_start":5,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:200:5\n   |\nLL |     #[macro_use] type T = S;\n   |     ^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7198,"byte_end":7210,"line_start":203,"line_end":203,"column_start":5,"column_end":17,"is_primary":true,"text":[{"text":"    #[macro_use] impl S { }","highlight_start":5,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:203:5\n   |\nLL |     #[macro_use] impl S { }\n   |     ^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7786,"byte_end":7813,"line_start":229,"line_end":229,"column_start":17,"column_end":44,"is_primary":true,"text":[{"text":"    mod inner { #![plugin_registrar=\"4700\"] }","highlight_start":17,"highlight_end":44}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:229:17\n   |\nLL |     mod inner { #![plugin_registrar=\"4700\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7909,"byte_end":7937,"line_start":234,"line_end":234,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":"    #[plugin_registrar = \"4700\"] struct S;","highlight_start":5,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:234:5\n   |\nLL |     #[plugin_registrar = \"4700\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7984,"byte_end":8012,"line_start":237,"line_end":237,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":"    #[plugin_registrar = \"4700\"] type T = S;","highlight_start":5,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:237:5\n   |\nLL |     #[plugin_registrar = \"4700\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8061,"byte_end":8089,"line_start":240,"line_end":240,"column_start":5,"column_end":33,"is_primary":true,"text":[{"text":"    #[plugin_registrar = \"4700\"] impl S { }","highlight_start":5,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:240:5\n   |\nLL |     #[plugin_registrar = \"4700\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":7691,"byte_end":7719,"line_start":226,"line_end":226,"column_start":1,"column_end":29,"is_primary":true,"text":[{"text":"#[plugin_registrar = \"4700\"]","highlight_start":1,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:226:1\n   |\nLL | #[plugin_registrar = \"4700\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8206,"byte_end":8221,"line_start":247,"line_end":247,"column_start":17,"column_end":32,"is_primary":true,"text":[{"text":"    mod inner { #![main=\"4300\"] }","highlight_start":17,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:247:17\n   |\nLL |     mod inner { #![main=\"4300\"] }\n   |                 ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8312,"byte_end":8328,"line_start":252,"line_end":252,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[main = \"4400\"] struct S;","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:252:5\n   |\nLL |     #[main = \"4400\"] struct S;\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8375,"byte_end":8391,"line_start":255,"line_end":255,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[main = \"4400\"] type T = S;","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:255:5\n   |\nLL |     #[main = \"4400\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8440,"byte_end":8456,"line_start":258,"line_end":258,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[main = \"4400\"] impl S { }","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:258:5\n   |\nLL |     #[main = \"4400\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8135,"byte_end":8151,"line_start":244,"line_end":244,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"#[main = \"4400\"]","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:244:1\n   |\nLL | #[main = \"4400\"]\n   | ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8575,"byte_end":8591,"line_start":265,"line_end":265,"column_start":17,"column_end":33,"is_primary":true,"text":[{"text":"    mod inner { #![start=\"4300\"] }","highlight_start":17,"highlight_end":33}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:265:17\n   |\nLL |     mod inner { #![start=\"4300\"] }\n   |                 ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8683,"byte_end":8700,"line_start":270,"line_end":270,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[start = \"4300\"] struct S;","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:270:5\n   |\nLL |     #[start = \"4300\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8747,"byte_end":8764,"line_start":273,"line_end":273,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[start = \"4300\"] type T = S;","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:273:5\n   |\nLL |     #[start = \"4300\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8813,"byte_end":8830,"line_start":276,"line_end":276,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[start = \"4300\"] impl S { }","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:276:5\n   |\nLL |     #[start = \"4300\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":8502,"byte_end":8519,"line_start":262,"line_end":262,"column_start":1,"column_end":18,"is_primary":true,"text":[{"text":"#[start = \"4300\"]","highlight_start":1,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:262:1\n   |\nLL | #[start = \"4300\"]\n   | ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9576,"byte_end":9591,"line_start":316,"line_end":316,"column_start":17,"column_end":32,"is_primary":true,"text":[{"text":"    mod inner { #![repr=\"3900\"] }","highlight_start":17,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:316:17\n   |\nLL |     mod inner { #![repr=\"3900\"] }\n   |                 ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9695,"byte_end":9711,"line_start":320,"line_end":320,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[repr = \"3900\"] fn f() { }","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:320:5\n   |\nLL |     #[repr = \"3900\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9839,"byte_end":9855,"line_start":326,"line_end":326,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[repr = \"3900\"] type T = S;","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:326:5\n   |\nLL |     #[repr = \"3900\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9969,"byte_end":9985,"line_start":330,"line_end":330,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[repr = \"3900\"] impl S { }","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:330:5\n   |\nLL |     #[repr = \"3900\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":9444,"byte_end":9460,"line_start":312,"line_end":312,"column_start":1,"column_end":17,"is_primary":true,"text":[{"text":"#[repr = \"3900\"]","highlight_start":1,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:312:1\n   |\nLL | #[repr = \"3900\"]\n   | ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10163,"byte_end":10179,"line_start":339,"line_end":339,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[path = \"3800\"] fn f() { }","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:339:5\n   |\nLL |     #[path = \"3800\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10227,"byte_end":10243,"line_start":342,"line_end":342,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[path = \"3800\"]  struct S;","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:342:5\n   |\nLL |     #[path = \"3800\"]  struct S;\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10291,"byte_end":10307,"line_start":345,"line_end":345,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[path = \"3800\"] type T = S;","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:345:5\n   |\nLL |     #[path = \"3800\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10356,"byte_end":10372,"line_start":348,"line_end":348,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"    #[path = \"3800\"] impl S { }","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:348:5\n   |\nLL |     #[path = \"3800\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10487,"byte_end":10501,"line_start":355,"line_end":355,"column_start":17,"column_end":31,"is_primary":true,"text":[{"text":"    mod inner { #![abi=\"3700\"] }","highlight_start":17,"highlight_end":31}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:355:17\n   |\nLL |     mod inner { #![abi=\"3700\"] }\n   |                 ^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10540,"byte_end":10555,"line_start":358,"line_end":358,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[abi = \"3700\"] fn f() { }","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:358:5\n   |\nLL |     #[abi = \"3700\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10603,"byte_end":10618,"line_start":361,"line_end":361,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[abi = \"3700\"] struct S;","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:361:5\n   |\nLL |     #[abi = \"3700\"] struct S;\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10665,"byte_end":10680,"line_start":364,"line_end":364,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[abi = \"3700\"] type T = S;","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:364:5\n   |\nLL |     #[abi = \"3700\"] type T = S;\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10729,"byte_end":10744,"line_start":367,"line_end":367,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[abi = \"3700\"] impl S { }","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:367:5\n   |\nLL |     #[abi = \"3700\"] impl S { }\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10418,"byte_end":10433,"line_start":352,"line_end":352,"column_start":1,"column_end":16,"is_primary":true,"text":[{"text":"#[abi = \"3700\"]","highlight_start":1,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:352:1\n   |\nLL | #[abi = \"3700\"]\n   | ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10895,"byte_end":10927,"line_start":374,"line_end":374,"column_start":17,"column_end":49,"is_primary":true,"text":[{"text":"    mod inner { #![automatically_derived=\"3600\"] }","highlight_start":17,"highlight_end":49}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:374:17\n   |\nLL |     mod inner { #![automatically_derived=\"3600\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10966,"byte_end":10999,"line_start":377,"line_end":377,"column_start":5,"column_end":38,"is_primary":true,"text":[{"text":"    #[automatically_derived = \"3600\"] fn f() { }","highlight_start":5,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:377:5\n   |\nLL |     #[automatically_derived = \"3600\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11047,"byte_end":11080,"line_start":380,"line_end":380,"column_start":5,"column_end":38,"is_primary":true,"text":[{"text":"    #[automatically_derived = \"3600\"] struct S;","highlight_start":5,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:380:5\n   |\nLL |     #[automatically_derived = \"3600\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11127,"byte_end":11160,"line_start":383,"line_end":383,"column_start":5,"column_end":38,"is_primary":true,"text":[{"text":"    #[automatically_derived = \"3600\"] type T = S;","highlight_start":5,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:383:5\n   |\nLL |     #[automatically_derived = \"3600\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11209,"byte_end":11242,"line_start":386,"line_end":386,"column_start":5,"column_end":38,"is_primary":true,"text":[{"text":"    #[automatically_derived = \"3600\"] impl S { }","highlight_start":5,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:386:5\n   |\nLL |     #[automatically_derived = \"3600\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":10790,"byte_end":10823,"line_start":371,"line_end":371,"column_start":1,"column_end":34,"is_primary":true,"text":[{"text":"#[automatically_derived = \"3600\"]","highlight_start":1,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:371:1\n   |\nLL | #[automatically_derived = \"3600\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"function is marked #[no_mangle], but not exported","code":{"code":"private_no_mangle_fns","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11392,"byte_end":11402,"line_start":394,"line_end":394,"column_start":27,"column_end":37,"is_primary":true,"text":[{"text":"    #[no_mangle = \"3500\"] fn f() { }","highlight_start":27,"highlight_end":37}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"#[warn(private_no_mangle_fns)] on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"try making it public","code":null,"level":"help","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11392,"byte_end":11392,"line_start":394,"line_end":394,"column_start":27,"column_end":27,"is_primary":true,"text":[{"text":"    #[no_mangle = \"3500\"] fn f() { }","highlight_start":27,"highlight_end":27}],"label":null,"suggested_replacement":"pub ","suggestion_applicability":"Unspecified","expansion":null}],"children":[],"rendered":null}],"rendered":"warning: function is marked #[no_mangle], but not exported\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:394:27\n   |\nLL |     #[no_mangle = \"3500\"] fn f() { }\n   |                           -^^^^^^^^^\n   |                           |\n   |                           help: try making it public: `pub`\n   |\n   = note: #[warn(private_no_mangle_fns)] on by default\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11661,"byte_end":11679,"line_start":407,"line_end":407,"column_start":17,"column_end":35,"is_primary":true,"text":[{"text":"    mod inner { #![no_link=\"3400\"] }","highlight_start":17,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:407:17\n   |\nLL |     mod inner { #![no_link=\"3400\"] }\n   |                 ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11718,"byte_end":11737,"line_start":410,"line_end":410,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_link = \"3400\"] fn f() { }","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:410:5\n   |\nLL |     #[no_link = \"3400\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11785,"byte_end":11804,"line_start":413,"line_end":413,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_link = \"3400\"] struct S;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:413:5\n   |\nLL |     #[no_link = \"3400\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11851,"byte_end":11870,"line_start":416,"line_end":416,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_link = \"3400\"]type T = S;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:416:5\n   |\nLL |     #[no_link = \"3400\"]type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11918,"byte_end":11937,"line_start":419,"line_end":419,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_link = \"3400\"] impl S { }","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:419:5\n   |\nLL |     #[no_link = \"3400\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11584,"byte_end":11603,"line_start":404,"line_end":404,"column_start":1,"column_end":20,"is_primary":true,"text":[{"text":"#[no_link = \"3400\"]","highlight_start":1,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:404:1\n   |\nLL | #[no_link = \"3400\"]\n   | ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12070,"byte_end":12093,"line_start":426,"line_end":426,"column_start":17,"column_end":40,"is_primary":true,"text":[{"text":"    mod inner { #![should_panic=\"3200\"] }","highlight_start":17,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:426:17\n   |\nLL |     mod inner { #![should_panic=\"3200\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12132,"byte_end":12156,"line_start":429,"line_end":429,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":"    #[should_panic = \"3200\"] fn f() { }","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:429:5\n   |\nLL |     #[should_panic = \"3200\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12204,"byte_end":12228,"line_start":432,"line_end":432,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":"    #[should_panic = \"3200\"] struct S;","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:432:5\n   |\nLL |     #[should_panic = \"3200\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12275,"byte_end":12299,"line_start":435,"line_end":435,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":"    #[should_panic = \"3200\"] type T = S;","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:435:5\n   |\nLL |     #[should_panic = \"3200\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12348,"byte_end":12372,"line_start":438,"line_end":438,"column_start":5,"column_end":29,"is_primary":true,"text":[{"text":"    #[should_panic = \"3200\"] impl S { }","highlight_start":5,"highlight_end":29}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:438:5\n   |\nLL |     #[should_panic = \"3200\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":11983,"byte_end":12007,"line_start":423,"line_end":423,"column_start":1,"column_end":25,"is_primary":true,"text":[{"text":"#[should_panic = \"3200\"]","highlight_start":1,"highlight_end":25}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:423:1\n   |\nLL | #[should_panic = \"3200\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12493,"byte_end":12510,"line_start":445,"line_end":445,"column_start":17,"column_end":34,"is_primary":true,"text":[{"text":"    mod inner { #![ignore=\"3100\"] }","highlight_start":17,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:445:17\n   |\nLL |     mod inner { #![ignore=\"3100\"] }\n   |                 ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12549,"byte_end":12567,"line_start":448,"line_end":448,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[ignore = \"3100\"] fn f() { }","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:448:5\n   |\nLL |     #[ignore = \"3100\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12615,"byte_end":12633,"line_start":451,"line_end":451,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[ignore = \"3100\"] struct S;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:451:5\n   |\nLL |     #[ignore = \"3100\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12680,"byte_end":12698,"line_start":454,"line_end":454,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[ignore = \"3100\"] type T = S;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:454:5\n   |\nLL |     #[ignore = \"3100\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12747,"byte_end":12765,"line_start":457,"line_end":457,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[ignore = \"3100\"] impl S { }","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:457:5\n   |\nLL |     #[ignore = \"3100\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12418,"byte_end":12436,"line_start":442,"line_end":442,"column_start":1,"column_end":19,"is_primary":true,"text":[{"text":"#[ignore = \"3100\"]","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:442:1\n   |\nLL | #[ignore = \"3100\"]\n   | ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12912,"byte_end":12942,"line_start":464,"line_end":464,"column_start":17,"column_end":47,"is_primary":true,"text":[{"text":"    mod inner { #![no_implicit_prelude=\"3000\"] }","highlight_start":17,"highlight_end":47}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:464:17\n   |\nLL |     mod inner { #![no_implicit_prelude=\"3000\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12981,"byte_end":13012,"line_start":467,"line_end":467,"column_start":5,"column_end":36,"is_primary":true,"text":[{"text":"    #[no_implicit_prelude = \"3000\"] fn f() { }","highlight_start":5,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:467:5\n   |\nLL |     #[no_implicit_prelude = \"3000\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13060,"byte_end":13091,"line_start":470,"line_end":470,"column_start":5,"column_end":36,"is_primary":true,"text":[{"text":"    #[no_implicit_prelude = \"3000\"] struct S;","highlight_start":5,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:470:5\n   |\nLL |     #[no_implicit_prelude = \"3000\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13138,"byte_end":13169,"line_start":473,"line_end":473,"column_start":5,"column_end":36,"is_primary":true,"text":[{"text":"    #[no_implicit_prelude = \"3000\"] type T = S;","highlight_start":5,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:473:5\n   |\nLL |     #[no_implicit_prelude = \"3000\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13218,"byte_end":13249,"line_start":476,"line_end":476,"column_start":5,"column_end":36,"is_primary":true,"text":[{"text":"    #[no_implicit_prelude = \"3000\"] impl S { }","highlight_start":5,"highlight_end":36}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:476:5\n   |\nLL |     #[no_implicit_prelude = \"3000\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":12811,"byte_end":12842,"line_start":461,"line_end":461,"column_start":1,"column_end":32,"is_primary":true,"text":[{"text":"#[no_implicit_prelude = \"3000\"]","highlight_start":1,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:461:1\n   |\nLL | #[no_implicit_prelude = \"3000\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13410,"byte_end":13447,"line_start":483,"line_end":483,"column_start":17,"column_end":54,"is_primary":true,"text":[{"text":"    mod inner { #![reexport_test_harness_main=\"2900\"] }","highlight_start":17,"highlight_end":54}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:483:17\n   |\nLL |     mod inner { #![reexport_test_harness_main=\"2900\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13486,"byte_end":13524,"line_start":486,"line_end":486,"column_start":5,"column_end":43,"is_primary":true,"text":[{"text":"    #[reexport_test_harness_main = \"2900\"] fn f() { }","highlight_start":5,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:486:5\n   |\nLL |     #[reexport_test_harness_main = \"2900\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13572,"byte_end":13610,"line_start":489,"line_end":489,"column_start":5,"column_end":43,"is_primary":true,"text":[{"text":"    #[reexport_test_harness_main = \"2900\"] struct S;","highlight_start":5,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:489:5\n   |\nLL |     #[reexport_test_harness_main = \"2900\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13657,"byte_end":13695,"line_start":492,"line_end":492,"column_start":5,"column_end":43,"is_primary":true,"text":[{"text":"    #[reexport_test_harness_main = \"2900\"] type T = S;","highlight_start":5,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:492:5\n   |\nLL |     #[reexport_test_harness_main = \"2900\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13744,"byte_end":13782,"line_start":495,"line_end":495,"column_start":5,"column_end":43,"is_primary":true,"text":[{"text":"    #[reexport_test_harness_main = \"2900\"] impl S { }","highlight_start":5,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:495:5\n   |\nLL |     #[reexport_test_harness_main = \"2900\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":13295,"byte_end":13333,"line_start":480,"line_end":480,"column_start":1,"column_end":39,"is_primary":true,"text":[{"text":"#[reexport_test_harness_main = \"2900\"]","highlight_start":1,"highlight_end":39}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:480:1\n   |\nLL | #[reexport_test_harness_main = \"2900\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14100,"byte_end":14115,"line_start":506,"line_end":506,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[macro_escape] fn f() { }","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:506:5\n   |\nLL |     #[macro_escape] fn f() { }\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14163,"byte_end":14178,"line_start":509,"line_end":509,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[macro_escape] struct S;","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:509:5\n   |\nLL |     #[macro_escape] struct S;\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14225,"byte_end":14240,"line_start":512,"line_end":512,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[macro_escape] type T = S;","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:512:5\n   |\nLL |     #[macro_escape] type T = S;\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14289,"byte_end":14304,"line_start":515,"line_end":515,"column_start":5,"column_end":20,"is_primary":true,"text":[{"text":"    #[macro_escape] impl S { }","highlight_start":5,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:515:5\n   |\nLL |     #[macro_escape] impl S { }\n   |     ^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14486,"byte_end":14503,"line_start":523,"line_end":523,"column_start":17,"column_end":34,"is_primary":true,"text":[{"text":"    mod inner { #![no_std=\"2600\"] }","highlight_start":17,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:523:17\n   |\nLL |     mod inner { #![no_std=\"2600\"] }\n   |                 ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be in the root module","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14486,"byte_end":14503,"line_start":523,"line_end":523,"column_start":17,"column_end":34,"is_primary":true,"text":[{"text":"    mod inner { #![no_std=\"2600\"] }","highlight_start":17,"highlight_end":34}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be in the root module\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:523:17\n   |\nLL |     mod inner { #![no_std=\"2600\"] }\n   |                 ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14607,"byte_end":14625,"line_start":527,"line_end":527,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] fn f() { }","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:527:5\n   |\nLL |     #[no_std = \"2600\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14607,"byte_end":14625,"line_start":527,"line_end":527,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] fn f() { }","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:527:5\n   |\nLL |     #[no_std = \"2600\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14738,"byte_end":14756,"line_start":531,"line_end":531,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] struct S;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:531:5\n   |\nLL |     #[no_std = \"2600\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14738,"byte_end":14756,"line_start":531,"line_end":531,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] struct S;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:531:5\n   |\nLL |     #[no_std = \"2600\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14868,"byte_end":14886,"line_start":535,"line_end":535,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] type T = S;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:535:5\n   |\nLL |     #[no_std = \"2600\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14868,"byte_end":14886,"line_start":535,"line_end":535,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] type T = S;","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:535:5\n   |\nLL |     #[no_std = \"2600\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":15000,"byte_end":15018,"line_start":539,"line_end":539,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] impl S { }","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:539:5\n   |\nLL |     #[no_std = \"2600\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":15000,"byte_end":15018,"line_start":539,"line_end":539,"column_start":5,"column_end":23,"is_primary":true,"text":[{"text":"    #[no_std = \"2600\"] impl S { }","highlight_start":5,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:539:5\n   |\nLL |     #[no_std = \"2600\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14350,"byte_end":14368,"line_start":519,"line_end":519,"column_start":1,"column_end":19,"is_primary":true,"text":[{"text":"#[no_std = \"2600\"]","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:519:1\n   |\nLL | #[no_std = \"2600\"]\n   | ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":14350,"byte_end":14368,"line_start":519,"line_end":519,"column_start":1,"column_end":19,"is_primary":true,"text":[{"text":"#[no_std = \"2600\"]","highlight_start":1,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:519:1\n   |\nLL | #[no_std = \"2600\"]\n   | ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":17950,"byte_end":17971,"line_start":678,"line_end":678,"column_start":17,"column_end":38,"is_primary":true,"text":[{"text":"    mod inner { #![crate_name=\"0900\"] }","highlight_start":17,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:678:17\n   |\nLL |     mod inner { #![crate_name=\"0900\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be in the root module","code":{"code":"unused_attributes","explanation":null},"level":"warning","spkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18075,"byte_end":18097,"line_start":682,"line_end":682,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_name = \"0900\"] fn f() { }","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:682:5\n   |\nLL |     #[crate_name = \"0900\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18210,"byte_end":18232,"line_start":686,"line_end":686,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_name = \"0900\"] struct S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:686:5\n   |\nLL |     #[crate_name = \"0900\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18210,"byte_end":18232,"line_start":686,"line_end":686,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_name = \"0900\"] struct S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:686:5\n   |\nLL |     #[crate_name = \"0900\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18344,"byte_end":18366,"line_start":690,"line_end":690,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_name = \"0900\"] type T = S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:690:5\n   |\nLL |     #[crate_name = \"0900\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18344,"byte_end":18366,"line_start":690,"line_end":690,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_name = \"0900\"] type T = S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:690:5\n   |\nLL |     #[crate_name = \"0900\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18480,"byte_end":18502,"line_start":694,"line_end":694,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_name = \"0900\"] impl S { }","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:694:5\n   |\nLL |     #[crate_name = \"0900\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18480,"byte_end":18502,"line_start":694,"line_end":694,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_name = \"0900\"] impl S { }","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:694:5\n   |\nLL |     #[crate_name = \"0900\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":17806,"byte_end":17828,"line_start":674,"line_end":674,"column_start":1,"column_end":23,"is_primary":true,"text":[{"text":"#[crate_name = \"0900\"]","highlight_start":1,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:674:1\n   |\nLL | #[crate_name = \"0900\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":17806,"byte_end":17828,"line_start":674,"line_end":674,"column_start":1,"column_end":23,"is_primary":true,"text":[{"text":"#[crate_name = \"0900\"]","highlight_start":1,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:674:1\n   |\nLL | #[crate_name = \"0900\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18757,"byte_end":18778,"line_start":703,"line_end":703,"column_start":17,"column_end":38,"is_primary":true,"text":[{"text":"    mod inner { #![crate_type=\"0800\"] }","highlight_start":17,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:703:17\n   |\nLL |     mod inner { #![crate_type=\"0800\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be in the root module","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18757,"byte_end":18778,"line_start":703,"line_end":703,"column_start":17,"column_end":38,"is_primary":true,"text":[{"text":"    mod inner { #![crate_type=\"0800\"] }","highlight_start":17,"highlight_end":38}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be in the root module\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:703:17\n   |\nLL |     mod inner { #![crate_type=\"0800\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18882,"byte_end":18904,"line_start":707,"line_end":707,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] fn f() { }","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:707:5\n   |\nLL |     #[crate_type = \"0800\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18882,"byte_end":18904,"line_start":707,"line_end":707,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] fn f() { }","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:707:5\n   |\nLL |     #[crate_type = \"0800\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19017,"byte_end":19039,"line_start":711,"line_end":711,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] struct S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:711:5\n   |\nLL |     #[crate_type = \"0800\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19017,"byte_end":19039,"line_start":711,"line_end":711,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] struct S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:711:5\n   |\nLL |     #[crate_type = \"0800\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19151,"byte_end":19173,"line_start":715,"line_end":715,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] type T = S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:715:5\n   |\nLL |     #[crate_type = \"0800\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19151,"byte_end":19173,"line_start":715,"line_end":715,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] type T = S;","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:715:5\n   |\nLL |     #[crate_type = \"0800\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19287,"byte_end":19309,"line_start":719,"line_end":719,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] impl S { }","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:719:5\n   |\nLL |     #[crate_type = \"0800\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19287,"byte_end":19309,"line_start":719,"line_end":719,"column_start":5,"column_end":27,"is_primary":true,"text":[{"text":"    #[crate_type = \"0800\"] impl S { }","highlight_start":5,"highlight_end":27}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:719:5\n   |\nLL |     #[crate_type = \"0800\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18613,"byte_end":18635,"line_start":699,"line_end":699,"column_start":1,"column_end":23,"is_primary":true,"text":[{"text":"#[crate_type = \"0800\"]","highlight_start":1,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:699:1\n   |\nLL | #[crate_type = \"0800\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":18613,"byte_end":18635,"line_start":699,"line_end":699,"column_start":1,"column_end":23,"is_primary":true,"text":[{"text":"#[crate_type = \"0800\"]","highlight_start":1,"highlight_end":23}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:699:1\n   |\nLL | #[crate_type = \"0800\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19556,"byte_end":19574,"line_start":728,"line_end":728,"column_start":17,"column_end":35,"is_primary":true,"text":[{"text":"    mod inner { #![feature(x0600)] }","highlight_start":17,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:728:17\n   |\nLL |     mod inner { #![feature(x0600)] }\n   |                 ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be in the root module","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19556,"byte_end":19574,"line_start":728,"line_end":728,"column_start":17,"column_end":35,"is_primary":true,"text":[{"text":"    mod inner { #![feature(x0600)] }","highlight_start":17,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be in the root module\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:728:17\n   |\nLL |     mod inner { #![feature(x0600)] }\n   |                 ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19678,"byte_end":19695,"line_start":732,"line_end":732,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] fn f() { }","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:732:5\n   |\nLL |     #[feature(x0600)] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19678,"byte_end":19695,"line_start":732,"line_end":732,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] fn f() { }","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:732:5\n   |\nLL |     #[feature(x0600)] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19808,"byte_end":19825,"line_start":736,"line_end":736,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] struct S;","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:736:5\n   |\nLL |     #[feature(x0600)] struct S;\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19808,"byte_end":19825,"line_start":736,"line_end":736,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] struct S;","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:736:5\n   |\nLL |     #[feature(x0600)] struct S;\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19937,"byte_end":19954,"line_start":740,"line_end":740,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] type T = S;","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:740:5\n   |\nLL |     #[feature(x0600)] type T = S;\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19937,"byte_end":19954,"line_start":740,"line_end":740,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] type T = S;","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:740:5\n   |\nLL |     #[feature(x0600)] type T = S;\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20068,"byte_end":20085,"line_start":744,"line_end":744,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] impl S { }","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:744:5\n   |\nLL |     #[feature(x0600)] impl S { }\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20068,"byte_end":20085,"line_start":744,"line_end":744,"column_start":5,"column_end":22,"is_primary":true,"text":[{"text":"    #[feature(x0600)] impl S { }","highlight_start":5,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:744:5\n   |\nLL |     #[feature(x0600)] impl S { }\n   |     ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19420,"byte_end":19437,"line_start":724,"line_end":724,"column_start":1,"column_end":18,"is_primary":true,"text":[{"text":"#[feature(x0600)]","highlight_start":1,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:724:1\n   |\nLL | #[feature(x0600)]\n   | ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":19420,"byte_end":19437,"line_start":724,"line_end":724,"column_start":1,"column_end":18,"is_primary":true,"text":[{"text":"#[feature(x0600)]","highlight_start":1,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:724:1\n   |\nLL | #[feature(x0600)]\n   | ^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20337,"byte_end":20355,"line_start":754,"line_end":754,"column_start":17,"column_end":35,"is_primary":true,"text":[{"text":"    mod inner { #![no_main=\"0400\"] }","highlight_start":17,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:754:17\n   |\nLL |     mod inner { #![no_main=\"0400\"] }\n   |                 ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be in the root module","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20337,"byte_end":20355,"line_start":754,"line_end":754,"column_start":17,"column_end":35,"is_primary":true,"text":[{"text":"    mod inner { #![no_main=\"0400\"] }","highlight_start":17,"highlight_end":35}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be in the root module\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:754:17\n   |\nLL |     mod inner { #![no_main=\"0400\"] }\n   |                 ^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20459,"byte_end":20478,"line_start":758,"line_end":758,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] fn f() { }","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:758:5\n   |\nLL |     #[no_main = \"0400\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20459,"byte_end":20478,"line_start":758,"line_end":758,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] fn f() { }","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:758:5\n   |\nLL |     #[no_main = \"0400\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20591,"byte_end":20610,"line_start":762,"line_end":762,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] struct S;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:762:5\n   |\nLL |     #[no_main = \"0400\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20591,"byte_end":20610,"line_start":762,"line_end":762,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] struct S;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:762:5\n   |\nLL |     #[no_main = \"0400\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20722,"byte_end":20741,"line_start":766,"line_end":766,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] type T = S;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:766:5\n   |\nLL |     #[no_main = \"0400\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20722,"byte_end":20741,"line_start":766,"line_end":766,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] type T = S;","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:766:5\n   |\nLL |     #[no_main = \"0400\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20855,"byte_end":20874,"line_start":770,"line_end":770,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] impl S { }","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:770:5\n   |\nLL |     #[no_main = \"0400\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20855,"byte_end":20874,"line_start":770,"line_end":770,"column_start":5,"column_end":24,"is_primary":true,"text":[{"text":"    #[no_main = \"0400\"] impl S { }","highlight_start":5,"highlight_end":24}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:770:5\n   |\nLL |     #[no_main = \"0400\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20197,"byte_end":20216,"line_start":750,"line_end":750,"column_start":1,"column_end":20,"is_primary":true,"text":[{"text":"#[no_main = \"0400\"]","highlight_start":1,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:750:1\n   |\nLL | #[no_main = \"0400\"]\n   | ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":20197,"byte_end":20216,"line_start":750,"line_end":750,"column_start":1,"column_end":20,"is_primary":true,"text":[{"text":"#[no_main = \"0400\"]","highlight_start":1,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:750:1\n   |\nLL | #[no_main = \"0400\"]\n   | ^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21383,"byte_end":21409,"line_start":792,"line_end":792,"column_start":17,"column_end":43,"is_primary":true,"text":[{"text":"    mod inner { #![recursion_limit=\"0200\"] }","highlight_start":17,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:792:17\n   |\nLL |     mod inner { #![recursion_limit=\"0200\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be in the root module","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21383,"byte_end":21409,"line_start":792,"line_end":792,"column_start":17,"column_end":43,"is_primary":true,"text":[{"text":"    mod inner { #![recursion_limit=\"0200\"] }","highlight_start":17,"highlight_end":43}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be in the root module\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:792:17\n   |\nLL |     mod inner { #![recursion_limit=\"0200\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21513,"byte_end":21538,"line_start":796,"line_end":796,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] fn f() { }","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:796:5\n   |\nLL |     #[recursion_limit=\"0200\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21513,"byte_end":21538,"line_start":796,"line_end":796,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] fn f() { }","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:796:5\n   |\nLL |     #[recursion_limit=\"0200\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21651,"byte_end":21676,"line_start":800,"line_end":800,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] struct S;","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:800:5\n   |\nLL |     #[recursion_limit=\"0200\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21651,"byte_end":21676,"line_start":800,"line_end":800,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] struct S;","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:800:5\n   |\nLL |     #[recursion_limit=\"0200\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21788,"byte_end":21813,"line_start":804,"line_end":804,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] type T = S;","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:804:5\n   |\nLL |     #[recursion_limit=\"0200\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21788,"byte_end":21813,"line_start":804,"line_end":804,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] type T = S;","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:804:5\n   |\nLL |     #[recursion_limit=\"0200\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21927,"byte_end":21952,"line_start":808,"line_end":808,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] impl S { }","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:808:5\n   |\nLL |     #[recursion_limit=\"0200\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21927,"byte_end":21952,"line_start":808,"line_end":808,"column_start":5,"column_end":30,"is_primary":true,"text":[{"text":"    #[recursion_limit=\"0200\"] impl S { }","highlight_start":5,"highlight_end":30}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:808:5\n   |\nLL |     #[recursion_limit=\"0200\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21231,"byte_end":21256,"line_start":788,"line_end":788,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"#[recursion_limit=\"0200\"]","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:788:1\n   |\nLL | #[recursion_limit=\"0200\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":21231,"byte_end":21256,"line_start":788,"line_end":788,"column_start":1,"column_end":26,"is_primary":true,"text":[{"text":"#[recursion_limit=\"0200\"]","highlight_start":1,"highlight_end":26}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:788:1\n   |\nLL | #[recursion_limit=\"0200\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22219,"byte_end":22247,"line_start":817,"line_end":817,"column_start":17,"column_end":45,"is_primary":true,"text":[{"text":"    mod inner { #![type_length_limit=\"0100\"] }","highlight_start":17,"highlight_end":45}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:817:17\n   |\nLL |     mod inner { #![type_length_limit=\"0100\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be in the root module","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22219,"byte_end":22247,"line_start":817,"line_end":817,"column_start":17,"column_end":45,"is_primary":true,"text":[{"text":"    mod inner { #![type_length_limit=\"0100\"] }","highlight_start":17,"highlight_end":45}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be in the root module\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:817:17\n   |\nLL |     mod inner { #![type_length_limit=\"0100\"] }\n   |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22351,"byte_end":22378,"line_start":821,"line_end":821,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] fn f() { }","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:821:5\n   |\nLL |     #[type_length_limit=\"0100\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22351,"byte_end":22378,"line_start":821,"line_end":821,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] fn f() { }","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:821:5\n   |\nLL |     #[type_length_limit=\"0100\"] fn f() { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22491,"byte_end":22518,"line_start":825,"line_end":825,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] struct S;","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:825:5\n   |\nLL |     #[type_length_limit=\"0100\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22491,"byte_end":22518,"line_start":825,"line_end":825,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] struct S;","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:825:5\n   |\nLL |     #[type_length_limit=\"0100\"] struct S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22630,"byte_end":22657,"line_start":829,"line_end":829,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] type T = S;","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:829:5\n   |\nLL |     #[type_length_limit=\"0100\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22630,"byte_end":22657,"line_start":829,"line_end":829,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] type T = S;","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:829:5\n   |\nLL |     #[type_length_limit=\"0100\"] type T = S;\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22771,"byte_end":22798,"line_start":833,"line_end":833,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] impl S { }","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:833:5\n   |\nLL |     #[type_length_limit=\"0100\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22771,"byte_end":22798,"line_start":833,"line_end":833,"column_start":5,"column_end":32,"is_primary":true,"text":[{"text":"    #[type_length_limit=\"0100\"] impl S { }","highlight_start":5,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:833:5\n   |\nLL |     #[type_length_limit=\"0100\"] impl S { }\n   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22063,"byte_end":22090,"line_start":813,"line_end":813,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"#[type_length_limit=\"0100\"]","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:813:1\n   |\nLL | #[type_length_limit=\"0100\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":22063,"byte_end":22090,"line_start":813,"line_end":813,"column_start":1,"column_end":28,"is_primary":true,"text":[{"text":"#[type_length_limit=\"0100\"]","highlight_start":1,"highlight_end":28}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:813:1\n   |\nLL | #[type_length_limit=\"0100\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2478,"byte_end":2517,"line_start":55,"line_end":55,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![plugin_registrar           = \"4700\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:55:1\n   |\nLL | #![plugin_registrar           = \"4700\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2603,"byte_end":2642,"line_start":58,"line_end":58,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![main                      = \"x4400\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:58:1\n   |\nLL | #![main                      = \"x4400\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2669,"byte_end":2708,"line_start":59,"line_end":59,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![start                     = \"x4300\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:59:1\n   |\nLL | #![start                     = \"x4300\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":2922,"byte_end":2961,"line_start":62,"line_end":62,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![repr                       = \"3900\"]","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:62:1\n   |\nLL | #![repr                       = \"3900\"]\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":3050,"byte_end":3089,"line_start":65,"line_end":65,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![path                       = \"3800\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:65:1\n   |\nLL | #![path                       = \"3800\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":3116,"byte_end":3155,"line_start":66,"line_end":66,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![abi                        = \"3700\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:66:1\n   |\nLL | #![abi                        = \"3700\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":3182,"byte_end":3221,"line_start":67,"line_end":67,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![automatically_derived      = \"3600\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:67:1\n   |\nLL | #![automatically_derived      = \"3600\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":3288,"byte_end":3327,"line_start":69,"line_end":69,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![no_link                    = \"3400\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:69:1\n   |\nLL | #![no_link                    = \"3400\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":3393,"byte_end":3432,"line_start":71,"line_end":71,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![should_panic               = \"3200\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:71:1\n   |\nLL | #![should_panic               = \"3200\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":3459,"byte_end":3498,"line_start":72,"line_end":72,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![ignore                     = \"3100\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:72:1\n   |\nLL | #![ignore                     = \"3100\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"unused attribute","code":{"code":"unused_attributes","explanation":null},"level":"warning","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":3828,"byte_end":3867,"line_start":78,"line_end":78,"column_start":1,"column_end":40,"is_primary":true,"text":[{"text":"#![proc_macro_derive          = \"2500\"] //~ WARN unused attribute","highlight_start":1,"highlight_end":40}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"warning: unused attribute\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:78:1\n   |\nLL | #![proc_macro_derive          = \"2500\"] //~ WARN unused attribute\n   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n"}
[00:45:36] {"message":"compilation successful","code":null,"level":"error","spans":[{"file_name":"/checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs","byte_start":23155,"byte_end":23230,"line_start":844,"line_end":846,"column_start":1,"column_end":2,"is_primary":true,"text":[{"text":"fn main() { //~ ERROR compilation successful","highlight_start":1,"highlight_end":45},{"text":"    println!(\"Hello World\");","highlight_start":1,"highlight_end":29},{"text":"}","highlight_start":1,"highlight_end":2}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"error: compilation successful\n  --> /checkout/src/test/ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs:844:1\n   |\nLL | / fn main() { //~ ERROR compilation successful\nLL | |     println!(\"Hello World\");\nLL | | }\n   | |_^\n\n"}
[00:45:36] {"message":"aborting due to previous error","code":null,"level":"error","spans":[],"children":[],"rendered":"error: aborting due to previous error\n\n"}
[00:45:36] ------------------------------------------
[00:45:36] 
[00:45:36] thread '[ui] ui/feature-gate/issue-43106-gating-of-builtin-attrs.rs' panicked at 'explicit panic', tools/compiletest/src/runtest.rs:3139:9
[00:45:36] note: Run with `RUST_BACKTRACE=1` for a backtrace.
---
[00:45:36] test result: FAILED. 1498 passed; 1 failed; 5 ignored; 0 measured; 0 filtered out
[00:45:36] 
[00:45:36] 
[00:45:36] 
[00:45:36] command did not execute successfully: "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-tools-bin/compiletest" "--compile-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib" "--run-lib-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/lib/rustlib/x86_64-unknown-linux-gnu/lib" "--rustc-path" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "--src-base" "/checkout/src/test/ui" "--build-base" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/ui" "--stage-id" "stage2-x86_64-unknown-linux-gnu" "--mode" "ui" "--target" "x86_64-unknown-linux-gnu" "--host" "x86_64-unknown-linux-gnu" "--llvm-filecheck" "/usr/lib/llvm-3.9/bin/FileCheck" "--host-rustcflags" "-Crpath -O -Zunstable-options " "--target-rustcflags" "-Crpath -O -Zunstable-options  -Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "--docck-python" "/usr/bin/python2.7" "--lldb-python" "/usr/bin/python2.7" "--gdb" "/usr/bin/gdb" "--quiet" "--llvm-version" "3.9.1\n" "--system-llvm" "--cc" "" "--cxx" "" "--cflags" "" "--llvm-components" "" "--llvm-cxxflags" "" "--adb-path" "adb" "--adb-test-dir" "/data/tmp/work" "--android-cross-path" "" "--color" "always"
[00:45:36] 
[00:45:36] 
[00:45:36] failed to run: /checkout/obj/build/bootstrap/debug/bootstrap test
[00:45:36] Build completed unsuccessfully in 0:02:41
[00:45:36] Build completed unsuccessfully in 0:02:41
[00:45:36] Makefile:58: recipe for target 'check' failed
[00:45:36] make: *** [check] Error 1

The command "stamp sh -x -c "$RUN_SCRIPT"" exited with 2.
travis_time:start:0da27478
$ date && (curl -fs --head https://google.com | grep ^Date: | sed 's/Date: //g' || true)
---
travis_time:end:01326db6:start=1528727851549009322,finish=1528727851556151901,duration=7142579
travis_fold:end:after_failure.3
travis_fold:start:after_failure.4
travis_time:start:2aa9d8d8
$ head -30 ./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers || true
head: cannot open ‘./obj/build/x86_64-unknown-linux-gnu/native/asan/build/lib/asan/clang_rt.asan-dynamic-i386.vers’ for reading: No such file or directory
travis_fold:end:after_failure.4
travis_fold:start:after_failure.5
travis_time:start:05765edc
$ dmesg | grep -i kill

I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact @TimNN. (Feature Requests)

@dtolnay

This comment has been minimized.

Copy link
Member

dtolnay commented Jun 11, 2018

Currently building locally to play around with this, but I think this does the trick. Grabbing the span from the ident is the right behavior (as opposed to from the macro call).

if attr.check_name("macro_export") {
if let Some(content) = attr.meta_item_list() {
if attr::list_contains_name(&content, "macro_helper_hack") {
gate_feature_post!(&self, macro_helper_hack, attr.span,

This comment has been minimized.

@petrochenkov

petrochenkov Jun 11, 2018

Author Contributor

Well, this must be a mistake, the attribute shouldn't be gated at the library side, but rather the effect should be enabled if feature(use_extern_macros) is enabled on the use site or stabilized.

This comment has been minimized.

@dtolnay

dtolnay Jun 11, 2018

Member

I was about to write the same thing. This should never happen:

error[E0658]: `macro_helper_hack` in `macro_export` is experimental (see issue #35896)
  --> serde-json/src/macros.rs:69:1
   |
69 | #[macro_export(macro_helper_hack)]
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = help: add #![feature(macro_helper_hack)] to the crate attributes to enable

If not building with use_extern_macros, the macro_helper_hack should have no effect and should be ignored as it has been on all past stable compilers.

@dtolnay

This comment has been minimized.

Copy link
Member

dtolnay commented Jun 11, 2018

Overall I found that this PR works incredibly well. I tested it against some of my nastiest macro code and it behaved as desired every time, with nom-style passing of macro names across crates and everything.

The one exception I found was it seems macro_export(macro_helper_hack) macros cannot be invoked from inside of their own crate:

#![feature(use_extern_macros, macro_helper_hack)]

#[macro_export(macro_helper_hack)]
macro_rules! noop {
    () => {
        noop_helper!{}
    };
}

#[doc(hidden)]
#[macro_export]
macro_rules! noop_helper {
    () => {};
}

pub fn call() {
    noop!{}
}
error[E0433]: failed to resolve. Maybe a missing `extern crate noop_helper;`?
  --> src/lib.rs:6:9
   |
6  |         noop_helper!{}
   |         ^^^^^^^^^^^ Maybe a missing `extern crate noop_helper;`?
...
17 |     noop!{}
   |     ------- in this macro invocation
@dtolnay

This comment has been minimized.

Copy link
Member

dtolnay commented Jun 11, 2018

Ah, it appears the problem is not with this PR. The same thing happens invoking a macro through $crate just with use_extern_macros.

#![feature(use_extern_macros)]

#[macro_export]
macro_rules! noop {
    () => {
        $crate::noop_helper!{}
    };
}

#[doc(hidden)]
#[macro_export]
macro_rules! noop_helper {
    () => {};
}

pub fn call() {
    noop!{}
}
error[E0433]: failed to resolve. Maybe a missing `extern crate noop_helper;`?
  --> src/lib.rs:6:17
   |
6  |         $crate::noop_helper!{}
   |                 ^^^^^^^^^^^ Maybe a missing `extern crate noop_helper;`?
...
17 |     noop!{}
   |     ------- in this macro invocation
@dtolnay

This comment has been minimized.

Copy link
Member

dtolnay commented Jun 11, 2018

I guess this is a consequence of #35896 (comment).

macro_rules! macros declared within the same crate still use the legacy visibility rules, and cannot be imported using use statements and path syntax

Seems easy to work around in any case, and uncommon anyway.

@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Jun 11, 2018

Yes, $crate::foo!() where foo is local macro_rules! doesn't work if called in the same crate, this is the primary drawback of both this PR and explicitly writing $crate::foo!().

With duplicate macro_exports prohibited this should be fixable if $crate::foo!() is defined in the same way as it's visible from other crates, i.e. referring to the corresponding unique macro_exported macro and not to one of the macros named foo and defined in the root module.

macro_rules! foo { () => () } // (1)

mod m {
    // maybe somewhere in deeply nested modules
    #[macro_export] macro_rules! foo { () => () } (2)
}

macro_rules! foo { () => () } // (3), shadows (1) for the rest of the module

$crate::foo!(); // refers to (2), like from other crates, not to (1) or (3)

This doesn't seem urgent and blocking use_extern_macros though, because it's mostly about library's implementation conveniences and not about public interface.

@dtolnay

This comment has been minimized.

Copy link
Member

dtolnay commented Jun 11, 2018

Once "`macro_helper_hack` in `macro_export` is experimental" no longer happens (or if the merge is timed to never end up feature gated in a stable release), this resolves my concern about stabilizing use_extern_macros. 👍

@petrochenkov petrochenkov force-pushed the petrochenkov:mhelper2 branch from 26d10e8 to 81287c7 Jun 16, 2018

@petrochenkov petrochenkov changed the title [Do not merge] Implement #[macro_export(macro_helper_hack)] Implement `#[macro_export(local_inner_macros)]` (a solution for the macro helper import problem) Jun 16, 2018

@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Jun 16, 2018

Updated.

  • Feature gate is removed.
  • macro_helper_hack is renamed into local_inner_macros

Bikeshedding about the attribute name is welcome.
local_inner_macros seemed like a reasonable name to me, but perhaps we should keep macro_helper_hack instead? :)
Any other suggestions?

@joshtriplett

This comment has been minimized.

Copy link
Member

joshtriplett commented Jun 16, 2018

👍 for local_inner_macros, and for not bikeshedding this further given that this only exists for crates that need to support older rustc versions. Newer crates can and should use $crate:: explicitly.

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Jun 18, 2018

@petrochenkov sorry for being slow to provide feedback. Mozilla All Hands was all consuming. I'll take a look and also skim the comments, but before that I wanted to say thanks for trying this out!

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Jun 18, 2018

Well, I'm happy that @dtolnay is happy. It seems like it'd be good to get feedback from @nrc, who was one of the people pushing against "mixing the systems".

cc @rust-lang/lang

@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Jun 20, 2018

Let's notify people formally, there's a number of other things that should ideally get into 1.29 and are blocked on this PR.
Also marking as nominated to increase visibility.

@rfcbot fcp merge

This PR implements a solution for the macro helper issue described by dtolnay in #35896 (comment).

Macros exported from libraries can be marked with #[macro_export(local_inner_macros)] and this annotation changes how nested macros in them are resolved.

If we have a fn-like macro call ident!(...) and ident comes from a macro_rules! macro marked with #[macro_export(local_inner_macros)] then it's replaced with $crate::ident!(...) and resolved as such ($crate gets the same context as ident).

@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Jun 20, 2018

@rfcbot still doesn't listen to me

@cramertj

This comment has been minimized.

Copy link
Member

cramertj commented Jun 20, 2018

@petrochenkov This issue is tagged T-lang, so only lang team members can start FCP. I'll do it for you.

@rfcbot fcp merge

@rfcbot

This comment has been minimized.

Copy link

rfcbot commented Jun 20, 2018

Team member @cramertj has proposed to merge this. The next step is review by the rest of the tagged teams:

Concerns:

Once a majority of reviewers approve (and none object), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for info about what commands tagged team members can give me.

@rfcbot

This comment has been minimized.

Copy link

rfcbot commented Jun 26, 2018

🔔 This is now entering its final comment period, as per the review above. 🔔

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Jun 26, 2018

I checked @pnkfelix's box since they are not available just now, and this is not a stabilization decision anyhow.

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Jun 26, 2018

@petrochenkov I think we can go ahead and r+ without waiting for the full FCP, if you want to rebase.

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Jun 26, 2018

(As, again, this is not a final decision, and we could always revert)

@nikomatsakis

This comment has been minimized.

Copy link
Contributor

nikomatsakis commented Jun 26, 2018

(Oh, and because time is somewhat of the essence here.)

@petrochenkov petrochenkov force-pushed the petrochenkov:mhelper2 branch from 81287c7 to d347270 Jun 27, 2018

@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Jun 27, 2018

@bors r=nikomatsakis

@bors

This comment has been minimized.

Copy link
Contributor

bors commented Jun 27, 2018

📌 Commit d347270 has been approved by nikomatsakis

@bors

This comment has been minimized.

Copy link
Contributor

bors commented Jun 27, 2018

⌛️ Testing commit d347270 with merge 142c98d...

bors added a commit that referenced this pull request Jun 27, 2018

Auto merge of #51496 - petrochenkov:mhelper2, r=nikomatsakis
Implement `#[macro_export(local_inner_macros)]` (a solution for the macro helper import problem)

Implement a solution for the macro helper issue discussed in #35896 as described in #35896 (comment).

Macros exported from libraries can be marked with `#[macro_export(local_inner_macros)]` and this annotation changes how nested macros in them are resolved.

If we have a fn-like macro call `ident!(...)` and `ident` comes from a `macro_rules!` macro marked with  `#[macro_export(local_inner_macros)]` then it's replaced with `$crate::ident!(...)` and resolved as such (`$crate` gets the same context as `ident`).
@bors

This comment has been minimized.

Copy link
Contributor

bors commented Jun 27, 2018

☀️ Test successful - status-appveyor, status-travis
Approved by: nikomatsakis
Pushing 142c98d to master...

@bors bors merged commit d347270 into rust-lang:master Jun 27, 2018

2 checks passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details
homu Test successful
Details

@dtolnay dtolnay referenced this pull request Jul 1, 2018

Merged

Local inner macros #458

@sgrif

This comment has been minimized.

Copy link
Contributor

sgrif commented Aug 2, 2018

Is there a writeup on the migration strategy for macro heavy crates, and how we can test with recent nightlies anywhere?

@joshtriplett

This comment has been minimized.

Copy link
Member

joshtriplett commented Aug 6, 2018

@sgrif I don't know of a writeup to point to. The rough summary:

  • If your crate doesn't need compatibility with old stable versions of Rust, then when calling any macro from within a macro, use the $crate:: prefix.
  • If your crate needs compatibility with old stable versions of Rust, then add the #[macro_export(local_inner_macros)] attribute to your macros, which will automatically act as though all inner macro calls have a $crate:: prefix.
  • If you have macros that both call helper macros and call macros you expect the caller to define, then you either need to use $crate:: selectively on the helper macro calls, use #[macro_export(local_inner_macros)] but have helper macros that only call the caller-defined macros and don't use #[macro_export(local_inner_macros)] on those, or tell people they can't use use on your macros without also importing all your helper macros.
@petrochenkov

This comment has been minimized.

Copy link
Contributor Author

petrochenkov commented Aug 6, 2018

If you have macros that both call helper macros and call macros you expect the caller to define, then you either need to use $crate:: selectively on the helper macro calls or tell people they can't use use on your macros without also importing all your helper macros.

Or use #[macro_export(local_inner_macros)] and one more level of indirection for the caller-defined parts.

@joshtriplett

This comment has been minimized.

Copy link
Member

joshtriplett commented Aug 6, 2018

@petrochenkov Thanks, I've edited my comment to take that possibility into account.

@sgrif

This comment has been minimized.

Copy link
Contributor

sgrif commented Aug 7, 2018

Do macros which take other macros as callbacks need this as well?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.