Commit Graph

55187 Commits

Author SHA1 Message Date
Waffle Lapkin 9b1f20d20d deny-by-default & report in deps uninhabited_static 2026-04-05 20:37:18 +02:00
bors 8931f23941 Auto merge of #154614 - nnethercote:streamline-CachingSourceMapView, r=JonathanBrouwer
Streamline `CachingSourceMapView`

`CachingSourceMapView` is home to some pretty ugly, low-level, repetitive code. We can do better. Details in individual commits.

r? @JonathanBrouwer
2026-04-02 03:18:50 +00:00
bors 009a6c1e8b Auto merge of #154308 - ShoyuVanilla:undo-fudge-iv, r=jieyouxu
Revert #151380 and #153869

cc https://rust-lang.zulipchat.com/#narrow/channel/474880-t-compiler.2Fbackports/topic/.23153869.3A.20beta-nominated/with/581306395

r? ghost
2026-04-02 00:09:59 +00:00
bors 7e46c5f6fb Auto merge of #154292 - Zalathar:def-kind, r=petrochenkov
Don't use disk-cache for query `def_kind`



From what I can tell, the `def_kind` query has no local provider, and is always given its value via query feeding, usually from `TyCtxt::create_def`.

If that's the case, there should never be any opportunity for a previous value to be loaded from disk-cache, so serializing the current-session values is a waste of time.
2026-04-01 16:54:24 +00:00
bors 2bd7a97871 Auto merge of #154668 - jhpratt:rollup-ePnl7Di, r=jhpratt
Rollup of 4 pull requests

Successful merges:

 - rust-lang/rust#154356 (    Add integer truncation and extension methods)
 - rust-lang/rust#154641 (build_helper: fix yarn locking, add check, and bump lockfile)
 - rust-lang/rust#154647 (change `c_double` to `f32` on `avr` targets)
 - rust-lang/rust#154655 (Fix associated type bound suggestion span issue)
2026-04-01 08:58:47 +00:00
Jacob Pratt 7f794c3463 Rollup merge of #154655 - chenyukang:yukang-fix-145586-deserializer-bound-syntax, r=jieyouxu
Fix associated type bound suggestion span issue

Fixes rust-lang/rust#145586
2026-04-01 03:35:11 -04:00
bors 3ebe60c8c3 Auto merge of #154659 - chenyukang:rollup-D1UvH9O, r=chenyukang
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#152935 (c-variadic: error when we can't guarantee that the backend does the right thing)
 - rust-lang/rust#153207 (std::net: clamp linger timeout value to prevent silent truncation.)
 - rust-lang/rust#154592 (Fix `mismatched_lifetime_syntaxes` suggestions for hidden path lifetimes)
 - rust-lang/rust#154643 (fix pin docs)
 - rust-lang/rust#154648 (Clarify `ty::List`)
2026-04-01 05:47:55 +00:00
Yukang 18f8cd2c28 Rollup merge of #154648 - nnethercote:clarify-ty-List, r=cuviper
Clarify `ty::List`

`ty::List` is an unusual type. This commit clarifies some things about it. Details in individual commits.

r? @cuviper
2026-04-01 10:43:56 +08:00
Yukang 1f5dcf30d7 Rollup merge of #154592 - reddevilmidzy:lifetime, r=chenyukang
Fix `mismatched_lifetime_syntaxes` suggestions for hidden path lifetimes

close: https://github.com/rust-lang/rust/issues/154493

r? shepmaster

cc: @chenyukang
2026-04-01 10:43:55 +08:00
Yukang 9445be9bf5 Rollup merge of #152935 - folkertdev:c-variadic-disallow, r=tgross35
c-variadic: error when we can't guarantee that the backend does the right thing

tracking issue: https://github.com/rust-lang/rust/issues/44930
r? workingjubilee

