Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Fix accidentally not emitting overflowing literals lints anymore in patterns #136393

Merged
merged 3 commits into from
Feb 6, 2025

Conversation

oli-obk
Copy link
Contributor

@oli-obk oli-obk commented Feb 1, 2025

This was regressed in #134228 (not in beta yet).

The issue was that previously we nested hir::Expr inside hir::PatKind::Lit, so it was linted by the expression code.

So now I've set it up for visitors to be able to directly visit literals and get all literals

@rustbot
Copy link
Collaborator

rustbot commented Feb 1, 2025

r? @chenyukang

rustbot has assigned @chenyukang.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Feb 1, 2025
@rust-log-analyzer

This comment has been minimized.

@oli-obk oli-obk force-pushed the pattern-type-lit-oflo-checks branch 2 times, most recently from 60f4875 to 663191d Compare February 1, 2025 22:16
@rustbot
Copy link
Collaborator

rustbot commented Feb 1, 2025

Some changes occurred in src/tools/clippy

cc @rust-lang/clippy

@compiler-errors
Copy link
Member

r? compiler-errors @bors r+ rollup=never

@bors
Copy link
Collaborator

bors commented Feb 2, 2025

📌 Commit 663191d has been approved by compiler-errors

It is now in the queue for this repository.

@rustbot rustbot assigned compiler-errors and unassigned chenyukang Feb 2, 2025
@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Feb 2, 2025
@oli-obk
Copy link
Contributor Author

oli-obk commented Feb 3, 2025

@bors r-

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Feb 3, 2025
@oli-obk
Copy link
Contributor Author

oli-obk commented Feb 3, 2025

@bors try @rust-timer queue

Let's run perf and rollup if clean

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 3, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 3, 2025
…, r=<try>

Fix accidentally not emitting overflowing literals lints anymore in patterns

This was regressed in rust-lang#134228 (not in beta yet).

The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.

So now I've set it up for visitors to be able to directly visit literals and get all literals
@bors
Copy link
Collaborator

bors commented Feb 3, 2025

⌛ Trying commit 663191d with merge 812f026...

@bors
Copy link
Collaborator

bors commented Feb 3, 2025

☀️ Try build successful - checks-actions
Build commit: 812f026 (812f0268ec8fd8cf08b806b6e5343daa579f124e)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (812f026): comparison URL.

Overall result: no relevant changes - no action needed

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

@bors rollup=never
@rustbot label: -S-waiting-on-perf -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

Results (primary -2.2%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-2.2% [-2.9%, -1.6%] 2
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.2% [-2.9%, -1.6%] 2

Cycles

This benchmark run did not return any relevant results for this metric.

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 779.014s -> 777.526s (-0.19%)
Artifact size: 328.74 MiB -> 328.77 MiB (0.01%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label Feb 3, 2025
@oli-obk
Copy link
Contributor Author

oli-obk commented Feb 5, 2025

@bors rollup-
@bors r=compiler-errors

@bors
Copy link
Collaborator

bors commented Feb 5, 2025

📌 Commit 663191d has been approved by compiler-errors

It is now in the queue for this repository.

@jieyouxu jieyouxu reopened this Feb 5, 2025
@oli-obk oli-obk force-pushed the pattern-type-lit-oflo-checks branch from 663191d to 9a2073d Compare February 5, 2025 11:28
@oli-obk
Copy link
Contributor Author

oli-obk commented Feb 5, 2025

@bors r=compiler-errors

@bors
Copy link
Collaborator

bors commented Feb 5, 2025

📌 Commit 9a2073d has been approved by compiler-errors

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Feb 5, 2025
workingjubilee added a commit to workingjubilee/rustc that referenced this pull request Feb 6, 2025
…ks, r=compiler-errors

Fix accidentally not emitting overflowing literals lints anymore in patterns

This was regressed in rust-lang#134228 (not in beta yet).

The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.

So now I've set it up for visitors to be able to directly visit literals and get all literals
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…kingjubilee

Rollup of 9 pull requests

Successful merges:

 - rust-lang#135439 (Make `-O` mean `OptLevel::Aggressive`)
 - rust-lang#136193 (Implement pattern type ffi checks)
 - rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
 - rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
 - rust-lang#136315 (Use short ty string for binop and unop errors)
 - rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
 - rust-lang#136530 (Implement `x perf` directly in bootstrap)
 - rust-lang#136580 (Couple of changes to run rustc in miri)
 - rust-lang#136589 (Enable "jump to def" feature on rustc docs)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
 - rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
 - rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
 - rust-lang#136315 (Use short ty string for binop and unop errors)
 - rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
 - rust-lang#136435 (Simplify some code for lowering THIR patterns)
 - rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)

r? `@ghost`
`@rustbot` modify labels: rollup
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
Rollup of 7 pull requests

Successful merges:

 - rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
 - rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
 - rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
 - rust-lang#136315 (Use short ty string for binop and unop errors)
 - rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
 - rust-lang#136435 (Simplify some code for lowering THIR patterns)
 - rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)

r? `@ghost`
`@rustbot` modify labels: rollup

