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 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
Copy link
Collaborator

r? @pnkfelix

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

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 11, 2018
@petrochenkov
Copy link
Contributor Author

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
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
Copy link
Collaborator

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
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,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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
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
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
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
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
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 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
Copy link
Contributor Author

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
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
Copy link
Contributor

@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
Copy link
Contributor

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 petrochenkov added T-lang Relevant to the language team, which will review and decide on the PR/issue. S-waiting-on-team Status: Awaiting decision from the relevant subteam (see the T-<team> label). and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 20, 2018
@petrochenkov
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
Copy link
Contributor Author

@rfcbot still doesn't listen to me

@cramertj
Copy link
Member

@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
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.

@nikomatsakis
Copy link
Contributor

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

@petrochenkov
Copy link
Contributor Author

@bors r=nikomatsakis

@bors
Copy link
Contributor

bors commented Jun 27, 2018

📌 Commit d347270 has been approved by nikomatsakis

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-team Status: Awaiting decision from the relevant subteam (see the T-<team> label). labels Jun 27, 2018
@bors
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
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
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
@rfcbot rfcbot added finished-final-comment-period The final comment period is finished for this PR / Issue. and removed final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. labels Jul 6, 2018
@sgrif
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
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
Copy link
Contributor Author

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
Copy link
Member

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

@sgrif
Copy link
Contributor

sgrif commented Aug 7, 2018

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

