Commit Graph

2865 Commits

Author SHA1 Message Date
Jonathan Brouwer 6f6e6bb485 Rollup merge of #155632 - nnethercote:split-Metadata, r=mejrs
Some metadata cleanups

Details in individual commits.

r? @mejrs
2026-04-22 19:18:32 +02:00
Jonathan Brouwer 5e48418496 Rollup merge of #155587 - oli-obk:feed-visibility-no-hash, r=petrochenkov
Immediately feed visibility on DefId creation

This system was originally introduced in rust-lang/rust#121089

This PR was enabled by refactorings in rust-lang/rust#154945, because after that, the visibility feeding happens directly after the `DefId` creation, so we don't need to go through the intermediate hash table anymore

Should unblock rust-lang/rust#138995
2026-04-22 19:18:29 +02:00
yukang 8d75f0cbfc add on_unmatch_args 2026-04-22 19:28:44 +08:00
Nicholas Nethercote f0ebd66eaa Remove unused tcx params.
They are unused because of the previous commit.
2026-04-22 13:54:57 +10:00
bors f9988fefd3 Auto merge of #155611 - JonathanBrouwer:rollup-hUV99y1, r=JonathanBrouwer
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#155546 (Improve E0308 error message for `impl Trait` return mismatches)
 - rust-lang/rust#152834 (Fix incorrect `let` to `const` suggestion for pattern bindings)
 - rust-lang/rust#155425 (Remove duplicated `Flags` methods.)
 - rust-lang/rust#155547 (Use per-parent disambiguators everywhere)
 - rust-lang/rust#155590 (Remove AttributeLintKind variants - part 5)
2026-04-21 23:34:47 +00:00
Oli Scherer 3070ce9d1b Immediately feed visibility on DefId creation 2026-04-21 22:45:34 +02:00
Oli Scherer af03b49b25 Handle MacCall items directly in the def collector
instead of entangling it with the brg logic
2026-04-21 22:45:03 +02:00
Oli Scherer 209a2a6e33 delegation macros are never handled in the def collector 2026-04-21 22:45:03 +02:00
Oli Scherer 797e68f240 Move variant ctor creation into the brg 2026-04-21 22:45:03 +02:00
Oli Scherer af3e34bf65 Stop creating ctor def ids for unions and move the ctor def id creation into the brg 2026-04-21 22:45:03 +02:00
Jonathan Brouwer aa3335484f Rollup merge of #155547 - aerooneqq:better-disambiguators, r=oli-obk
Use per-parent disambiguators everywhere

This PR addressing the following concerns about per-parent disambiguators (rust-lang/rust#153955):

- DisambiguatorState is removed, PerParentDisambiguatorState is now used everywhere,
- Steals were removed from every per-parent disambiguator in resolver,
- It adds `parent` field in `PerParentDisambiguatorState` in `#[cfg(debug_assertions)]` for asserting that per-parent disambiguator corresponds to the same `LocalDefId` which is passed into `create_def`,
- ~Removes `Disambiguator` trait replacing it with `Disambiguator` enum, with this change we no longer expose `next` method (as trait should be public otherwise the warning will be emitted). It may affect perf in a negative way though.~

~Those changes should not fix perf issues that were [reported](https://github.com/rust-lang/rust/pull/153955#issuecomment-4269223191), perf run that was attempted [before](https://github.com/rust-lang/rust/pull/153955#issuecomment-4214516698) showed much better results. Performance can be probably fixed by removing per-parent disambiguators replacing them with a single one as it was before, then it will be passed to AST -> HIR lowering and modified. For delayed owners we can store ~followup disambiguators as it was in the beginning of the rust-lang/rust#153955~ per-parent disambiguators. This solution should save achievements from rust-lang/rust#153955 (removed `DefPathData` variants).
However, I would prefer to keep per-parent disambiguators as it seems a better architectural solution for me.~

r? @petrochenkov
cc @oli-obk
2026-04-21 20:42:52 +02:00
lapla 90c03d8ff4 Flatten nested tuple destructuring 2026-04-22 00:24:19 +09:00
lapla a687f0b658 Fix incorrect let to const suggestion for pattern bindings 2026-04-22 00:24:08 +09:00
aerooneqq 2e6a082513 Use per-parent disambiguators 2026-04-21 18:23:40 +03:00
Jonathan Brouwer 04dfc2b595 Rollup merge of #152611 - CoCo-Japan-pan:fix-148009, r=jackh726
Modify error message of importing inherent associated items when `#[feature(import_trait_associated_functions)]` is enabled

Fixes rust-lang/rust#148009

This PR improves the diagnostic for importing inherent associated items from a struct or union when
`#[feature(import_trait_associated_functions)]` (rust-lang/rust#134691) is enabled.

Previously, this would result in a "not a module" error. This change provides a more specific error message clarifying that only trait associated items can be imported, while inherent associated items remain ineligible for import.

Enums are currently excluded from this change because their variants are valid import targets and require distinct handling.
2026-04-21 16:53:37 +02:00
bors 4fbae3e309 Auto merge of #154945 - oli-obk:merge-visitors-def-collector-brg, r=petrochenkov
Merge BuildReducedGraphVisitor into DefPathVisitor

These two visitors run right after each other on the same immutable AST. There's also a hash map for transferring the TyCtxtFeed created in the def collector to the BRG when it visits the same items. There are possibly more avenues for sharing logic, but I want to keep this PR simple.

only opening for perf runs for now. I'm still investigating how to ensure that future changes don't introduce subtle bugs by forgetting that def collection and reduced graph building are one pass now

Best reviewed commit-by-commit. I took a lot of care for making the individual changes reviewable, but all the `Merge *` commits aren't able to compile libcore until the last one.
2026-04-20 23:10:06 +00:00
Oli Scherer f2c79f3fc6 Handle attributes entirely in the def collector 2026-04-20 13:56:30 +02:00
Oli Scherer c8862c74b2 Avoid matching on the assoc item kind twice 2026-04-20 13:56:30 +02:00
Oli Scherer e61773669a Inline macro calls in assoc item position logic 2026-04-20 13:56:30 +02:00
Oli Scherer 690df236c2 Deduplicate the expansion field between def collection and brg 2026-04-20 13:56:30 +02:00
Oli Scherer 095f11c9ec Inline the now-trivial build_reduced_graph into its sole caller 2026-04-20 13:56:30 +02:00
Oli Scherer 0a714a26a5 Fix use trees 2026-04-20 13:53:15 +02:00
Jonathan Brouwer 1d9b32a5ac Rollup merge of #155346 - GrigorenkoPV:single-use-lifetimes, r=jdonszelmann
`single_use_lifetimes`: respect `anonymous_lifetime_in_impl_trait`

Tracking issue: rust-lang/rust#44752 (for the `single_use_lifetimes` lint; the `anonymous_lifetime_in_impl_trait` feature seems to have no tracking issue).

Closes rust-lang/rust#129255
Closes rust-lang/rust#135550

@rustbot label A-diagnostics A-lifetimes A-lints D-incorrect L-single_use_lifetimes
2026-04-20 13:52:05 +02:00
Oli Scherer 2892564a85 Merge visit_attribute 2026-04-20 13:34:08 +02:00
Oli Scherer d67a570547 Merge visit_expr, visit_pat and visit_ty 2026-04-20 13:34:08 +02:00
Oli Scherer f69d719e1c Merge visit_field_def 2026-04-20 13:34:08 +02:00
Oli Scherer d2f476e57c Merge visit_variant 2026-04-20 13:34:08 +02:00
Oli Scherer 69aedb5ef2 Merge visit_crate 2026-04-20 13:33:48 +02:00
Oli Scherer 51d1e839d0 Merge visit_where_predicate 2026-04-20 13:33:48 +02:00
Oli Scherer 32ae2e5122 Merge visit_generic_param 2026-04-20 13:33:48 +02:00
Oli Scherer 05a49b6caa Merge some simple visitor functions 2026-04-20 13:33:48 +02:00
Oli Scherer b1ec02fc12 Merge visit_assoc_item 2026-04-20 13:33:48 +02:00
Oli Scherer 3df953207d Merge visit_block 2026-04-20 13:33:48 +02:00
Oli Scherer f98355e1ee Merge visit_stmt 2026-04-20 13:33:48 +02:00
Oli Scherer a2cf11a976 Merge visit_foreign_item 2026-04-20 13:33:48 +02:00
Oli Scherer 90d0b41ef1 Merge visit_item 2026-04-20 13:33:48 +02:00
Oli Scherer 393f3e0110 Merge BuildReducedGraphVisitor initialization into DefPathVisitor 2026-04-20 13:33:24 +02:00
Oli Scherer 8a4f0dfb62 Rename DefCollector::resolver to r to match BuildReducedGraphVisitor::r 2026-04-20 13:32:54 +02:00
Vadim Petrochenkov 394c7172f4 resolve: Make sure visibilities of import declarations make sense
That they are all ordered inside the module and not more private than the module itself
The `import_decl_vis` logic is reused when reporting `ambiguous_import_visibilities` lint
Some asserts are hardened
Some relevant tests are added
2026-04-20 13:41:33 +03:00
Vadim Petrochenkov 38c14f301d resolve: Do not create unnecessary ParentScope when building external modules 2026-04-20 13:37:43 +03:00
Jonathan Brouwer e0d7848e50 Fix rebox of directive 2026-04-18 19:15:18 +02:00
Jonathan Brouwer 5fe1e44dbb Clarify and make consistent the feature gating of on_unknown_attr 2026-04-18 19:13:34 +02:00
Jonathan Brouwer c5f6afc3e8 Remove target arguments & features from parse_limited 2026-04-18 19:13:30 +02:00
bors e9e32aca5a Auto merge of #155432 - JonathanBrouwer:rollup-dJVrrO0, r=JonathanBrouwer
Rollup of 5 pull requests

Successful merges:

 - rust-lang/rust#154781 (Fix attribute order implementation)
 - rust-lang/rust#155242 (resolve: Introduce `(Local,Extern)Module` newtypes for local and external modules respectively)
 - rust-lang/rust#149614 (Use `MaybeDangling` in `std`)
 - rust-lang/rust#153178 (Add `TryFromIntError::kind` method and `IntErrorKind::NotAPowerOfTwo` variant)
 - rust-lang/rust#155049 (Documenting the case of `Weak::upgrade` returning `None` when the value behind the reference is missing)

Failed merges:

 - rust-lang/rust#155308 (Make `OnDuplicate::Error` the default for attributes)
2026-04-17 19:17:17 +00:00
Jonathan Brouwer 89bec2cd37 Rollup merge of #155242 - petrochenkov:modmodmod, r=mu001999
resolve: Introduce `(Local,Extern)Module` newtypes for local and external modules respectively

Right now both `LocalModule` and `ExternModule` refer to the same `ModuleData`, but the module data for local and extern modules can potentially be made quite different, and we can specialize name lookup for both cases as an optimization.

Declaration creation for local and external modules was already specialized as a part of the parallel import resolution work (see `define_local` and `define_extern`, rust-lang/rust#145108 and previous PRs), because they have different properties with regards to ownership and synchronization.
2026-04-17 13:28:56 +02:00
bors 4dbafc340b Auto merge of #153955 - aerooneqq:def-path-hash-collision, r=petrochenkov
delegation: fix def path hash collision, add per parent disambiguators



This PR addresses the following delegation issues:
- It fixes rust-lang/rust#153410 when generating new `DefId`s for generic parameters by ~saving `DisambiguatorState`s from resolve stage and using them at AST -> HIR lowering~ introducing per owner disambiguators and transferring them to AST -> HIR lowering stage
- ~Next it fixes the ICE which is connected to using `DUMMY_SP` in delegation code, which was found during previous fix~
- ~Finally, after those fixes the rust-lang/rust#143498 is also fixed, only bugs with propagating synthetic generic params are left.~

Fixes rust-lang/rust#153410. Part of rust-lang/rust#118212.

r? @petrochenkov
2026-04-17 11:13:11 +00:00
Vadim Petrochenkov 61bc404458 resolve: Introduce (Local,Extern)Module newtypes for local and external modules respectively 2026-04-17 13:09:04 +03:00
aerooneqq 699eb29443 Fix delegation def path hash collision, add per-parent disambiguators 2026-04-17 09:46:54 +03:00
Stuart Cook 1ff95e018f Rollup merge of #141633 - xizheyin:issue-141350, r=nnethercote
Suggest to bind `self.x` to `x` when field `x` may be in format string

Fixes rust-lang/rust#141350

I added the new test in the first commit, and committed the changes in the second one.

r? @fmease
cc @mejrs
2026-04-17 16:17:49 +10:00
Vadim Petrochenkov 19c7df6f3f resolve: Remove inaccessible_ctor_reexport resolver field
Collect the necessary information during error reporting instead of doing it on a good path from the core name resolution infra
2026-04-15 21:49:10 +03:00