try-job: aarch64-gnu-debug
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
 - rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
 - rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
 - rust-lang#136315 (Use short ty string for binop and unop errors)
 - rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
 - rust-lang#136435 (Simplify some code for lowering THIR patterns)
 - rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)

r? `@ghost`
`@rustbot` modify labels: rollup

try-job: aarch64-gnu-debug
@bors bors merged commit 85a9de5 into rust-lang:master Feb 6, 2025
6 checks passed
@rustbot rustbot added this to the 1.86.0 milestone Feb 6, 2025
bors added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
…kingjubilee

Rollup of 9 pull requests

Successful merges:

 - rust-lang#135439 (Make `-O` mean `OptLevel::Aggressive`)
 - rust-lang#136193 (Implement pattern type ffi checks)
 - rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
 - rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
 - rust-lang#136315 (Use short ty string for binop and unop errors)
 - rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
 - rust-lang#136530 (Implement `x perf` directly in bootstrap)
 - rust-lang#136580 (Couple of changes to run rustc in miri)
 - rust-lang#136589 (Enable "jump to def" feature on rustc docs)

r? `@ghost`
`@rustbot` modify labels: rollup
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Feb 6, 2025
Rollup merge of rust-lang#136393 - oli-obk:pattern-type-lit-oflo-checks, r=compiler-errors

Fix accidentally not emitting overflowing literals lints anymore in patterns

This was regressed in rust-lang#134228 (not in beta yet).

The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.

So now I've set it up for visitors to be able to directly visit literals and get all literals
flip1995 pushed a commit to flip1995/rust that referenced this pull request Feb 20, 2025
…ks, r=compiler-errors

Fix accidentally not emitting overflowing literals lints anymore in patterns

This was regressed in rust-lang#134228 (not in beta yet).

The issue was that previously we nested `hir::Expr` inside `hir::PatKind::Lit`, so it was linted by the expression code.

So now I've set it up for visitors to be able to directly visit literals and get all literals
flip1995 pushed a commit to flip1995/rust that referenced this pull request Feb 20, 2025
…iaskrgr

Rollup of 7 pull requests

Successful merges:

 - rust-lang#136073 (Always compute coroutine layout for eagerly emitting recursive layout errors)
 - rust-lang#136235 (Pretty print pattern type values with transmute if they don't satisfy their pattern)
 - rust-lang#136311 (Ensure that we never try to monomorphize the upcasting or vtable calls of impossible dyn types)
 - rust-lang#136315 (Use short ty string for binop and unop errors)
 - rust-lang#136393 (Fix accidentally not emitting overflowing literals lints anymore in patterns)
 - rust-lang#136435 (Simplify some code for lowering THIR patterns)
 - rust-lang#136630 (Change two std process tests to not output to std{out,err}, and fix test suite stat reset in bootstrap CI test rendering)

r? `@ghost`
`@rustbot` modify labels: rollup

try-job: aarch64-gnu-debug
@oli-obk oli-obk deleted the pattern-type-lit-oflo-checks branch March 2, 2025 18:19
@apiraino
Copy link
Contributor

Given this has regressed in #137893 but seems to be an accepted change (comment), I'm going to mark this for the release notes, T-release will decide 🙂

@rustbot label relnotes

@rustbot rustbot added the relnotes Marks issues that should be documented in the release notes of the next release. label Mar 19, 2025
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Apr 9, 2025
Upstream changes relative to 1.85.1:

Version 1.86.0 (2025-04-03)
==========================