as discussed in [#t-lang > stabilizing `c_variadic`](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/stabilizing.20.60c_variadic.60/with/574691397), display an error when we can't guarantee that the codegen backend (only LLVM is supported at the moment) does the right thing.
2026-04-01 10:43:55 +08:00
bors 12ab1cf1fd Auto merge of #154456 - chenyukang:yukang-fix-154434-unused-assignments, r=estebank
Label overwritten for never read assignments



Fixes rust-lang/rust#154434
Closes rust-lang/rust#144079
2026-04-01 02:38:14 +00:00
yukang 95d5ecf3ab Fix associated bound suggestion span issue 2026-04-01 09:21:45 +08:00
Zalathar eb5a4000ff Don't use disk-cache for query def_kind
From what I can tell, the `def_kind` query has no local provider, and is always
given its value via query feeding, usually from `TyCtxt::create_def`.

If that's the case, there should never be any opportunity for a previous value
to be loaded from disk-cache, so serializing the current-session values is a
waste of time.
2026-04-01 09:49:49 +11:00
Folkert de Vries 1d0dcfab18 c-variadic: error when we can't guarantee that the backend does the right thing
specifically this emits an error when

- a custom target is used
- `RiscV32 if self.llvm_abiname == "ilp32e"` this abi is used for 32-bit
  embedded targets, and clang/llvm document that the ABI may change in
  the future.
2026-03-31 23:35:25 +02:00
bors 48cc71ee88 Auto merge of #154638 - JonathanBrouwer:rollup-oLBZ6Tr, r=JonathanBrouwer
Rollup of 4 pull requests

Successful merges:

 - rust-lang/rust#150752 (Update libc to v0.2.183)
 - rust-lang/rust#152432 (add rustc option -Zpacked-stack)
 - rust-lang/rust#154634 (Use `Hcx`/`hcx` consistently for `StableHashingContext`.)
 - rust-lang/rust#154635 (./x run miri: default to edition 2021)
2026-03-31 20:16:05 +00:00
Nicholas Nethercote 64cf1ec685 Update Erasable impls for lists.
- Merge the `List` and `ListWithCachedTypeInfo` impls by referring to
  the shared underlying type, `RawList`. This required increasing the
  visibility of `RawList`.

- Explain why a separate impl is needed for `RawList`.

- Remove an incorrect FIXME comment. Fat reference types will always
  need a separate impl. (To be sure, one could use `T: ?Sized` to merge
  the impls for `&T` and `&[T]` and it would compile but it would behave
  incorrectly because `&T` needs one word of storage and `&[T]` needs
  two words of storage. I tried it and it did not go well.)
2026-04-01 07:04:08 +11:00
Nicholas Nethercote 0f159dc1ac Clarify use of extern type in RawList.
- Add some explanatory comments.
- Rename `OpaqueListContents` as `ExternTy`. I've always found both the
  "opaque" and "contents" parts of this name to be confusing. Calling it
  `ExternTy` makes it clear that all that matters is it's an extern
  type.
2026-04-01 06:58:37 +11:00
Nicholas Nethercote f334357e8c Add some size assertions for List/RawList.
Checking that they really do use thin pointers.
2026-04-01 06:57:08 +11:00
Nicholas Nethercote cb74dde256 Rename CacheEncoder::source_map as caching_source_map_view.
To make clear it's not a `SourceMap`.
2026-04-01 06:34:55 +11:00
Nicholas Nethercote 919c632c0e Streamline CachingSourceMapView.
`CachingSourceMapView` caches information about three recent code
positions, to avoid expensive `SourceMap` lookups. The code to do this
is pretty low-level and grotty.

This commit changes it to cache information about a single code
position.
- This is much simpler, with no need to maintain entry time stamps or
  file indices. It's 120 fewer lines of code overall.
- It's also faster. The cache hit rate is only marginally lower, and
  scanning a single entry is faster than scanning three entries in the
  cache miss case (which is still moderately common).

The commit also renames the `lines` field as `line_bounds`, which makes
it clearer that it's a range.
2026-04-01 06:34:55 +11:00
Nicholas Nethercote c30f5cb084 Refactor byte_pos_to_line_and_col.
By factoring out some repeated code.
2026-04-01 06:34:54 +11:00
Nicholas Nethercote 0eea36fea4 Use Option to indicate failure in CachingSourceMapView.
Currently the `cache_entry_index` uses -1 to indicate failure. But this
is Rust, not C! So this commit uses `Option`, making it impossible to
forget to check for failure, and avoiding many `as usize` casts.
2026-04-01 06:34:31 +11:00
bors 0e95a0f4c6 Auto merge of #154637 - JonathanBrouwer:rollup-fGsU36o, r=JonathanBrouwer
Rollup of 12 pull requests

Successful merges:

 - rust-lang/rust#154419 (Take first task group for further execution)
 - rust-lang/rust#154569 (Fix  type alias where clause suggestion spacing issue)
 - rust-lang/rust#154617 (Update flate2 users to use zlib-rs)
 - rust-lang/rust#154618 (Fix AtomicPtr::update's cfg gate)
 - rust-lang/rust#154620 (stabilize new Range type and iterator)
 - rust-lang/rust#151932 (refactor: remove `Adjust::ReborrowPin`)
 - rust-lang/rust#153980 (refactor: move doc(rust_logo) check to parser)
 - rust-lang/rust#154134 (fix: guard paren-sugar pretty-printing on short trait args)
 - rust-lang/rust#154270 (Create `Ty` type alias in `rustc_type_ir`)
 - rust-lang/rust#154580 (Split AttributeParserError Diagnostic implementation into subfunctions)
 - rust-lang/rust#154606 (misc test cleanups)
 - rust-lang/rust#154612 (Add a test for a now fixed ICE with `offset_of!()`)
2026-03-31 16:44:16 +00:00
Jonathan Brouwer 3cef5b54bc Rollup merge of #154634 - nnethercote:hcx, r=petrochenkov
Use `Hcx`/`hcx` consistently for `StableHashingContext`.

The `HashStable` and `ToStableHashKey` traits both have a type parameter that is sometimes called `CTX` and sometimes called `HCX`. (In practice this type parameter is always instantiated as `StableHashingContext`.) Similarly, variables with these types are sometimes called `ctx` and sometimes called `hcx`. This inconsistency has bugged me for some time.

The `HCX`/`hcx` form is more informative (the `H`/`h` indicates what type of context it is) and it matches other cases like `tcx`, `dcx`, `icx`.

Also, RFC 430 says that type parameters should have names that are "concise UpperCamelCase, usually single uppercase letter: T". In this case `H` feels insufficient, and `Hcx` feels better.

Therefore, this commit changes the code to use `Hcx`/`hcx` everywhere.

r? @petrochenkov
2026-03-31 15:27:19 +02:00
Jonathan Brouwer f883d62ea5 Rollup merge of #152432 - fneddy:s390x_packed_stack_attribute, r=nikic
add rustc option -Zpacked-stack

this enables `-Zpacked-stack` just as `-mpacked-stack` in clang and gcc. packed-stack is needed on s390x for kernel development.

For reference: rust-lang/rust#151154 and rust-lang/rust#150766

look at @uweigand s post for full explanation of what this does. Here a wrap-up:

https://github.com/rust-lang/rust/pull/150766#issuecomment-3729074303
> [...]
> packed-stack [...] modifies how the compiler-generated function prolog/epilog code makes use of the 160 byte register save area provided by a caller to the callee [...]  this variant is not actually incompatible with the ABI - packed-stack and regular functions can freely call each other without ABI issues.
> [...]
> combination of -mpacked-stack and -mbackchain [...]  the location in the stack frame where the backchain link ought to be stored is not available. [...] is not supported at all with the default ABI
> [...]
> However, in the special case of also using soft-float, our (implied) soft-float ABI provides a different location for the backchain that is compatible with -mpacked-stack, so that combination should be supported
> [...]
2026-03-31 15:27:18 +02:00
bors ba11b1e3f0 Auto merge of #154576 - Zalathar:cache-on-disk, r=nnethercote
Simplify the `cache_on_disk_if` modifier to just `cache_on_disk`



Thanks to https://github.com/rust-lang/rust/pull/154304, there is now only one remaining query with a non-trivial cache-on-disk condition (`check_liveness`). But prior experiments at https://github.com/rust-lang/rust/pull/153441#issuecomment-4009037104 indicate that `check_liveness` can also be made non-disk-caching with little or no measurable effect.

This PR takes advantage of those facts to replace the `cache_on_disk_if` modifier with a simpler `cache_on_disk` modifier:
- When combined with `separate_provide_extern`, only values for “local” keys are cached to disk.
- For any other query with `cache_on_disk`, values are cached to disk unconditionally.

r? nnethercote (or compiler)
2026-03-31 13:13:38 +00:00
yukang 86796ddaa0 Label overwritten assignments for never read assignments 2026-03-31 20:44:11 +08:00
Jonathan Brouwer 6188955b76 Rollup merge of #154580 - scrabsha:push-uzvmzwlqvqzr, r=jdonszelmann
Split AttributeParserError Diagnostic implementation into subfunctions
2026-03-31 13:58:43 +02:00
Jonathan Brouwer 286263335b Rollup merge of #154270 - Jamesbarford:chore/move-ty-pt1, r=lcnr
Create `Ty` type alias in `rustc_type_ir`

r? lcnr

Anywhere that required the use of the trait `Ty` I used `ty::Ty<I>` otherwise it should be `Ty<I>`
2026-03-31 13:58:42 +02:00
Jonathan Brouwer 29c210d5bd Rollup merge of #154134 - Embers-of-the-Fire:fix-153855, r=fmease
fix: guard paren-sugar pretty-printing on short trait args

Fix rust-lang/rust#153855 by adding a guard on trait with only one argument.
2026-03-31 13:58:42 +02:00
Jonathan Brouwer bfffbb6f41 Rollup merge of #153980 - mehdiakiki:pr-check_attrs-rust_logo, r=jdonszelmann
refactor: move doc(rust_logo) check to parser

Reducing `check_attr.rs` size by moving the `#[doc(rust_logo)]` feature gate into `DocParser`.
2026-03-31 13:58:41 +02:00
Jonathan Brouwer 3869a8e617 Rollup merge of #151932 - frank-king:refactor/pin-coerce-3, r=jackh726
refactor: remove `Adjust::ReborrowPin`

Followed by rust-lang/rust#149130, this PR removes `Adjust::ReborrowPin` and use an `Adjust::Deref(DerefAdjustKind::Pin)` followed by an `Adjust::Borrow(AutoBorrow::Pin)` instead.
2026-03-31 13:58:40 +02:00
Jonathan Brouwer 028a626a19 Rollup merge of #154620 - pitaj:stabilize-new_range_api, r=tgross35
stabilize new Range type and iterator

For rust-lang/rust#125687
Stabilizes `core::range::Range` and `core::range::RangeIter`, newly stable API:

```rust
// in core::range

pub struct Range<Idx> {
    pub start: Idx,
    pub end: Idx,
}

impl<Idx: fmt::Debug> fmt::Debug for Range<Idx> { /* ... */ }

impl<Idx: PartialOrd<Idx>> Range<Idx> {
    pub const fn contains<U>(&self, item: &U) -> bool
    where
        Idx: [const] PartialOrd<U>,
        U: ?Sized + [const] PartialOrd<Idx>;

    pub const fn is_empty(&self) -> bool
    where
        Idx: [const] PartialOrd;
}

impl<Idx: Step> Range<Idx> {
    pub fn iter(&self) -> RangeIter<Idx>;
}

impl<T> const RangeBounds<T> for Range<T> { /* ... */ }
impl<T> const RangeBounds<T> for Range<&T> { /* ... */ }

impl<T> const From<Range<T>> for legacy::Range<T> { /* ... */ }
impl<T> const From<legacy::Range<T>> for Range<T> { /* ... */ }

pub struct RangeIter<A>(/* ... */);

// `RangeIter::remainder` not stabilized

impl<A: Step> Iterator for RangeIter<A> {
    type Item = A;
    /* ... */
}

impl<A: Step> DoubleEndedIterator for RangeIter<A> { /* ... */ }
impl<A: Step> FusedIterator for RangeIter<A> { }
impl<A: Step> IntoIterator for Range<A> {
    type Item = A;
    type IntoIter = RangeIter<A>;
    /* ... */
}

impl ExactSizeIterator for RangeIter<u8> { }
impl ExactSizeIterator for RangeIter<i8> { }

unsafe impl<T> const SliceIndex<[T]> for range::Range<usize> {
    type Output = [T];
    /* ... */
}
unsafe impl const SliceIndex<str> for range::Range<usize> {
    type Output = str;
    /* ... */
}
```

Updates docs to reflect stabilization (removed "experimental")
2026-03-31 13:58:40 +02:00
Jonathan Brouwer 04987e7b67 Rollup merge of #154569 - chenyukang:yukang-fix-153567-where-clause-space, r=jackh726
Fix  type alias where clause suggestion spacing issue

Fixes rust-lang/rust#153567
2026-03-31 13:58:38 +02:00
Jonathan Brouwer 8427445bde Rollup merge of #154419 - zetanumbers:take-first-group, r=nnethercote
Take first task group for further execution

Continuing from https://github.com/rust-lang/rust/pull/153768#discussion_r2938828363.

I thought that storing a first group of tasks for immediate execution instead of pushing and immediately poping it from rayon's local task queue in par_slice would avoid overwhelming work stealing potentially blocking the original thread. So I've implemented this change.

8 threads benchmarks:

<table><tr><td rowspan="2">Benchmark</td><td colspan="1"><b>baseline~~9</b></th><td colspan="2"><b>new~take-first-group~1</b></th></tr><tr><td align="right">Time</td><td align="right">Time</td><td align="right">%</th></tr><tr><td>🟣 <b>hyper</b>:check</td><td align="right">0.1110s</td><td align="right">0.1086s</td><td align="right">💚  -2.13%</td></tr><tr><td>🟣 <b>hyper</b>:check:initial</td><td align="right">0.1314s</td><td align="right">0.1298s</td><td align="right">💚  -1.23%</td></tr><tr><td>🟣 <b>hyper</b>:check:unchanged</td><td align="right">0.0771s</td><td align="right">0.0755s</td><td align="right">💚  -2.14%</td></tr><tr><td>🟣 <b>clap</b>:check</td><td align="right">0.3787s</td><td align="right">0.3757s</td><td align="right"> -0.80%</td></tr><tr><td>🟣 <b>clap</b>:check:initial</td><td align="right">0.4680s</td><td align="right">0.4564s</td><td align="right">💚  -2.48%</td></tr><tr><td>🟣 <b>clap</b>:check:unchanged</td><td align="right">0.2337s</td><td align="right">0.2301s</td><td align="right">💚  -1.52%</td></tr><tr><td>🟣 <b>syn</b>:check</td><td align="right">0.4321s</td><td align="right">0.4265s</td><td align="right">💚  -1.31%</td></tr><tr><td>🟣 <b>syn</b>:check:initial</td><td align="right">0.5586s</td><td align="right">0.5401s</td><td align="right">💚  -3.31%</td></tr><tr><td>🟣 <b>syn</b>:check:unchanged</td><td align="right">0.3434s</td><td align="right">0.3429s</td><td align="right"> -0.14%</td></tr><tr><td>🟣 <b>regex</b>:check</td><td align="right">0.2755s</td><td align="right">0.2661s</td><td align="right">💚  -3.40%</td></tr><tr><td>🟣 <b>regex</b>:check:initial</td><td align="right">0.3350s</td><td align="right">0.3347s</td><td align="right"> -0.11%</td></tr><tr><td>🟣 <b>regex</b>:check:unchanged</td><td align="right">0.1851s</td><td align="right">0.1832s</td><td align="right">💚  -1.01%</td></tr><tr><td>Total</td><td align="right">3.5296s</td><td align="right">3.4695s</td><td align="right">💚  -1.70%</td></tr><tr><td>Summary</td><td align="right">1.0000s</td><td align="right">0.9837s</td><td align="right">💚  -1.63%</td></tr></table>
2026-03-31 13:58:38 +02:00
Nicholas Nethercote ccc3c01162 Use Hcx/hcx consistently for StableHashingContext.
The `HashStable` and `ToStableHashKey` traits both have a type parameter
that is sometimes called `CTX` and sometimes called `HCX`. (In practice
this type parameter is always instantiated as `StableHashingContext`.)
Similarly, variables with these types are sometimes called `ctx` and
sometimes called `hcx`. This inconsistency has bugged me for some time.

The `HCX`/`hcx` form is more informative (the `H`/`h` indicates what
type of context it is) and it matches other cases like `tcx`, `dcx`,
`icx`.

Also, RFC 430 says that type parameters should have names that are
"concise UpperCamelCase, usually single uppercase letter: T". In this
case `H` feels insufficient, and `Hcx` feels better.

Therefore, this commit changes the code to use `Hcx`/`hcx` everywhere.
2026-03-31 20:16:57 +11:00
Trevor Gross 472c531d7a Rollup merge of #154551 - chenyukang:yukang-fix-146204-assert-ne-suggestion-span, r=JohnTitor
Skip suggestions pointing to macro def for assert_eq

Fixes rust-lang/rust#146204

It's better to suggest:
```console
help: consider borrowing here
 --> src/main.rs:3:16
  |
 3|      assert_ne!(&buf, b"----");
  |                 +
```
but i don't want to give a too heuristic but not general enough fix, let suppress them.
2026-03-31 05:08:25 -04:00
Trevor Gross 68d2666fc2 Rollup merge of #153790 - zedddie:transmutation-regression, r=jdonszelmann
Fix regression when dealing with generics/values with unresolved inference

Follow up for rust-lang/rust#151703, fixing regression caused in rollup rust-lang/rust#152825

Forgot to handle generics & unresolved inference variables (as in `get_safe_transmute_error_and_reason`) in my previous PR. This followup checks for them before trying to normalize.

I am not completely sure its right approach to have this check cloned but as `select_transmute_obligation_for_reporting` fn just chooses obligation and doesn't actually return an error, this check shouldn't be removed from `get_safe_transmute_error_and_reasnon`. If there is any better solution, let me kmow.

Fixes: rust-lang/rust#153755

r? @jdonszelmann
2026-03-31 05:08:24 -04:00
Trevor Gross 4b2378286c Rollup merge of #153648 - AsakuraMizu:fix-eii-lto-alias, r=jdonszelmann,bjorn3
Fix EII function aliases eliminated by LTO

Add EII function aliases to `llvm.compiler.used` so that LLVM's LTO passes do not eliminate them.

Fixes rust-lang/rust#153645

Tracking issue: https://github.com/rust-lang/rust/issues/125418
2026-03-31 05:08:24 -04:00
Trevor Gross 3479a1d553 Rollup merge of #153574 - TaKO8Ki:self-referential-param-env-normalization-ice, r=lcnr
Avoid ICE when param-env normalization leaves unresolved inference variables

Fixes rust-lang/rust#153354

Because the impl is already ill-formed, those variables are not fully constrained, so zfully_resolve` fails. We previously treated that as an immediate compiler bug with `span_bug!`, which caused an ICE on invalid input.
2026-03-31 05:08:23 -04:00
Eddy (Eduard) Stefes f39fa9e4c0 add rustc option -Zpacked-stack
this enables packed-stack just as -mpacked-stack in clang and gcc.
packed-stack is needed on s390x for kernel development.

Co-authored-by: Ralf Jung <post@ralfj.de>
2026-03-31 09:06:31 +02:00
Zalathar 076dc9b06e Remove the tcx parameter from will_cache_on_disk_for_key_fn 2026-03-31 17:16:10 +11:00
Zalathar a7d2a68378 Simplify the cache_on_disk_if modifier to just cache_on_disk
Queries with both `cache_on_disk` and `separate_provide_extern` will only
disk-cache values for local keys.

Other queries with `cache_on_disk` will disk-cache all values unconditionally.
2026-03-31 17:16:10 +11:00
bors 37cfa179be Auto merge of #154053 - khyperia:generalize-unevaluated, r=BoxyUwU
Properly generalize unevaluated consts



- fixes https://github.com/rust-lang/rust/issues/153831
- fixes a `// FIXME(ogca)` (I am unaware of an issue for this) added in https://github.com/rust-lang/rust/pull/150823

r? @BoxyUwU
2026-03-31 05:35:09 +00:00
Redddy 8cef68aafa Pluralize hidden lifetime labels 2026-03-31 04:27:49 +00:00
Redddy 25dbba03a2 Fix mismatched_lifetime_syntaxes suggestions for hidden path lifetimes 2026-03-31 04:27:44 +00:00
Peter Jaszkowiak 620e92f016 stabilize new Range type and iterator
stabilizes `core::range::Range`
stabilizes `core::range::RangeIter`
stabilizes `std::range` which was missed in prior PRs

Updates docs to reflect stabilization (removed "experimental")

`RangeIter::remainder` is excluded from stabilization
2026-03-30 22:17:27 -06:00
Zalathar 2a1340a7b6 Don't cache query check_liveness on disk
This is the only remaining query with a non-trivial `cache_on_disk_if`
condition, but previous perf experiments indicate that it can be removed
entirely, with little or no measurable effect.
2026-03-31 14:44:01 +11:00
Sasha Pourcelot bb40df6e56 document why it is important to early return on ExpectedStringLiteral 2026-03-30 17:28:51 +00:00
yukang 6518de37d4 Skip suggestions pointing to extern macro def for assert_eq 2026-03-30 22:58:03 +08:00