init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

init: allow nonstandard_style for generated accessor/value - #127

Merged
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor
May 29, 2026
Merged

init: allow nonstandard_style for generated accessor/value#127
nbdd0121 merged 3 commits into
Rust-for-Linux:mainfrom
Mirko-A:mirko/allow-nonstandard-style-accessor

Conversation

@Mirko-A

Copy link
Copy Markdown
Contributor

Allows nonstandard_style lint on accessors/values generated as local variables in init!.

Since the same warning will be reported by the compiler on the struct field, having the extra warning for the generated accessor/value is unnecessary and confusing.

Reported-by: Gary Guo gary@garyguo.net
Link: #125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: f1b0c3c ("internal: init: remove #[disable_initialized_field_access]")

@Mirko-A

Mirko-A commented Apr 1, 2026

Copy link
Copy Markdown
ContributorAuthor

Tested with the following changes:

diff --git a/examples/big_struct_in_place.rs b/examples/big_struct_in_place.rs
index 80f89b5..5525cae 100644
--- a/examples/big_struct_in_place.rs
+++ b/examples/big_struct_in_place.rs
@@ -13,8 +13,8 @@ pub struct BigStruct {
a: u64,
b: u64,
c: u64,
- d: u64,
- managed_buf: ManagedBuf,
+ NONSTANDARD_D: u64,
+ MANAGED_BUF: ManagedBuf,
}
#[derive(Debug)]
@@ -37,8 +37,8 @@ fn main() {
a: 7,
b: 186,
c: 7789,
- d: 34,
- managed_buf <- ManagedBuf::new(),
+ NONSTANDARD_D: 34,
+ MANAGED_BUF <- ManagedBuf::new(),
}))
.unwrap();
println!("{}", core::mem::size_of_val(&*buf));

Output before the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:28
|
40 | NONSTANDARD_D: 34,
| ^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:40:13
|
40 | NONSTANDARD_D: 34,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`
error: variable `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:41:13
|
41 | MANAGED_BUF <- ManagedBuf::new(),
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 5 previous errors

Output after the patch:

$ cargo run --example big_struct_in_place
[...]
error: structure field `NONSTANDARD_D` should have a snake case name
--> examples/big_struct_in_place.rs:16:5
|
16 | NONSTANDARD_D: u64,
| ^^^^^^^^^^^^^ help: convert the identifier to snake case: `nonstandard_d`|
= note: `-D non-snake-case` implied by `-D warnings`
= help: to override `-D warnings` add `#[allow(non_snake_case)]`
error: structure field `MANAGED_BUF` should have a snake case name
--> examples/big_struct_in_place.rs:17:5
|
17 | MANAGED_BUF: ManagedBuf,
| ^^^^^^^^^^^ help: convert the identifier to snake case: `managed_buf`
error: could not compile `pin-init` (example "big_struct_in_place") due to 2 previous errors

I am still quite new to the process of contributing to Rust-For-Linux. Please let me know if I've made any mistakes or if I've missed something.

@nbdd0121

Copy link
Copy Markdown
Member

Please add a test for this

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Does something like this look okay?

@nbdd0121

Copy link
Copy Markdown
Member

I think what you want is not a compile_fail test, but rather than the code (with allow on the struct definition side), compiles to completion without warnings? So this should just be a test in src/tests.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from e90104e to 2d194beCompareApril 4, 2026 09:16
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Right, that sounds like a better approach.

I've amended the existing test commit to keep the branch clean, hopefully that's okay: 2d194be

So this should just be a test in src/tests.

I put the test under the existing tests directory in the crate root, I hope that's what you meant. If you specifically wanted a new directory in src, I'm happy to move it.

@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Two more things:

  1. The CI failure seems unrelated, running rustup run 1.78 cargo check on main produces the same error for me.
  2. Would you like me to add a changelog entry for this fix?

@nbdd0121

Copy link
Copy Markdown
Member

main works fine for me. Did you not add RUSTC_BOOTSTRAP=1? Please do add a changelog entry.

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from c7a56c5 to f7e5864CompareApril 4, 2026 15:35
Comment threadCHANGELOG.md Outdated
Comment threadtests/nonstandard_style.rs
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 61c7294 to 7a0d2daCompareApril 8, 2026 10:34
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Sorry for the delay - I just pushed a few more commits. Hopefully that covers everything now.

I kept the new commits separate, so that it is easier to see the diffs. Please let me know if you want them squashed.

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Please squash the commits. I think for this you can have three commits:

  • one for #[pin_data]
  • one for init!/pin_init!
  • one for the test

