Skip to content

Post-#112261 pointer += integer diagnostics suggest replacing with unused value #137391

Closed
@nabijaczleweli

Description

@nabijaczleweli

Code

fn main() {
	let ga_z = [];
	let mut known_rgbs_groups = 0 as *mut u32;
	known_rgbs_groups += ga_z.len();
}

Current output

stable:

error[E0368]: binary assignment operation `+=` cannot be applied to type `*mut u32`
 --> test.rs:4:2
  |
4 |     known_rgbs_groups += ga_z.len();
  |     -----------------^^^^^^^^^^^^^^
  |     |
  |     cannot use `+=` on type `*mut u32`
  |
help: consider using `wrapping_add` or `add` for pointer + {integer}
  |
4 |     known_rgbs_groups.wrapping_add(ga_z.len());
  |                      ~~~~~~~~~~~~~~          +

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0368`.

nightly:

error[E0368]: binary assignment operation `+=` cannot be applied to type `*mut u32`
 --> test.rs:4:2
  |
4 |     known_rgbs_groups += ga_z.len();
  |     -----------------^^^^^^^^^^^^^^
  |     |
  |     cannot use `+=` on type `*mut u32`
  |
help: consider using `wrapping_add` or `add` for pointer + {integer}
  |
4 -     known_rgbs_groups += ga_z.len();
4 +     known_rgbs_groups.wrapping_add(ga_z.len());
  |

error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0368`.

Desired output

known_rgbs_groups = known_rgbs_groups.add(ga_z.len());

Rationale and extra context

known_rgbs_groups.add(ga_z.len()); doesn't do anything 💀

Rust Version

rustc 1.84.1 (e71f9a9a9 2025-01-27)
binary: rustc
commit-hash: e71f9a9a98b0faf423844bf0ba7438f29dc27d58
commit-date: 2025-01-27
host: x86_64-pc-windows-gnu
release: 1.84.1
LLVM version: 19.1.5
rustc 1.87.0-nightly (827a0d638 2025-02-18)
binary: rustc
commit-hash: 827a0d638dabc9a22c56f9c37a557568f86ac76c
commit-date: 2025-02-18
host: x86_64-pc-windows-gnu
release: 1.87.0-nightly
LLVM version: 20.1.0

Anything else?

This is #112261, and in 20 comments and 4 review rounds no-one tried += lol

Metadata

Metadata

Assignees

Labels

A-diagnosticsArea: Messages for errors, warnings, and lintsA-raw-pointersArea: raw pointers, MaybeUninit, NonNullA-suggestion-diagnosticsArea: Suggestions generated by the compiler applied by `cargo fix`D-invalid-suggestionDiagnostics: A structured suggestion resulting in incorrect code.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions