3148 Commits

Author SHA1 Message Date
panstromek 283ec3aa54 Make FieldDef smaller 2026-07-23 14:43:52 +02:00
khyperia e895ed8c90 unify the AST repr of type const and const RHS 2026-07-22 09:22:45 +02:00
bors f65b272fc9 Auto merge of #159440 - LorrensP-2158466:inplace-import-res, r=petrochenkov
Resolve: more preperation work for parallelizing the import resolution loop




This is basically rust-lang/rust#158845 but we do not:
- actually use `par_slice` because:
- we do not migrate `CmRefCell` to use `RwLocks` (yet) because of perf reasons.

The resolution loop is now in place instead of recollecting indeterminate imports.


r? @petrochenkov
2026-07-21 10:04:40 +00:00
Jacob Pratt e1d8ba6e3b Rollup merge of #159307 - TorinAsakura:fix/builtin-attribute-value-diagnostics, r=petrochenkov
Improve cross-namespace name diagnostics

Close rust-lang/rust#86290

Cross-namespace name matches now use the ordinary missing-name diagnostic while preserving its error code and suggestions. The diagnostic adds a note identifying the item found in another namespace, while same-namespace wrong-kind diagnostics remain unchanged.

The UI expectations cover cross-namespace combinations across the resolver suite, including preservation of existing suggestions.
2026-07-20 23:38:00 -04:00
Andrew Ghostuhin 30bc6d2f06 fix: improve missing value diagnostics for built-in attributes 2026-07-21 01:03:16 +03:00
Jonathan Brouwer 581f102a5f Rollup merge of #159599 - LorrensP-2158466:fix-ambig-trait-glob-lint, r=petrochenkov
Resolver: Record at least 1 ambiguous trait if main decl is not a trait.

Addresses rust-lang/rust#159476.

When recording traits of a particular module, it is possible that a trait hidden in the ambiguity declaration of a main declaration (struct, enum, ...), thus causing us to never record that trait. This caused us to report an error that methods of those traits are not in scope and that we do not report the `AMBIGUOUSLY_GLOB_IMPORTED_TRAIT` lint, which was the case in rust-lang/rust#159476.

We now record at least 1 trait in the collection of ambiguous declarations, such that we don't report that error and can report the relevant lint.

Also updated the linked issue of the lint in question.

r? @petrochenkov
2026-07-20 18:06:09 +02:00
LorrensP-2158466 73ed27196b When recording traits, if a decl is ambiguous we make sure to record at least 1 trait of the ambiguous decls (is possible) such that we can record the ambiguously_glob_imported_trait lint.
Also updated the issue linked by the lint.

+ added extra test
+ bless original test because of updated link
2026-07-20 12:47:25 +02:00
LorrensP-2158466 2f3022a932 Preperation work for parallelizing the import resolution loop using par_slice.
Currently it is all still single threaded, but almost everything needed to make the loop use multithreaded code is done in this commit.

For performance reasons we do the resolution now in place instead of recollecting the indeterminate imports ([see benchmark pr](https://github.com/rust-lang/rust/pull/159387) and pr of this commit).

Populating external resolution tables now use `Once` to ensure only 1 thread builds the table and all others wait if they need it, this has no impact on single threaded behaviour.

`Cache(Ref)Cells` are not tackled yet because they are not needed here (and require extra work).
2026-07-18 10:57:47 +02:00
bors 656ccbe796 Auto merge of #159266 - nnethercote:rm-AttrItemKind, r=petrochenkov,JonathanBrouwer
Overhaul `CfgTrace`/`CfgAttrTrace` handling



I noticed that `AttrItemKind` was a bit clunky and by the time I was finished I had a PR that:
- removes `AttrItemKind`;
- removes `sym::cfg_trace` and `sym::cfg_attr_trace`;
- overhauls how these attributes are handled;
- changes the terminology used for these attributes;
- fixes some erroneous comments;
- and a few other small improvements.

It's a sizeable change but I think it makes things a lot clearer. Details in individual commits.

r? @petrochenkov
2026-07-17 13:18:23 +00:00
Nicholas Nethercote 17d526f1be Replace "early parsed" terminology
AST attributes use "early parsed"/"parsed" terminology to refer to the
`CfgTrace` and `CfgAttrTrace` attributes. I think this terminology is
meant to echo the terminology used for HIR attributes, i.e.
`hir::Attribute::{Parsed,Unparsed}`, probably because
`hir::Attribute::Parsed` is used for attributes that aren't stored in a
token-based form.

But this naming is misleading. "Early parsed" attributes aren't parsed
at all because they are inserted by the compiler and cannot be written
in source code. There are also two comments that claim that these
attributes are kept in parsed form "so they don't have to be reparsed
every time they're used, for performance", which is simply incorrect.

This commit renames these as "synthetic" attributes, which better
reflects their nature. The commit also fixes the incorrect comments.

Note that `is_parsed_attribute` is unchanged, because it refers to the
HIR attribute meaning. (And the removal of the synthetic attributes from
it in the previous commit is now more obviously correct.)
2026-07-17 08:59:25 +10:00
Nicholas Nethercote 1a8ecb0b5b Remove sym::cfg_trace and sym::cfg_attr_trace
This commit pushes further than the previous one, relying more heavily
on looking directly at `AttrKind::Parsed` to handle various cases.

Note that the removed clippy code was actually dead.
2026-07-17 08:59:25 +10:00
Nicholas Nethercote b357c7c0ff Remove AttrItemKind
`AttrItem` currently contains an `AttrItemKind` which is either `Parsed`
or `Unparsed`. In the `Parsed` case the surrounding `AttrItem` is
basically fake, with a meaningless `unsafety` field, a synthetic
(non-ident) symbol, and an empty `tokens`.

This commit moves `Parsed` up one level to become a new variant of
`AttrKind`. It no longer needs to pretend to be an `AttrKind::Normal`,
and makes a number of things simpler:
- No `unparsed_ref` calls needed.
- Replaces the `attr_into_trace` and `Attribute::replace_args` mess with
  the much simpler `convert_normal_to_parsed`.

The commit converts a numberof non-exhaustive `AttrKind` matches (those
that don't involve matching a single attribute) to exhaustive, for
future-proofing. It uses `unreachable!` on all the `AttrKind::Parsed`
cases that aren't hit by the full test suite.
2026-07-17 08:59:24 +10:00
Jonathan Brouwer 7d1f162f49 Rollup merge of #159226 - oli-obk:extra_lifetime_params_map, r=petrochenkov
Track extra_lifetime_params_map per-owner

Part of https://github.com/rust-lang/rust-project-goals/issues/620

An easy one now that https://github.com/rust-lang/rust/pull/156508 is merged, as there are no more cross-owner dependencies on this table

r? @petrochenkov
2026-07-16 21:01:54 +02:00
Jacob Pratt 09be986317 Rollup merge of #159339 - LorrensP-2158466:extract-use-injections, r=petrochenkov
Resolver: extract `use_injections` out of main `Resolver`

Prep work for rust-lang/rust#158845. Extract the `use_injections` field out of the resolver and into the `LateResolutionVisitor`. It can then be passed into the `report_errors` pass, so no behaviour is changed.

This allows the `Resolver` to be `DynSync`, see https://github.com/rust-lang/rust/pull/158845#discussion_r3579712892.

r? @petrochenkov
2026-07-16 04:02:33 -04:00
Oli Scherer 5ccf44c02c Track extra_lifetime_params_map per-owner 2026-07-16 09:44:03 +02:00
LorrensP-2158466 7c8a29ef9d extract use_injections to be created by LateResolverVisitor and used by report_errors 2026-07-15 16:48:24 +02:00
Jonathan Brouwer 8fdc29c9ea Rollup merge of #159197 - camsteffen:more-modid, r=petrochenkov
Rename ModDefId to ModId and use more

Addresses some FIXMEs.

The `ModDefId` was used pretty sparingly, and honestly I wondered if it should exist at all. After making these changes, I think the type is worth it. Most notably it is now used in `Visibility::Restricted`.

I first renamed `ModDefId` to `ModId` since I think the former is over-specific, and also this is more in line with `BodyId` or `OwnerId`.

I'll wait for initial feedback before fixing rustdoc/clippy.
2026-07-15 16:17:07 +02:00
bors 47101adcea Auto merge of #159316 - jhpratt:rollup-Ap3QBGh, r=jhpratt
Rollup of 15 pull requests

Successful merges:

 - rust-lang/rust#159311 (Add 1.97.1 release notes)
 - rust-lang/rust#156220 (Implement `VecDeque::truncate_to_range`)
 - rust-lang/rust#158608 (Implement `#[diagnostic::opaque]` attribute to hide backtraces of macros.)
 - rust-lang/rust#159168 (Fix static_mut_refs lint check logic)
 - rust-lang/rust#159242 (resolve: Inherit eager invocation parents)
 - rust-lang/rust#159256 (Account for async closures when pointing at lifetime in return type)
 - rust-lang/rust#159310 (cleanup: upstream dropped AMX-TF32)
 - rust-lang/rust#158348 (Add documentation for the `inline` attribute)
 - rust-lang/rust#159181 (add rustc_no_writable to mem::forget and structs it uses)
 - rust-lang/rust#159191 (Mark `PrivateItems` with `std_internals` unstable feature.)
 - rust-lang/rust#159194 (rustdoc: Fix auto trait normalization env)
 - rust-lang/rust#159196 (OnceCell: Improve wording in module docs)
 - rust-lang/rust#159289 (Fix Zulip backport command suggestion)
 - rust-lang/rust#159294 (renovate: don't update PRs in the merge queue)
 - rust-lang/rust#159305 (std: clarify available_parallelism docs for Windows 11 processor groups)
2026-07-15 06:51:39 +00:00
Jacob Pratt 58f1e26a67 Rollup merge of #159242 - Dnreikronos:resolver/eager_invocation_parent, r=petrochenkov
resolve: Inherit eager invocation parents

Fixes rust-lang/rust#159233

`format!` eagerly expands its first arg. In this case that path ran into a glob delegation from `fn_delegation`, and resolver tried to read `invocation_parents[invoc_id]` for an eager invocation that never went through reduced-graph collection. So a bad input got an ICE instead of normal errors.

This makes eager invocations copy `InvocationParent` from the eager expansion root, matching the parent-scope fallback already there. imo this is the right place to fix it: idk of a cleaner split where the scope and parent def do not drift apart. fyi the UI regression is the reported case, btw, and it still emits the expected user-facing errors without the panic.
2026-07-14 23:23:08 -04:00
Jacob Pratt 2d4ae662df Rollup merge of #158608 - mejrs:opaque, r=estebank
Implement `#[diagnostic::opaque]` attribute to hide backtraces of macros.

r? @estebank

There are some more places where we can use this, for example https://github.com/rust-lang/rust/blob/345632878cffcb4c8e90750e943296b43d16c76e/compiler/rustc_trait_selection/src/error_reporting/traits/fulfillment_errors.rs#L623-L639 but those turned out to be a little complicated so are left for followup prs.

Tracking issue: rust-lang/rust#158813
2026-07-14 23:23:07 -04:00
bors 470556c8c1 Auto merge of #158720 - nnethercote:Expr64, r=folkertdev
Shrink `ast::Expr64`



From 72 bytes to 64 bytes, by boxing `ForLoop`, which is the biggest
variant.

There are now 11 `ExprKind` variants that are 31 bytes, so future
improvements here will be very difficult.
2026-07-15 03:22:38 +00:00
Jonathan Brouwer 9f5052b9ab Rollup merge of #158235 - cezarbbb:eii-metadata-opt, r=bjorn3
Store `DefId` instead of `EiiDecl` in `EiiImplResolution::Known`

Fixes the `FIXME(eii)` about removing the extern target from the encoded decl.

`Known(EiiDecl)` serialized the same `EiiDecl` N+1 times per entry (once as the declaration, once per Known impl). Changing to `Known(DefId)` eliminates that redundancy — the `EiiDecl` is recoverable via `tcx.externally_implementable_items()` or a local lookup map, consistent with how Rust metadata uses `DefId` as a reference elsewhere.

I believe there are benefits in both performance and size(full `EiiDecl` to single `DefId`, and O(N) to O(1) lookup).

Also fixes a soundness gap(I think?) in `check_attr.rs` where the `Known` branch skipped `impl_unsafe` checking, and replaces an `.expect()` in `codegen_attrs.rs` with `a let Some` pattern.

tracking issues: rust-lang/rust#125418

r? @jdonszelmann
2026-07-14 16:48:59 +02:00
Dnreikronos 38fa9b58d5 Inherit eager invocation parents 2026-07-14 10:57:16 -03:00
Cameron Steffen 3c0923a48d Use ModId more 2026-07-14 08:23:57 -05:00
Cameron Steffen 1f5e4badf1 Add Into<DefId> to is_descendant_of 2026-07-14 07:31:51 -05:00
cezarbbb 48a980d9a3 Store DefId instead of EiiDecl in EiiImplResolution::Known 2026-07-14 20:17:40 +08:00
Jacob Pratt 57f0adccec Rollup merge of #159250 - GuillaumeGomez:rename-diag, r=JonathanBrouwer
Rename `errors.rs` file to `diagnostics.rs` (13/N)

Follow-up of https://github.com/rust-lang/rust/pull/157485.

r? @JonathanBrouwer
2026-07-14 00:15:25 -04:00
Jacob Pratt 86ad394fb5 Rollup merge of #159039 - calvinrp:fix/effective-vis-glob-ambiguity, r=petrochenkov
resolve: fix effective visibilities for items in ambiguous glob sets

Fixes rust-lang/rust#159038 (1.96.1 → 1.97.0 regression; details there).

When an item is glob-imported twice at different visibilities, effective visibility was computed from whichever declaration arrived first, not the most visible one. An exported item could then get no MIR encoded, and downstream crates fail with ``missing optimized MIR``.

Fix: also walk the most visible declaration's re-export chain (`update_decl_chain`, recursing into `ambiguity_vis_max`). Lint behavior unchanged. Two regression tests added; `tests/ui/{imports,privacy,resolve}` pass with every rust-lang/rust#154149 / rust-lang/rust#156284 test unmodified.

@rustbot label +A-resolve +A-visibility +T-compiler +regression-from-stable-to-stable
2026-07-14 00:15:21 -04:00
Guillaume Gomez 2a74949017 Update rustc_session::errors import 2026-07-13 22:31:51 +02:00
Jonathan Brouwer 490097dc9a Rollup merge of #157706 - jdonszelmann:deny-todo, r=wafflelapkin
Deny `todo!()` in tidy

Implements https://github.com/rust-lang/compiler-team/issues/999

Part of https://github.com/rust-lang/rust/issues/158173
2026-07-13 20:17:57 +02:00
Jana Dönszelmann bdc1397933 bless tests 2026-07-13 11:02:01 +02:00
Jana Dönszelmann 25745ee1f1 fix all tidy annotations 2026-07-13 10:54:53 +02:00
qaijuang 59a09407e0 address suggested nits 2026-07-13 04:38:48 -04:00
qaijuang 6be6d75660 fix relative paths in private import suggestions 2026-07-13 04:38:48 -04:00
Guillaume Gomez 65ed52f2ba Apply MCP 1003 and move diagnostics.rs into its own module and move error_helper.rs into the diagnostics folder in rustc_resolve 2026-07-12 15:47:31 +02:00
Jacob Pratt 1d97ab6c3a Rollup merge of #159125 - CoCo-Japan-pan:mut-restriction-lowering, r=jhpratt,Urgau
`mut` restriction lowering

This PR is part of the ongoing work to implement `mut` restrictions proposed in [RFC 3323](https://rust-lang.github.io/rfcs/3323-restrictions.html), and linked to a [GSoC proposal](https://rust-lang.zulipchat.com/#narrow/channel/421156-gsoc/topic/Project.3A.20Implementing.20impl.20and.20mut.20restrictions/with/592352432).
It implements path resolution for `mut` restrictions and lowers the resolved information to HIR.
Tracking issue: rust-lang/rust#105077

r? @Urgau
cc @jhpratt
2026-07-12 00:03:10 -04:00
Nicholas Nethercote 36487c7595 Shrink ast::Expr
From 72 bytes to 64 bytes, by boxing `ForLoop`, which is the biggest
variant.

There are now 11 `ExprKind` variants that are 31 bytes, so future
improvements here will be very difficult.
2026-07-12 11:32:26 +10:00
Jonathan Brouwer aa8cf33235 Rollup merge of #156968 - Dnreikronos:fix/gca-const-item-diagnostic-156729, r=petrochenkov
diagnostics: suggest generic_const_args for const ops

fixes rust-lang/rust#156729

when const ops hit generic params, like `[u8; size_of::<self>()]`, the diagnostic only points at `generic_const_exprs`. imo that's a stale nudge now that `generic_const_args` and `type const` items are the path we want people trying.

add help for `generic_const_args` and `type const` items in the resolve and hir_ty_lowering paths. also skip the old gce suggestion once `min_generic_const_args` is enabled, and emit both suggestions for the `self` alias path so the "alternatively" wording doesn't hang there by itself. includes the regression test from the issue. lgtm.
2026-07-11 19:05:10 +02:00
bors 3b58636b30 Auto merge of #159019 - LorrensP-2158466:worker-local-arenas, r=petrochenkov
Resolver: Wrap arenas in `WorkerLocal`



In preperation of parallel import resolution rust-lang/rust#158845 this pr wraps the resolver arenas in `WorkerLocal` to ensure we don't need any synchronization to access an arena. This is common in the compiler.

Also, when building the resolution table of an external module, we first create a seperate table and fill that one, after which we replace the empty table with that new table. (Prep Work for rust-lang/rust#158845)
And a manual inline of `define_extern`.

r? @petrochenkov
2026-07-11 08:29:10 +00:00
CoCo-Japan-pan cf3fad137e Resolve paths for mut restrictions 2026-07-11 13:34:33 +09:00
Jacob Pratt c907a05576 Rollup merge of #158767 - khyperia:merge-inlineconst, r=BoxyUwU
merge DefKind::InlineConst into AnonConst

This is a closely related followup to https://github.com/rust-lang/rust/pull/158375 (a condition of merging that PR was doing this as a followup)

This merge conflicts with https://github.com/rust-lang/rust/pull/158617 ; prefer merging that one first please~

This PR is within the general goal of const generics / `generic_const_args` and perhaps specifically https://github.com/rust-lang/project-const-generics/issues/108 but is mostly a code cleanup rather than implementing any particular feature

---

Anon consts (the `1 + 2` in `let x: [u8; 1 + 2];`) are closely related to inline consts (the `const {}` in `let x = const { 1 + 2 };`). They are especially related now that both can be used in the type system (by the above PR) and should be treated identically in that scenario. In general, they should be treated the same, as evidenced by the number of matches touched in this PR that just match on both. This PR merges the two DefKinds into one, mostly arbitrarily and bikesheddily choosing to use the name `AnonConst` for the merged concept (e.g. both `DefKind::InlineConst` and `DefKind::AnonConst` used `ast::AnonConst`, so `ast::AnonConst` should probably be named whatever the merged `DefKind` concept is named).

When you absolute must distinguish between the two, `tcx.anon_const_kind` allows you to do so - however, anon consts/inline consts in the type system intentionally appear identically under `anon_const_kind`. Indeed, the places where we distinguish between the two raised my eyebrows a few times when doing this PR, and being a little more explicit and loud about it is helpful for code clarity, IMO.

r? @BoxyUwU
2026-07-10 21:53:56 -04:00
Dnreikronos 920f3f1de8 Suggest generic_const_args + type const in const operation diagnostics
Point users at `#![feature(generic_const_args)]` and `type const` items
when they hit the "generic parameters may not be used in const operations"
error, not just `generic_const_exprs`.
2026-07-10 16:56:19 -03:00
khyperia 64c7dce072 merge DefKind::InlineConst into AnonConst 2026-07-10 13:43:56 +02:00
LorrensP-2158466 72e9ddc07f Wrap the resolver arenas into WorkerLocal in preperation of parallel import resolution. 2026-07-10 11:14:40 +02:00
Nicholas Nethercote 402500cffe Remove tokens field from some AST nodes
Specifically, from `Block`, `Pat`, `Path`, `Ty`, `Visibility`.

This field is usually `None`. It only gets filled in for paths that
might later be re-tokenized via `TokenStream::from_ast`, e.g. because of
macro or cfg use. All such cases go through a single place:
`parse_nonterminal`.

This commit changes `parse_nonterminal` to store the non-`None` lazy
attr token stream *next* to the node in `ParseNtResult` (using the new
`WithTokens` type) instead of *inside* the parsed node.

Along with some minor changes to the relevant `HasTokens` and `HasAttrs`
impls, this is enough for things to work. These AST nodes all shrink by
8 bytes, as do various other nodes that contain nodes of these types.

A guide to the changes:
- `compiler/rustc_ast/src/tokenstream.rs` has the new `WithTokens` type.
- `compiler/rustc_parse/src/parser/nonterminal.rs`,
  `compiler/rustc_expand/src/mbe/transcribe.rs` and
  `compiler/rustc_parse/src/parser/mod.rs` have minor changes due to the
  changes to `ParseNtResult`.
- `compiler/rustc_ast/src/ast_traits.rs` has the `HasTokens`/`HasAttrs`
  changes.
- Everything else is just mechanical changes for the removal of the
  `tokens` field.
2026-07-10 17:15:43 +10:00
Jacob Pratt 3dc22a32be Rollup merge of #158617 - khyperia:gca-syntax-flip, r=BoxyUwU
allow mGCA const arguments to fall back to anon consts

makes good progress on https://github.com/rust-lang/project-const-generics/issues/108

`min_generic_const_args` (mGCA) is all about "is this const lowered to a const item with a body, or, is it "directly" represented and visible in the type system?"

Here's various answers to the question of "can we represent this const arg directly?" - if we answer "no", then we fall back to an anon const (or error, sometimes, depending on context)

on **stable**, the full list of things can be directly represented is (... it's just the one thing)

- paths to generic const parameters

on `main`, under mGCA, **before** this PR:

- absolutely everything, if something cannot be represented directly, compiler error
- `const { }` gives you an escape hatch to go back to being an anon const

on macro**ful** gca, the directly represented things will be:

- paths to const parameters
- `direct_const_arg!` macro

on macro**less** gca, the directly represented things will be:

- paths to const parameters
- `direct_const_arg!` macro (not *particularly* useful under macro**less** gca)
- struct expressions, arrays, blah blah
- currently, paths to *anything*, even if that produces a compiler error later down the line (potential followup work here...)

this PR implements macro**less** gca, with the intent of a quick follow-up introducing a "macroless gca" feature and transitioning `#[feature(min_generic_const_args)]` to be macro**ful** gca

Also of note is that this PR removes the logic to skip generating "fake" DefIds for directly represented AnonConsts under mGCA, we now always generate a DefId when encountering an AnonConst. This lines up with stable, which has a fake AnonConst DefId for a directly represented plain path generic parameter (i.e. the bullet point under the "stable" entry above).

r? @BoxyUwU
2026-07-09 20:09:10 -04:00
Jacob Pratt 9e7a9bad54 Rollup merge of #157561 - notriddle:do-not-destroy-function-name, r=lolbinarycat
rustdoc: do not include extra stuff in span

This change prevents our lints from returning a span with stuff in it that isn't actually part of the doc comment. When that happens, it returns `None` instead.

Fixes https://github.com/rust-lang/rust-clippy/issues/16169, since the bug was reported against the `clippy::doc_paragraphs_missing_punctuation` lint but is actually a bug in `source_span_for_markdown_range_inner`.
2026-07-09 20:09:09 -04:00
Calvin Prewitt 299a71d751 resolve: fix effective visibilities for items in ambiguous glob sets
Since PR 154149, when one item is glob-imported into a module twice with
different visibilities, the first-arrived declaration stays in the
resolution slot and the most visible declaration of the ambiguous glob
set is only recorded in `ambiguity_vis_max`. `DeclData::vis()` returns
the max, so name resolution, metadata reexports and
`cross_crate_inlinable` export the item at the maximum visibility, but
`set_bindings_effective_visibilities` walked only the slot-resident
declaration's reexport chain. When the restricted route arrives first,
the definition's effective visibility caps at the restricted
visibility while the item is still exported: spurious dead_code, the
item missing from reachable_set, should_encode_mir returning false, and
downstream crates failing with "missing optimized MIR" (a 1.96.1 ->
1.97.0 stable-to-stable regression).

Generalize the one-level `ambiguity_vis_max` update that PR 154149 added
in `update_import` (to keep the most visible import from being reported
as unused) into a walk of that declaration's whole reexport chain:
extract the chain walk into `update_decl_chain` and recurse into
`ambiguity_vis_max` at every hop, so the most visible declaration
drives the effective visibility of everything on its route, including
the final definition. Updates are monotone, so the dual walk is
order-independent. The `ambiguous_import_visibilities` lint and the
PR 156284 diagnostic suppression are untouched.
2026-07-09 16:24:19 -05:00
Oli Scherer c3257a591f Infer all anonymous lifetimes in (assoc) consts as 'static
Hard error on hidden elided lifetimes (`S` instead of `S<'_>`) in assoc consts
2026-07-09 17:36:19 +02:00
khyperia 67986afdaf allow mGCA const arguments to fall back to anon consts 2026-07-08 07:46:21 +02:00