Skip to content

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
Contributor

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
Contributor

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

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 S-waiting-on-team DEPRECATED: Use the team-based variants `S-waiting-on-t-lang`, `S-waiting-on-t-compiler`, ... 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
Collaborator

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 DEPRECATED: Use the team-based variants `S-waiting-on-t-lang`, `S-waiting-on-t-compiler`, ... labels Jun 27, 2018
@bors
Copy link
Collaborator

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
Collaborator

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 referenced this pull request in smartive/zitadel-rust 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