Also fix tag is wrong, it should be db96c51

Comment threadtests/nonstandard_style.rs Outdated
Comment threadCHANGELOG.md Outdated
Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 0116ff1 to 39de3e1CompareApril 14, 2026 10:55
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

I've squashed the commits as suggested. I didn't keep the fixup commits for the most recent round of reviews (there wasn't a nice way to split them per comment but also per commit they should be folded into), so I'll list the changes here:

This sentence doesn't need to be here; this is an integral part of the test.

This comment has been removed.

actually, could you update code to use the specific lint, such as non_snake_case for suppression?

Done. Only non_snake_case warnings were generated by the macros (in the test cases that exist at the moment) so this was pretty much a search and replace.

Also, could you squash the changelog update into the same commit that update the code please.

Done.

You'd also probably want a line about #[pin_data], to mention that lints can now be properly suppressed where it couldn't previously.

Added a line for #[pin_data] in the changelog.

Hmm, actually this can cause lints to be suppressed on #value, which is provided by the user.

Nice catch. I've split up the evaluation of user code and assignment to a local variable, only suppressing warnings for the latter. I've also modified the test to prove this works as intended now.

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 39de3e1 to 51de8d5CompareApril 14, 2026 19:01
nbdd0121
nbdd0121 previously approved these changes Apr 16, 2026

@nbdd0121nbdd0121 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Actually, could you please update the commit message to reflect latest changes please.

Also, the current summary lines are too long (they'll be prepended with rust: pin-init: when patches are synced to kernel).

Something like internal: suppress ... for `#[pin_data]` would work better. Thanks!

Comment threadinternal/src/init.rs Outdated
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 3d31593 to 5b5bb7aCompareApril 16, 2026 13:39
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch 2 times, most recently from 89de161 to 6b6cbd4CompareApril 21, 2026 08:44
@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 6b6cbd4 to 0715513CompareApril 26, 2026 10:18
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from 0715513 to b5b5807CompareMay 1, 2026 13:25
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from b5b5807 to 5acdc49CompareMay 18, 2026 11:39
@nbdd0121

Copy link
Copy Markdown
Member

I've rebased the code with accessor rework landed. I've noticed when trying to apply that there's some style issues with the commits (same as the other PR) about the tags.

Reported-by should followed immediately by Closes. Also, the #[pin_data] commit is currently using the wrong commit hash (given that the code is introduced very early, I wouldn't bother looking up the correct hash, would remove the fixes tag instead).

@Mirko-A
Mirko-Aforce-pushed the mirko/allow-nonstandard-style-accessor branch from 5acdc49 to a17f2c9CompareMay 20, 2026 12:49
@Mirko-A

Copy link
Copy Markdown
ContributorAuthor

Thanks for letting me know. I've edited both commits to follow the tag guidelines and removed the Fixes tag on the #[pin_data] commit.

Mirko-A added 3 commits May 29, 2026 22:14
Allows `non_snake_case` lint on struct fields generated by `#[pin_data]`.
Since the same warning will be reported by the compiler on the struct
definition, having extra warnings for the generated code is unnecessary
and confusing.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
Allows `non_snake_case` lint on local variables generated in `[pin_]init!`.
Conceptually the identifiers in `[pin_]init!` just references the field
names, and are not defining them, so the warning should not be generated,
similar to how constructing a struct with non-snake-case field names do no
generate these warnings.
Reported-by: Gary Guo <gary@garyguo.net>
Closes: Rust-for-Linux#125
Closes: https://lore.kernel.org/rust-for-linux/DGTBJBIVFZ2K.2F1ZEFGY0G7NK@garyguo.net/
Fixes: db96c51 ("add references to previously initialized fields")
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
[ Reworded commit messages. - Gary ]
Signed-off-by: Gary Guo <gary@garyguo.net>
Adds a test to make sure that no excess warnings are emitted by
`#[pin_data]`, `init!` or `pin_init!` when dealing with non-standard
field names.
Signed-off-by: Mirko Adzic <adzicmirko97@gmail.com>
@nbdd0121
nbdd0121force-pushed the mirko/allow-nonstandard-style-accessor branch from a17f2c9 to deeb124CompareMay 29, 2026 21:16
@nbdd0121
nbdd0121 merged commit 029a94c into Rust-for-Linux:mainMay 29, 2026
20 of 22 checks passed
@nbdd0121

Copy link
Copy Markdown
Member

Thanks!

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@Mirko-A@nbdd0121