Language
--------
- [Stabilize upcasting trait objects to supertraits.]
  (rust-lang/rust#134367)
- [Allow safe functions to be marked with the `#[target_feature]` attribute.]
  (rust-lang/rust#134090)
- [The `missing_abi` lint now warns-by-default.]
  (rust-lang/rust#132397)
- Rust now lints about double negations, to catch cases that might
  have intended to be a prefix decrement operator (`--x`) as written
  in other languages. This was previously a clippy lint,
  `clippy::double_neg`, and is [now available directly in Rust as
  `double_negations`.]
  (rust-lang/rust#126604)
- [More pointers are now detected as definitely not-null based on
  their alignment in const eval.]
  (rust-lang/rust#133700)
- [Empty `repr()` attribute applied to invalid items are now
  correctly rejected.]
  (rust-lang/rust#133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer
  accepted in more places than intended.]
  (rust-lang/rust#134276)

Compiler
--------
- [Debug-assert that raw pointers are non-null on access.]
  (rust-lang/rust#134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2`
  to match Cargo's defaults.]
  (rust-lang/rust#135439)
- [Fix emission of `overflowing_literals` under certain macro environments.]
  (rust-lang/rust#136393)

Platform Support
----------------
- [Replace `i686-unknown-redox` target with `i586-unknown-redox`.]
  (rust-lang/rust#136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium 4.]
  (rust-lang/rust#136700)
- New tier 3 targets:
  - [`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`]
    (rust-lang/rust#133631).
    For supporting Neutrino QNX 7.1 with `io-socket` network stack.
  - [`{aarch64-unknown,x86_64-pc}-nto-qnx800`]
    (rust-lang/rust#133631).
    For supporting Neutrino QNX 8.0 (`no_std`-only).
  - [`{x86_64,i686}-win7-windows-gnu`]
    (rust-lang/rust#134609).
    Intended for backwards compatibility with Windows 7.
    `{x86_64,i686}-win7-windows-msvc` are the Windows MSVC counterparts
    that already exist as Tier 3 targets.
  - [`amdgcn-amd-amdhsa`](rust-lang/rust#134740).
  - [`x86_64-pc-cygwin`](rust-lang/rust#134999).
  - [`{mips,mipsel}-mti-none-elf`]
    (rust-lang/rust#135074).
    Initial bare-metal support.
  - [`m68k-unknown-none-elf`](rust-lang/rust#135085).
  - [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and
    `thumbv7a-nuttx-{eabi,eabihf}`]
    (rust-lang/rust#135757).

Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.

Libraries
---------
- The type of `FromBytesWithNulError` in `CStr::from_bytes_with_nul(bytes:
  &[u8]) -> Result<&Self, FromBytesWithNulError>` was [changed from
  an opaque struct to an enum]
  (rust-lang/rust#134143), allowing users
  to examine why the conversion failed.
- [Remove `RustcDecodable` and `RustcEncodable`.]
  (rust-lang/rust#134272)
- [Deprecate libtest's `--logfile` option.]
  (rust-lang/rust#134283)
- [On recent versions of Windows, `std::fs::remove_file` will now
  remove read-only files.]
  (rust-lang/rust#134679)

Stabilized APIs
---------------

- [`{float}::next_down`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_down)
- [`{float}::next_up`]
  (https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_up)
- [`<[_]>::get_disjoint_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_mut)
- [`<[_]>::get_disjoint_unchecked_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_unchecked_mut)
- [`slice::GetDisjointMutError`]
  (https://doc.rust-lang.org/stable/std/slice/enum.GetDisjointMutError.html)
- [`HashMap::get_disjoint_mut`]
  (https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_mut)
- [`HashMap::get_disjoint_unchecked_mut`]
  (https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_unchecked_mut)
- [`NonZero::count_ones`]
  (https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.count_ones)
- [`Vec::pop_if`]
  (https://doc.rust-lang.org/std/vec/struct.Vec.html#method.pop_if)
- [`sync::Once::wait`]
  (https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait)
- [`sync::Once::wait_force`]
  (https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait_force)
- [`sync::OnceLock::wait`]
  (https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html#method.wait)

These APIs are now stable in const contexts:

- [`hint::black_box`]
  (https://doc.rust-lang.org/stable/std/hint/fn.black_box.html)
- [`io::Cursor::get_mut`]
  (https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_mut)
- [`io::Cursor::set_position`]
  (https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.set_position)
- [`str::is_char_boundary`]
  (https://doc.rust-lang.org/stable/std/primitive.str.html#method.is_char_boundary)
- [`str::split_at`]
  (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at)
- [`str::split_at_checked`]
  (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked)
- [`str::split_at_mut`]
  (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut)
- [`str::split_at_mut_checked`]
  (https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked)

Cargo
-----
- [When merging, replace rather than combine configuration keys
  that refer to a program path and its arguments.]
  (rust-lang/cargo#15066)
- [Error if both `--package` and `--workspace` are passed but the
  requested package is missing.]
  (rust-lang/cargo#15071) This was previously
  silently ignored, which was considered a bug since missing packages
  should be reported.
- [Deprecate the token argument in `cargo login` to avoid shell history leaks.]
  (rust-lang/cargo#15057)
- [Simplify the implementation of `SourceID` comparisons.]
  (rust-lang/cargo#14980) This may
  potentially change behavior if the canonicalized URL compares
  differently in alternative registries.

Rustdoc
-----
- [Add a sans-serif font setting.]
  (rust-lang/rust#133636)

Compatibility Notes
-------------------
- [The `wasm_c_abi` future compatibility warning is now a hard error.]
  (rust-lang/rust#133951)
  Users of `wasm-bindgen` should upgrade to at least version 0.2.89,
  otherwise compilation will fail.
- [Remove long-deprecated no-op attributes `#![no_start]` and `#![crate_id]`.]
  (rust-lang/rust#134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been
  made into a hard error.]
  (rust-lang/rust#135964) This means it is
  now an error to cast a field-less enum to an integer if the enum
  implements `Drop`.
- [SSE2 is now required for "i686" 32-bit x86 hard-float targets;
  disabling it causes a warning that will become a hard error
  eventually.]
  (rust-lang/rust#137037) To compile for
  pre-SSE2 32-bit x86, use a "i586" target instead.

Internal Changes
----------------

These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.

- [Build the rustc on AArch64 Linux with ThinLTO + PGO.]
  (rust-lang/rust#133807)
  The ARM 64-bit compiler (AArch64) on Linux is now optimized with
  ThinLTO and PGO, similar to the optimizations we have already
  performed for the x86-64 compiler on Linux. This should make it
  up to 30% faster.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
relnotes Marks issues that should be documented in the release notes of the next release. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

10 participants