elpiel added a commit to elpiel/tower-web that referenced this pull request May 8, 2019
@petrochenkov petrochenkov deleted the mhelper2 branch June 5, 2019 16:10
renovate bot added a commit to smartive/zitadel-rust that referenced this pull request May 2, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [serde](https://serde.rs)
([source](https://togithub.com/serde-rs/serde)) | dependencies | patch |
`1.0` -> `1.0.200` |
| [serde_json](https://togithub.com/serde-rs/json) | dependencies |
patch | `1.0` -> `1.0.116` |

---

### Release Notes

<details>
<summary>serde-rs/serde (serde)</summary>

###
[`v1.0.200`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.200)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.199...v1.0.200)

- Fix formatting of "invalid type" and "invalid value" deserialization
error messages containing NaN or infinite floats
([#&#8203;2733](https://togithub.com/serde-rs/serde/issues/2733), thanks
[@&#8203;jamessan](https://togithub.com/jamessan))

###
[`v1.0.199`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.199)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.198...v1.0.199)

- Fix ambiguous associated item when `forward_to_deserialize_any!` is
used on an enum with `Error` variant
([#&#8203;2732](https://togithub.com/serde-rs/serde/issues/2732), thanks
[@&#8203;aatifsyed](https://togithub.com/aatifsyed))

###
[`v1.0.198`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.198)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.197...v1.0.198)

- Support serializing and deserializing `Saturating<T>`
([#&#8203;2709](https://togithub.com/serde-rs/serde/issues/2709), thanks
[@&#8203;jbethune](https://togithub.com/jbethune))

###
[`v1.0.197`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.197)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.196...v1.0.197)

-   Fix unused_imports warnings when compiled by rustc 1.78
- Optimize code size of some Display impls
([#&#8203;2697](https://togithub.com/serde-rs/serde/issues/2697), thanks
[@&#8203;nyurik](https://togithub.com/nyurik))

###
[`v1.0.196`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.196)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.195...v1.0.196)

- Improve formatting of "invalid type" error messages involving floats
([#&#8203;2682](https://togithub.com/serde-rs/serde/issues/2682))

###
[`v1.0.195`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.195)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.194...v1.0.195)

- Prevent remote definitions of tuple struct or tuple variant from
triggering dead_code warning
([#&#8203;2671](https://togithub.com/serde-rs/serde/issues/2671))

###
[`v1.0.194`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.194)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.193...v1.0.194)

- Update proc-macro2 to fix caching issue when using a rustc-wrapper
such as sccache

###
[`v1.0.193`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.193)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.192...v1.0.193)

- Fix field names used for the deserialization of `RangeFrom` and
`RangeTo`
([#&#8203;2653](https://togithub.com/serde-rs/serde/issues/2653),
[#&#8203;2654](https://togithub.com/serde-rs/serde/issues/2654),
[#&#8203;2655](https://togithub.com/serde-rs/serde/issues/2655), thanks
[@&#8203;emilbonnek](https://togithub.com/emilbonnek))

###
[`v1.0.192`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.192)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.191...v1.0.192)

- Allow internal tag field in untagged variant
([#&#8203;2646](https://togithub.com/serde-rs/serde/issues/2646), thanks
[@&#8203;robsdedude](https://togithub.com/robsdedude))

###
[`v1.0.191`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.191)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.190...v1.0.191)

-   Documentation improvements

###
[`v1.0.190`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.190)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.189...v1.0.190)

- Preserve NaN sign when deserializing f32 from f64 or vice versa
([#&#8203;2637](https://togithub.com/serde-rs/serde/issues/2637))

###
[`v1.0.189`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.189)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.188...v1.0.189)

- Fix "cannot infer type" error when internally tagged enum contains
untagged variant
([#&#8203;2613](https://togithub.com/serde-rs/serde/issues/2613), thanks
[@&#8203;ahl](https://togithub.com/ahl))

###
[`v1.0.188`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.188)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.187...v1.0.188)

- Fix *"failed to parse manifest"* error when building serde using a
Cargo version between 1.45 and 1.50
([#&#8203;2603](https://togithub.com/serde-rs/serde/issues/2603))

###
[`v1.0.187`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.187)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.186...v1.0.187)

- Remove support for Emscripten targets on rustc older than 1.40
([#&#8203;2600](https://togithub.com/serde-rs/serde/issues/2600))

###
[`v1.0.186`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.186)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.185...v1.0.186)

- Disallow incompatible versions of `serde_derive` and `serde` in the
dependency graph
([#&#8203;2588](https://togithub.com/serde-rs/serde/issues/2588), thanks
[@&#8203;soqb](https://togithub.com/soqb))

###
[`v1.0.185`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.185)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.184...v1.0.185)

- Fix error *"cannot move out of `*self` which is behind a shared
reference"* deriving Serialize on a non_exhaustive enum
([#&#8203;2591](https://togithub.com/serde-rs/serde/issues/2591))

###
[`v1.0.184`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.184)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.183...v1.0.184)

- Restore from-source `serde_derive` build on all platforms — eventually
we'd like to use a first-class precompiled macro if such a thing becomes
supported by cargo / crates.io

###
[`v1.0.183`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.183)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.182...v1.0.183)

- Support deserializing `Box<OsStr>` with an equivalent representation
as `OsString`
([#&#8203;2556](https://togithub.com/serde-rs/serde/issues/2556), thanks
[@&#8203;DBLouis](https://togithub.com/DBLouis))

###
[`v1.0.182`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.182)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.181...v1.0.182)

- Render field aliases in sorted order in error messages
([#&#8203;2458](https://togithub.com/serde-rs/serde/issues/2458), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))
- Support `serde(default)` on tuple structs
([#&#8203;2553](https://togithub.com/serde-rs/serde/issues/2553), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

###
[`v1.0.181`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.181)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.180...v1.0.181)

- Make `serde(alias)` work in combination with `flatten` when using
in-place deserialization
([#&#8203;2443](https://togithub.com/serde-rs/serde/issues/2443), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))
- Improve the representation of adjacently tagged enums in formats where
enum tags are serialized by index, as opposed to by string name
([#&#8203;2505](https://togithub.com/serde-rs/serde/issues/2505),
[#&#8203;2496](https://togithub.com/serde-rs/serde/issues/2496), thanks
[@&#8203;Baptistemontan](https://togithub.com/Baptistemontan))

###
[`v1.0.180`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.180)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.179...v1.0.180)

-   Update to 2018 edition

###
[`v1.0.179`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.179)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.178...v1.0.179)

- Support serialization of tuple variants inside a flattened field
([#&#8203;2448](https://togithub.com/serde-rs/serde/issues/2448), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

###
[`v1.0.178`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.178)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.177...v1.0.178)

- Fix build error when using serde with "std" feature turned off and
"unstable" feature turned on
([#&#8203;2541](https://togithub.com/serde-rs/serde/issues/2541))

###
[`v1.0.177`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.177)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.176...v1.0.177)

- Add `serde(rename_all_fields = "...")` attribute to apply a
`rename_all` on every struct variant of an enum
([#&#8203;1695](https://togithub.com/serde-rs/serde/issues/1695), thanks
[@&#8203;jplatte](https://togithub.com/jplatte))
- Improve diagnostics for attribute parse errors
([#&#8203;2536](https://togithub.com/serde-rs/serde/issues/2536), thanks
[@&#8203;jplatte](https://togithub.com/jplatte))

###
[`v1.0.176`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.176)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.175...v1.0.176)

- Allow tag field of an internally tagged enum to have same name as a
field inside a skipped struct variant
([#&#8203;2266](https://togithub.com/serde-rs/serde/issues/2266), thanks
[@&#8203;flisky](https://togithub.com/flisky))

###
[`v1.0.175`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.175)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.174...v1.0.175)

- Restore missing LICENSE files in serde_derive crate
([#&#8203;2527](https://togithub.com/serde-rs/serde/issues/2527), thanks
[@&#8203;ankane](https://togithub.com/ankane))

###
[`v1.0.174`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.174)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.173...v1.0.174)

-   Documentation improvements

###
[`v1.0.173`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.173)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.172...v1.0.173)

- Fix missing trait implementations when using serde derive macro on a
macro-generated data structure, such as via the `bitflags` crate
([#&#8203;2516](https://togithub.com/serde-rs/serde/issues/2516))

###
[`v1.0.172`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.172)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.171...v1.0.172)

- Experiment with precompiling the serde_derive macros to reduce build
time ([#&#8203;2514](https://togithub.com/serde-rs/serde/issues/2514))

###
[`v1.0.171`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.171)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.170...v1.0.171)

- Support `derive(Deserialize)` on unit structs that have const generics
([#&#8203;2500](https://togithub.com/serde-rs/serde/issues/2500), thanks
[@&#8203;Baptistemontan](https://togithub.com/Baptistemontan))

###
[`v1.0.170`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.170)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.169...v1.0.170)

- Produce error message on suffixed string literals inside serde
attributes
([#&#8203;2242](https://togithub.com/serde-rs/serde/issues/2242))
- Support single identifier as unbraced default value for const generic
parameter
([#&#8203;2449](https://togithub.com/serde-rs/serde/issues/2449))

###
[`v1.0.169`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.169)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.168...v1.0.169)

- Add Deserializer::deserialize_identifier support for adjacently tagged
enums ([#&#8203;2475](https://togithub.com/serde-rs/serde/issues/2475),
thanks [@&#8203;Baptistemontan](https://togithub.com/Baptistemontan))
- Fix unused_braces lint in generated Deserialize impl that uses braced
const generic expressions
([#&#8203;2414](https://togithub.com/serde-rs/serde/issues/2414))

###
[`v1.0.168`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.168)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.167...v1.0.168)

- Allow `serde::de::IgnoredAny` to be the type for a `serde(flatten)`
field ([#&#8203;2436](https://togithub.com/serde-rs/serde/issues/2436),
thanks [@&#8203;Mingun](https://togithub.com/Mingun))
- Allow larger preallocated capacity for smaller elements
([#&#8203;2494](https://togithub.com/serde-rs/serde/issues/2494))

###
[`v1.0.167`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.167)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.166...v1.0.167)

- Add serialize and deserialize impls for `RangeFrom` and `RangeTo`
([#&#8203;2471](https://togithub.com/serde-rs/serde/issues/2471), thanks
[@&#8203;tbu-](https://togithub.com/tbu-))

###
[`v1.0.166`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.166)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.165...v1.0.166)

-   Add `no-alloc` category to crates.io metadata

###
[`v1.0.165`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.165)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.164...v1.0.165)

- Fix incorrect count of fields passed to tuple deserialization methods
when using `serde(skip_deserializing)` attributes
([#&#8203;2466](https://togithub.com/serde-rs/serde/issues/2466), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))
-   Fix `-Zminimal-versions` build

###
[`v1.0.164`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.164)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.163...v1.0.164)

- Allowed enum variants to be individually marked as untagged
([#&#8203;2403](https://togithub.com/serde-rs/serde/issues/2403), thanks
[@&#8203;dewert99](https://togithub.com/dewert99))

###
[`v1.0.163`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.163)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.162...v1.0.163)

- Eliminate build script from serde_derive crate to slightly reduce
build time
([#&#8203;2442](https://togithub.com/serde-rs/serde/issues/2442), thanks
[@&#8203;taiki-e](https://togithub.com/taiki-e))

###
[`v1.0.162`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.162)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.161...v1.0.162)

- Support deserializing flattened adjacently tagged enums from data
formats which represent fields as bytes, such as the `csv` crate
([#&#8203;2377](https://togithub.com/serde-rs/serde/issues/2377), thanks
[@&#8203;mfro](https://togithub.com/mfro))

    ```rust
    #[derive(Deserialize)]
    pub struct Record {
        common: u64,
        #[serde(flatten)]
        kind: Kind,
    }

    #[derive(Deserialize)]
#[serde(tag = "kind", content = "parameter", rename_all = "lowercase")]
    enum Kind {
        Foo(u64),
        Bar(bool),
    }
    ```

    ```csv
    common,kind,parameter
    1,foo,42
    2,bar,true
    ```

###
[`v1.0.161`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.161)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.160...v1.0.161)

- Improve error messages produced by serde_test on test failure
([#&#8203;2435](https://togithub.com/serde-rs/serde/issues/2435), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

###
[`v1.0.160`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.160)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.159...v1.0.160)

- Make derived serializer/deserializer internals `doc(hidden)`
([#&#8203;2426](https://togithub.com/serde-rs/serde/issues/2426), thanks
[@&#8203;compiler-errors](https://togithub.com/compiler-errors))

###
[`v1.0.159`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.159)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.158...v1.0.159)

- Accept empty #\[serde()] attribute
([#&#8203;2422](https://togithub.com/serde-rs/serde/issues/2422))

###
[`v1.0.158`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.158)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.157...v1.0.158)

- Fix *"expected serde crate attribute to be a string"* error when using
macro_rules metavariable inside of serde attribute: `#[serde(crate =
$serde_path)]`
([#&#8203;2409](https://togithub.com/serde-rs/serde/issues/2409))

###
[`v1.0.157`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.157)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.156...v1.0.157)

-   Update syn dependency to 2.x

###
[`v1.0.156`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.156)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.155...v1.0.156)

-   Documentation improvements

###
[`v1.0.155`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.155)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.154...v1.0.155)

- Support `Serialize` and `Deserialize` impls for `core::ffi::CStr` and
`alloc::ffi::CString` without "std" feature
([#&#8203;2374](https://togithub.com/serde-rs/serde/issues/2374), thanks
[@&#8203;safarir](https://togithub.com/safarir))

###
[`v1.0.154`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.154)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.153...v1.0.154)

- Fix "undeclared lifetime" error in generated code when deriving
Deserialize for an enum with both `flatten` and `'static` fields
([#&#8203;2383](https://togithub.com/serde-rs/serde/issues/2383), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

###
[`v1.0.153`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.153)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.152...v1.0.153)

- Support `serde(alias = "…")` attribute used inside of flattened struct
([#&#8203;2387](https://togithub.com/serde-rs/serde/issues/2387), thanks
[@&#8203;bebecue](https://togithub.com/bebecue))

###
[`v1.0.152`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.152)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.151...v1.0.152)

-   Documentation improvements

###
[`v1.0.151`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.151)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.150...v1.0.151)

- Update `serde::`{`ser`,`de`}`::StdError` to re-export
`core::error::Error` when serde is built with `feature="std"` **off**
and `feature="unstable"` **on**
([#&#8203;2344](https://togithub.com/serde-rs/serde/issues/2344))

###
[`v1.0.150`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.150)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.149...v1.0.150)

- Relax some trait bounds from the `Serialize` impl of `HashMap` and
`BTreeMap`
([#&#8203;2334](https://togithub.com/serde-rs/serde/issues/2334))
- Enable `Serialize` and `Deserialize` impls of `std::sync::atomic`
types on more platforms
([#&#8203;2337](https://togithub.com/serde-rs/serde/issues/2337), thanks
[@&#8203;badboy](https://togithub.com/badboy))

###
[`v1.0.149`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.149)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.148...v1.0.149)

- Relax some trait bounds from the `Serialize` impl of `BinaryHeap`,
`BTreeSet`, and `HashSet`
([#&#8203;2333](https://togithub.com/serde-rs/serde/issues/2333), thanks
[@&#8203;jonasbb](https://togithub.com/jonasbb))

###
[`v1.0.148`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.148)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.147...v1.0.148)

- Support `remote` derive for generic types that have private fields
([#&#8203;2327](https://togithub.com/serde-rs/serde/issues/2327))

###
[`v1.0.147`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.147)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.146...v1.0.147)

- Add `serde::de::value::EnumAccessDeserializer` which transforms an
`EnumAccess` into a `Deserializer`
([#&#8203;2305](https://togithub.com/serde-rs/serde/issues/2305))

###
[`v1.0.146`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.146)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.145...v1.0.146)

- Allow internally tagged newtype variant to contain unit
([#&#8203;2303](https://togithub.com/serde-rs/serde/issues/2303), thanks
[@&#8203;tage64](https://togithub.com/tage64))

###
[`v1.0.145`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.145)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.144...v1.0.145)

- Allow RefCell\<T>, Mutex\<T>, and RwLock\<T> to be serialized
regardless of whether T is `Sized`
([#&#8203;2282](https://togithub.com/serde-rs/serde/issues/2282), thanks
[@&#8203;ChayimFriedman2](https://togithub.com/ChayimFriedman2))

###
[`v1.0.144`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.144)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.143...v1.0.144)

- Change atomic ordering used by Serialize impl of atomic types to match
ordering used by Debug impl of those same types
([#&#8203;2263](https://togithub.com/serde-rs/serde/issues/2263), thanks
[@&#8203;taiki-e](https://togithub.com/taiki-e))

###
[`v1.0.143`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.143)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.142...v1.0.143)

- Invert build.rs cfgs in serde_test to produce the most modern
configuration in the default case
([#&#8203;2253](https://togithub.com/serde-rs/serde/issues/2253), thanks
[@&#8203;taiki-e](https://togithub.com/taiki-e))

###
[`v1.0.142`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.142)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.141...v1.0.142)

-   Add keywords to crates.io metadata

###
[`v1.0.141`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.141)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.140...v1.0.141)

-   Add `no-std` category to crates.io metadata

###
[`v1.0.140`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.140)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.139...v1.0.140)

- Invert serde_derive cfgs to convenience non-Cargo builds on a modern
toolchain
([#&#8203;2251](https://togithub.com/serde-rs/serde/issues/2251), thanks
[@&#8203;taiki-e](https://togithub.com/taiki-e))

###
[`v1.0.139`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.139)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.138...v1.0.139)

- Add `new` constructor function for all `IntoDeserializer` impls
([#&#8203;2246](https://togithub.com/serde-rs/serde/issues/2246))

###
[`v1.0.138`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.138)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.137...v1.0.138)

-   Documentation improvements

###
[`v1.0.137`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.137)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.136...v1.0.137)

- Update documentation links to some data formats whose repos have moved
([#&#8203;2201](https://togithub.com/serde-rs/serde/issues/2201), thanks
[@&#8203;atouchet](https://togithub.com/atouchet))
- Fix declared `rust-version` of serde and serde_test
([#&#8203;2168](https://togithub.com/serde-rs/serde/issues/2168))

###
[`v1.0.136`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.136)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.135...v1.0.136)

- Improve default error message when `Visitor` fails to deserialize a
u128 or i128
([#&#8203;2167](https://togithub.com/serde-rs/serde/issues/2167))

###
[`v1.0.135`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.135)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.134...v1.0.135)

-   Update discord channels listed in readme

###
[`v1.0.134`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.134)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.133...v1.0.134)

- Improve error messages on deserializing NonZero integers from a 0
value ([#&#8203;2158](https://togithub.com/serde-rs/serde/issues/2158))

###
[`v1.0.133`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.133)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.132...v1.0.133)

- Optimize deserialization of data structures that contain recursive use
of `flatten` fields or `tag` or `untagged` enums
([#&#8203;2148](https://togithub.com/serde-rs/serde/issues/2148))

###
[`v1.0.132`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.132)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.131...v1.0.132)

- Enable Serialize and Deserialize impls for
`std::sync::atomic::{AtomicI64, AtomicU64}` on riscv64 arch
([#&#8203;2141](https://togithub.com/serde-rs/serde/issues/2141), thanks
[@&#8203;Avimitin](https://togithub.com/Avimitin))

###
[`v1.0.131`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.131)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.130...v1.0.131)

- Avoid `unused_results` being triggered in generated code for
adjacently tagged enum
([#&#8203;2116](https://togithub.com/serde-rs/serde/issues/2116), thanks
[@&#8203;tyranron](https://togithub.com/tyranron))

###
[`v1.0.130`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.130)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.129...v1.0.130)

- Provide `MapAccess` and `SeqAccess` impl for reference to a
dynamically sized existing impl
([#&#8203;2081](https://togithub.com/serde-rs/serde/issues/2081))

###
[`v1.0.129`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.129)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.128...v1.0.129)

- Support deserialization of remote structs that used packed repr
([#&#8203;2078](https://togithub.com/serde-rs/serde/issues/2078),
[#&#8203;2079](https://togithub.com/serde-rs/serde/issues/2079),
[#&#8203;2080](https://togithub.com/serde-rs/serde/issues/2080))

###
[`v1.0.128`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.128)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.127...v1.0.128)

- Enable 128-bit integers on emscripten in Rust 1.40+
([#&#8203;2076](https://togithub.com/serde-rs/serde/issues/2076), thanks
[@&#8203;Manishearth](https://togithub.com/Manishearth))

###
[`v1.0.127`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.127)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.126...v1.0.127)

-   Resolve warning in rustc nightly-2021-07-31+ compiling serde_test

###
[`v1.0.126`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.126)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.125...v1.0.126)

- Resolve conflict with `forbid(future_incompatible)` lint setting in
generated code
([#&#8203;2026](https://togithub.com/serde-rs/serde/issues/2026), thanks
[@&#8203;hyd-dev](https://togithub.com/hyd-dev))

###
[`v1.0.125`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.125)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.124...v1.0.125)

- Improve performance of serializing `Ipv4Addr`
([#&#8203;2001](https://togithub.com/serde-rs/serde/issues/2001), thanks
[@&#8203;saethlin](https://togithub.com/saethlin))

###
[`v1.0.124`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.124)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.123...v1.0.124)

- Fix possible panic deserializing invalid data as `SystemTime`
([#&#8203;1997](https://togithub.com/serde-rs/serde/issues/1997), thanks
[@&#8203;cyang1](https://togithub.com/cyang1))

###
[`v1.0.123`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.123)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.122...v1.0.123)

- Support `Self` keywords in fields of types that derive Deserialize
([#&#8203;1830](https://togithub.com/serde-rs/serde/issues/1830), thanks
[@&#8203;taiki-e](https://togithub.com/taiki-e))
- Allow floats to be deserialized from ints in tagged unions
([#&#8203;1842](https://togithub.com/serde-rs/serde/issues/1842), thanks
[@&#8203;Timmmm](https://togithub.com/Timmmm))
- Support `Self` inside fields that use serialize_with
([#&#8203;1970](https://togithub.com/serde-rs/serde/issues/1970))

###
[`v1.0.122`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.122)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.121...v1.0.122)

- Add IntoDeserializer impl for &\[u8]
([#&#8203;1898](https://togithub.com/serde-rs/serde/issues/1898), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

- Handle unrecognized numeric field keys during deserialization of a
field_identifier, equivalently to string field keys
([#&#8203;1914](https://togithub.com/serde-rs/serde/issues/1914), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

- Add attribute to override default deserialization failure expectation
message
([#&#8203;1916](https://togithub.com/serde-rs/serde/issues/1916), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

    ```rust
    #[derive(Deserialize)]
#[serde(untagged, expecting = "single version or array of versions")]
    struct VersionSpec {
        One(Version),
        Many(Vec<Version>),
    }
    ```

- Improve `serde_test` handling of map entries and error message
construction
([#&#8203;1918](https://togithub.com/serde-rs/serde/issues/1918), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

- Produce more accurate location information on test failures from
`serde_test` crate
([#&#8203;1920](https://togithub.com/serde-rs/serde/issues/1920), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))

- Improve diagnostic on failure to parse a `rename_all` attribute
([#&#8203;1960](https://togithub.com/serde-rs/serde/issues/1960),
[#&#8203;1961](https://togithub.com/serde-rs/serde/issues/1961))

- Eliminate unnecessary trait bounds on some value Deserializer impls
([#&#8203;1963](https://togithub.com/serde-rs/serde/issues/1963))

###
[`v1.0.121`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.121)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.120...v1.0.121)

- Support borrowed data during deserialization of a field identifier
([#&#8203;1917](https://togithub.com/serde-rs/serde/issues/1917), thanks
[@&#8203;Mingun](https://togithub.com/Mingun))
- Fix panic when deserializing `Duration` with nanoseconds that cause
the seconds counter to overflow
([#&#8203;1958](https://togithub.com/serde-rs/serde/issues/1958), thanks
[@&#8203;jonasbb](https://togithub.com/jonasbb))

###
[`v1.0.120`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.120)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.119...v1.0.120)

- Fix deserialization of ignored fields containing 128-bit integer
([#&#8203;1955](https://togithub.com/serde-rs/serde/issues/1955), thanks
[@&#8203;TheJokr](https://togithub.com/TheJokr))

###
[`v1.0.119`](https://togithub.com/serde-rs/serde/compare/v1.0.118...v1.0.119)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.118...v1.0.119)

###
[`v1.0.118`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.118)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.117...v1.0.118)

- Support serialization of core::num::Wrapping in no_std mode
([#&#8203;1926](https://togithub.com/serde-rs/serde/issues/1926), thanks
[@&#8203;attente](https://togithub.com/attente))

###
[`v1.0.117`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.117)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.116...v1.0.117)

- Allow serialization of std::net::SocketAddrV6 to include a scope id if
present (based on
[https://github.com/rust-lang/rust/pull/77426](https://togithub.com/rust-lang/rust/pull/77426))

###
[`v1.0.116`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.116)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.115...v1.0.116)

- Fix deserialization of IpAddr, SocketAddr, Bound, Result, OsString in
formats which process variant identifiers as u64
([#&#8203;1888](https://togithub.com/serde-rs/serde/issues/1888), thanks
[@&#8203;joshtriplett](https://togithub.com/joshtriplett))

###
[`v1.0.115`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.115)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.114...v1.0.115)

- Support `#[serde(flatten)]` on a field whose type is a type parameter
and concrete type is `()`
([#&#8203;1873](https://togithub.com/serde-rs/serde/issues/1873))

###
[`v1.0.114`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.114)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.113...v1.0.114)

- Improve `packed` repr matching to support deriving Serialize for
structs having `repr(C, packed)`
([#&#8203;1813](https://togithub.com/serde-rs/serde/issues/1813), thanks
[@&#8203;TannerRogalsky](https://togithub.com/TannerRogalsky))

###
[`v1.0.113`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.113)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.112...v1.0.113)

- Improve diagnostic when a serde trait is not implemented
([#&#8203;1827](https://togithub.com/serde-rs/serde/issues/1827), thanks
[@&#8203;taiki-e](https://togithub.com/taiki-e))

###
[`v1.0.112`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.112)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.111...v1.0.112)

- Support `serde(flatten)` on map types where the Serializer only works
with serialize_entry
([#&#8203;1837](https://togithub.com/serde-rs/serde/issues/1837))

###
[`v1.0.111`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.111)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.110...v1.0.111)

- Process borrowed lifetimes inside of interpolated macro_rules
metavariables, such as in the case of `#[derive(Deserialize)] struct
S<'a> { field: $field }`
([#&#8203;1821](https://togithub.com/serde-rs/serde/issues/1821))

###
[`v1.0.110`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.110)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.109...v1.0.110)

- Support deriving Serialize impl for a `repr(packed)` struct
([#&#8203;1791](https://togithub.com/serde-rs/serde/issues/1791), thanks
[@&#8203;alvardes](https://togithub.com/alvardes))

###
[`v1.0.109`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.109)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.108...v1.0.109)

- Allow adjacently tagged newtype variants containing `Option` to omit
the content field when deserializing
([#&#8203;1553](https://togithub.com/serde-rs/serde/issues/1553),
[#&#8203;1706](https://togithub.com/serde-rs/serde/issues/1706), thanks
[@&#8203;zth0](https://togithub.com/zth0))
- Avoid panicking when a SystemTime older than UNIX_EPOCH is serialized
([#&#8203;1702](https://togithub.com/serde-rs/serde/issues/1702), thanks
[@&#8203;hjiayz](https://togithub.com/hjiayz))

###
[`v1.0.108`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.108)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.107...v1.0.108)

- Provide a `Serializer` impl that can write primitives and unit
variants to a `&mut fmt::Formatter`
([#&#8203;1705](https://togithub.com/serde-rs/serde/issues/1705), thanks
[@&#8203;jethrogb](https://togithub.com/jethrogb))

    ```rust
    use serde::Serialize;
    use std::fmt::{self, Display};

    #[derive(Serialize)]
    #[serde(rename_all = "kebab-case")]
    pub enum MessageType {
        StartRequest,
        EndRequest,
    }

    impl Display for MessageType {
        fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
            self.serialize(f)
        }
    }
    ```

###
[`v1.0.107`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.107)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.106...v1.0.107)

- Fix panic during macro expansion when using `serde(skip)` and
`serde(other)` in the same enum
([#&#8203;1804](https://togithub.com/serde-rs/serde/issues/1804))

###
[`v1.0.106`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.106)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.105...v1.0.106)

- Hide dummy const implementation detail from rustdoc when documenting a
binary crate
([#&#8203;1768](https://togithub.com/serde-rs/serde/issues/1768), thanks
[@&#8203;robo9k](https://togithub.com/robo9k))

###
[`v1.0.105`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.105)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.104...v1.0.105)

- Allow #\[serde(borrow)] to work on non-standard `Cow` types
([#&#8203;1754](https://togithub.com/serde-rs/serde/issues/1754), thanks
[@&#8203;maciejhirsz](https://togithub.com/maciejhirsz))

###
[`v1.0.104`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.104)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.103...v1.0.104)

- Revert stabilization of Serialize/Deserialize impls for `!` to account
for
[https://github.com/rust-lang/rust/pull/67224](https://togithub.com/rust-lang/rust/pull/67224)

###
[`v1.0.103`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.103)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.102...v1.0.103)

- Support deserializing untagged unit variants from formats that treat
unit as None
([#&#8203;1668](https://togithub.com/serde-rs/serde/issues/1668))

###
[`v1.0.102`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.102)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.101...v1.0.102)

- Support deserializing `PathBuf` from bytes like `&Path` already did,
and support deserializing `Box<Path>`
([#&#8203;1656](https://togithub.com/serde-rs/serde/issues/1656), thanks
[@&#8203;heftig](https://togithub.com/heftig))

###
[`v1.0.101`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.101)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.100...v1.0.101)

- Report errors on malformed serde attributes, like `#[serde(rename =)]`
-- the compiler used to reject these itself, but when the compiler
relaxed its requirements on attribute syntax these malformed attributes
began silently being ignored by serde_derive

- Eliminate unused variable warning when using skip_serializing inside a
tuple variant of an adjacently tagged enum
([#&#8203;1617](https://togithub.com/serde-rs/serde/issues/1617), thanks
[@&#8203;arilotter](https://togithub.com/arilotter))

- Support skip attribute inside of newtype variants
([#&#8203;1622](https://togithub.com/serde-rs/serde/issues/1622), thanks
[@&#8203;Xaeroxe](https://togithub.com/Xaeroxe))

###
[`v1.0.100`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.100)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.99...v1.0.100)

- Provide `serde::ser::StdError` and `serde::de::StdError` which are
either a re-export of `std::error::Error` (if Serde's "std" feature is
enabled) or a new identical trait (otherwise).

    ```rust
    #[cfg(feature = "std")]
    pub use std::error::Error as StdError;

    #[cfg(not(feature = "std"))]
    pub trait StdError: Debug + Display {
        fn source(&self) -> Option<&(StdError + 'static)> { None }
    }
    ```

Serde's error traits `serde::ser::Error` and `serde::de::Error` require
`std::error::Error` as a supertrait, but only when Serde is built with
"std" enabled. Data formats that don't care about no_std support should
generally provide their error types with a `std::error::Error` impl
directly:

    ```rust
    #[derive(Debug)]
    struct MySerError {...}

    impl serde::ser::Error for MySerError {...}

    impl std::fmt::Display for MySerError {...}

    // We don't support no_std!
    impl std::error::Error for MySerError {}
    ```

Data formats that *do* support no_std may either have a "std" feature of
their own as has been required in the past:

    ```toml
    [features]
    std = ["serde/std"]
    ```

    ```rust
    #[cfg(feature = "std")]
    impl std::error::Error for MySerError {}
    ```

... or else now may provide the std Error impl unconditionally via
Serde's re-export:

    ```rust
    impl serde::ser::StdError for MySerError {}
    ```

###
[`v1.0.99`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.99)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.98...v1.0.99)

-   Update Syn dependency to 1.0.

*Note: This raises the minimum required compiler version for
serde_derive from rustc 1.15 to rustc 1.31. The minimum required
compiler version for serde remains at rustc 1.13.*

###
[`v1.0.98`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.98)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.97...v1.0.98)

- Add support for NonZeroI\* types
([#&#8203;1589](https://togithub.com/serde-rs/serde/issues/1589), thanks
[@&#8203;Flaise](https://togithub.com/Flaise))

###
[`v1.0.97`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.97)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.96...v1.0.97)

- Introduce `serde(try_from = "...")` attribute to derive Deserialize
based on a given implementation of
[`std::convert::TryFrom`](https://doc.rust-lang.org/std/convert/trait.TryFrom.html)
([#&#8203;1526](https://togithub.com/serde-rs/serde/issues/1526), thanks
[@&#8203;fanzeyi](https://togithub.com/fanzeyi))

    ```rust
    #[derive(Deserialize)]
    #[serde(try_from = "u32")]
    enum N {
        Zero,
        One,
        Two,
    }

    impl TryFrom<u32> for N {
        type Error = String;

        fn try_from(u: u32) -> Result<Self, Self::Error> {
            match u {
                0 => Ok(Self::Zero),
                1 => Ok(Self::One),
                2 => Ok(Self::Two),
                other => Err(format!("out of range: {}", other)),
            }
        }
    }
    ```

###
[`v1.0.96`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.96)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.95...v1.0.96)

- Implement serialization and deserialization for std::sync::atomic
types ([#&#8203;1572](https://togithub.com/serde-rs/serde/issues/1572)
and [#&#8203;1581](https://togithub.com/serde-rs/serde/issues/1581),
thanks [@&#8203;Roguelazer](https://togithub.com/Roguelazer))
- Make "alloc" feature work on stable Rust 1.36+
([#&#8203;1576](https://togithub.com/serde-rs/serde/issues/1576), thanks
[@&#8203;c410-f3r](https://togithub.com/c410-f3r))

###
[`v1.0.95`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.95)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.94...v1.0.95)

*yanked*

###
[`v1.0.94`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.94)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.93...v1.0.94)

- Accept enums in input data when deserializing IgnoredAny
([#&#8203;1558](https://togithub.com/serde-rs/serde/issues/1558))

###
[`v1.0.93`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.93)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.92...v1.0.93)

- Allow integer keys in untagged flattened map
([#&#8203;1545](https://togithub.com/serde-rs/serde/issues/1545))

###
[`v1.0.92`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.92)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.91...v1.0.92)

- Support using `serde(flatten)` in no_std + alloc mode
([#&#8203;1543](https://togithub.com/serde-rs/serde/issues/1543), thanks
[@&#8203;jplatte](https://togithub.com/jplatte))

###
[`v1.0.91`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.91)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.90...v1.0.91)

- Support deserializing from MapAccessDeserializer into an enum
([#&#8203;1522](https://togithub.com/serde-rs/serde/issues/1522))

###
[`v1.0.90`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.90)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.89...v1.0.90)

- Add an attribute `#[serde(crate = "path::to::serde")]` which replaces
the use of `extern crate serde` in the generated code; this is intended
for crates that invoke Serde derives from a macro and need to refer to
`serde` through their own re-export rather than requiring callers to
list Serde in Cargo.toml
([#&#8203;1499](https://togithub.com/serde-rs/serde/issues/1499), thanks
[@&#8203;sgrif](https://togithub.com/sgrif))

    ```rust
    #[derive(Deserialize)]
    #[serde(crate = "__tw::codegen::serde")]
    struct S { ... }
    ```

    ```rust
    // expands to:
    impl<'de> __tw::codegen::serde::Deserialize<'de> for S {
        ...
    }
    ```

###
[`v1.0.89`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.89)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.88...v1.0.89)

- Implement Serialize and Deserialize for core::cmp::Reverse\<T>
([#&#8203;1486](https://togithub.com/serde-rs/serde/issues/1486), thanks
[@&#8203;vorot93](https://togithub.com/vorot93))
- Fix a Clippy lint triggered within generated code involving flatten +
deny_unknown_fields
([#&#8203;1492](https://togithub.com/serde-rs/serde/issues/1492), thanks
[@&#8203;thomaseizinger](https://togithub.com/thomaseizinger))

###
[`v1.0.88`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.88)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.87...v1.0.88)

- Support `flatten` and `skip_serializing` / `skip_deserializing`
attributes on the same field

###
[`v1.0.87`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.87)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.86...v1.0.87)

- Fix inclusion of tag in struct containing flattened fields
([#&#8203;1468](https://togithub.com/serde-rs/serde/issues/1468), thanks
[@&#8203;jwillbold](https://togithub.com/jwillbold))

###
[`v1.0.86`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.86)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.85...v1.0.86)

- Implement Serialize and Deserialize for core::ops::Bound\<T>
([#&#8203;1466](https://togithub.com/serde-rs/serde/issues/1466), thanks
[@&#8203;0nkery](https://togithub.com/0nkery))

###
[`v1.0.85`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.85)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.84...v1.0.85)

- Accept `#[serde(alias = "...")]` attribute on fields and variants
which allows the same field or variant to be deserialized from any of
multiple different names in the input
([#&#8203;1458](https://togithub.com/serde-rs/serde/issues/1458), thanks
[@&#8203;Lymia](https://togithub.com/Lymia))

    ```rust
    #[derive(Deserialize)]
    struct S {
        #[serde(alias = "old_name")]
new_name: String, // will deserialize from either of "old_name" or
"new_name"
    }
    ```

###
[`v1.0.84`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.84)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.83...v1.0.84)

-   Update example code in documentation to 2018 edition

###
[`v1.0.83`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.83)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.82...v1.0.83)

- Support a `rename_all` specification that applies only to the
Serialize impl or only to the Deserialize impl
([#&#8203;1447](https://togithub.com/serde-rs/serde/issues/1447), thanks
[@&#8203;vincascm](https://togithub.com/vincascm))

    ```rust
    #[derive(Serialize, Deserialize)]
    #[serde(rename_all(
        serialize = "camelCase",
        deserialize = "SCREAMING_SNAKE_CASE",
    ))]
    struct S { /* ... */ }
    ```

- Allow serializing struct name inside of structs with named fields
([#&#8203;1448](https://togithub.com/serde-rs/serde/issues/1448), thanks
[@&#8203;motu42](https://togithub.com/motu42))

    ```rust
    #[derive(Serialize)]
    #[serde(tag = "type")]
    struct S { /* ... */ }  // serializes as {"type":"S",...}
    ```

###
[`v1.0.82`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.82)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.81...v1.0.82)

- Support `serde(default)` attribute inside of tuple structs and tuple
variants
([#&#8203;1442](https://togithub.com/serde-rs/serde/issues/1442), thanks
[@&#8203;tcr](https://togithub.com/tcr))

###
[`v1.0.81`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.81)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.80...v1.0.81)

- Better error messages when using an invalid combination of serde
attributes
([#&#8203;1424](https://togithub.com/serde-rs/serde/issues/1424), thanks
[@&#8203;hcpl](https://togithub.com/hcpl))
- Support deserializing tagged enums inside of untagged enums in formats
that encode tagged enum variants by index, like MessagePack
([#&#8203;1437](https://togithub.com/serde-rs/serde/issues/1437), thanks
[@&#8203;daboross](https://togithub.com/daboross))

###
[`v1.0.80`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.80)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.79...v1.0.80)

- Performance optimization for `Vec::deserialize_in_place` to
deserialize elements in place
([#&#8203;1411](https://togithub.com/serde-rs/serde/issues/1411))

###
[`v1.0.79`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.79)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.78...v1.0.79)

- Add `serde(other)` variant attribute for deserializing any variant
that is not one of the others
([#&#8203;1382](https://togithub.com/serde-rs/serde/issues/1382))

    ```rust
    #[derive(Deserialize)]
    #[serde(tag = "variant")]
    enum MyEnum {
        A(ModelA),
        B(ModelB),
        #[serde(other)]
        Unknown,
    }
    ```

In this internally tagged enum the `MyEnum::Unknown` variant would be
produced if the `"variant"` tag in the input is neither `"A"` nor `"B"`.

This feature is currently limited to externally tagged and adjacently
tagged enums in which the `other` variant is a unit variant.

###
[`v1.0.78`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.78)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.77...v1.0.78)

- Fix panic deserializing flattened Value after flattened struct
([#&#8203;1379](https://togithub.com/serde-rs/serde/issues/1379))

###
[`v1.0.77`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.77)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.76...v1.0.77)

- Fix internally tagged enum deserialization with unknown fields
([#&#8203;1376](https://togithub.com/serde-rs/serde/issues/1376), thanks
[@&#8203;dreid](https://togithub.com/dreid))

###
[`v1.0.76`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.76)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.75...v1.0.76)

- Provide impls for
[`NonZeroU128`](https://doc.rust-lang.org/std/num/struct.NonZeroU128.html)
([#&#8203;1371](https://togithub.com/serde-rs/serde/issues/1371), thanks
[@&#8203;hcpl](https://togithub.com/hcpl))

###
[`v1.0.75`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.75)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.74...v1.0.75)

- Adjust dependency version requirement to support building with `-Z
minimal-versions` in CI
([#&#8203;1367](https://togithub.com/serde-rs/serde/issues/1367))

###
[`v1.0.74`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.74)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.73...v1.0.74)

- Disable i128 integers on Emscripten targets
([#&#8203;1365](https://togithub.com/serde-rs/serde/issues/1365), thanks
[@&#8203;koute](https://togithub.com/koute))

###
[`v1.0.73`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.73)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.72...v1.0.73)

- Fix the names of serialized fields when the Rust data structure uses a
raw identifier
([#&#8203;1362](https://togithub.com/serde-rs/serde/issues/1362))

###
[`v1.0.72`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.72)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.71...v1.0.72)

- Fix compilation of `default-features = false, features = ["alloc",
"rc"]` feature combination
([#&#8203;1359](https://togithub.com/serde-rs/serde/issues/1359), thanks
[@&#8203;Pratyush](https://togithub.com/Pratyush))

###
[`v1.0.71`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.71)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.70...v1.0.71)

- Provide impls for
[`core::ops::RangeInclusive`](https://doc.rust-lang.org/core/ops/struct.RangeInclusive.html)
([#&#8203;1347](https://togithub.com/serde-rs/serde/issues/1347), thanks
[@&#8203;c410-f3r](https://togithub.com/c410-f3r))
- Provide impls for
[`core::ops::Range`](https://doc.rust-lang.org/core/ops/struct.Range.html)
whether or not `"std"` feature is enabled
([#&#8203;1348](https://togithub.com/serde-rs/serde/issues/1348))

###
[`v1.0.70`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.70)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.69...v1.0.70)

- Update `--features alloc` to work with nightly-2018-07-07
([#&#8203;1335](https://togithub.com/serde-rs/serde/issues/1335))

###
[`v1.0.69`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.69)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.68...v1.0.69)

- Support Rust 2018 `use_extern_macros`
([https://github.com/rust-lang/rust/pull/51496](https://togithub.com/rust-lang/rust/pull/51496))

###
[`v1.0.68`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.68)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.67...v1.0.68)

- Suppress 'extern crate' warning for rust 2018
([#&#8203;1324](https://togithub.com/serde-rs/serde/issues/1324), thanks
[@&#8203;jechase](https://togithub.com/jechase))

###
[`v1.0.67`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.67)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.66...v1.0.67)

- Implement Serialize for core::fmt::Arguments
([#&#8203;1319](https://togithub.com/serde-rs/serde/issues/1319))

###
[`v1.0.66`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.66)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.65...v1.0.66)

- Implement Serialize and Deserialize for `!`
([#&#8203;544](https://togithub.com/serde-rs/serde/issues/544),
unstable)
- Support Duration in no-std mode on sufficiently new compilers
([#&#8203;1123](https://togithub.com/serde-rs/serde/issues/1123))
- Improve compiler error messages
([#&#8203;1297](https://togithub.com/serde-rs/serde/issues/1297), thanks
[@&#8203;adamcrume](https://togithub.com/adamcrume))

###
[`v1.0.65`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.65)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.64...v1.0.65)

- Do not panic when serializing a RefCell that is currently mutably
borrowed
([#&#8203;1300](https://togithub.com/serde-rs/serde/issues/1300), thanks
[@&#8203;xfix](https://togithub.com/xfix))
- Allow flattened fields after a flattened map to receive input fields
([#&#8203;1299](https://togithub.com/serde-rs/serde/issues/1299))

###
[`v1.0.64`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.64)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.63...v1.0.64)

- Second attempt to work around docs.rs old compiler version
([#&#8203;1295](https://togithub.com/serde-rs/serde/issues/1295))

###
[`v1.0.63`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.63)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.62...v1.0.63)

- Workaround to get docs.rs successfully building our docs with its old
compiler
([#&#8203;1294](https://togithub.com/serde-rs/serde/issues/1294))

###
[`v1.0.62`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.62)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.61...v1.0.62)

- Implement
[`IntoDeserializer`](https://docs.serde.rs/serde/de/trait.IntoDeserializer.html)
for i128 and u128
([#&#8203;1280](https://togithub.com/serde-rs/serde/issues/1280))
- Implement Copy for the primitive value deserializers
([#&#8203;1287](https://togithub.com/serde-rs/serde/issues/1287))
- Implement Clone for primitive value deserializers even when the error
type cannot be cloned
([#&#8203;1287](https://togithub.com/serde-rs/serde/issues/1287))

###
[`v1.0.61`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.61)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.60...v1.0.61)

- Stabilize Deserialize impls for dynamically sized Rc / Arc
([#&#8203;1266](https://togithub.com/serde-rs/serde/issues/1266))
- Stabilize Deserialize impl for Box\<CStr>
([#&#8203;1267](https://togithub.com/serde-rs/serde/issues/1267))

###
[`v1.0.60`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.60)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.59...v1.0.60)

- Add Serde impls for i128 and u128 when compiling with Rust 1.26+
([#&#8203;1263](https://togithub.com/serde-rs/serde/issues/1263))
- Stabilize Serde impls for std::num::NonZero\* on Rust 1.28+
([#&#8203;1278](https://togithub.com/serde-rs/serde/issues/1278), thanks
[@&#8203;SimonSapin](https://togithub.com/SimonSapin))

###
[`v1.0.59`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.59)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.58...v1.0.59)

- Add a `serde(transparent)` container attribute to indicate that a
struct serializes and deserializes the same as its only field --
analogous to `repr(transparent)`
([#&#8203;1054](https://togithub.com/serde-rs/serde/issues/1054))

###
[`v1.0.58`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.58)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.57...v1.0.58)

- Fix generated code for deserializing untagged newtype variant
([#&#8203;1268](https://togithub.com/serde-rs/serde/issues/1268))

###
[`v1.0.57`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.57)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.56...v1.0.57)

- Remove unstable Serialize and Deserialize impls for `NonZero<T>` which
has been removed from the most recent nightly compiler
([#&#8203;1265](https://togithub.com/serde-rs/serde/issues/1265))

###
[`v1.0.56`](https://togithub.com/serde-rs/serde/releases/tag/v1.0.56)

[Compare
Source](https://togithub.com/serde-rs/serde/compare/v1.0.55...v1.0.56)

- Add a Serde build.rs script for rustc version detection in preparation
for adding i128 / u128 primitive support on sufficiently new compilers.
Please let us know in
[#&#8203;1136](https://togithub.com/serde-rs/serde/issues/1136) if
having a build script causes undue complication in your environment. We
will begin using the build script to enable observable functionality
after a week o

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 9pm,before 6am" in timezone
Europe/Zurich, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/smartive/zitadel-rust).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMzEuMCIsInVwZGF0ZWRJblZlciI6IjM3LjMzMS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. finished-final-comment-period The final comment period is finished for this PR / Issue. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-lang Relevant to the language team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet