<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_resolve/src/late, branch master</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=master</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-09-28T21:33:34+00:00</updated>
<entry>
<title>Detect unconstructable re-exported tuple structs</title>
<updated>2025-09-28T21:33:34+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2024-11-25T21:52:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8f7d61b9efe1f44701f87fe4647eb1f39d20f434'/>
<id>urn:sha1:8f7d61b9efe1f44701f87fe4647eb1f39d20f434</id>
<content type='text'>
When a tuple-struct is re-exported that has inaccessible fields at the `use` scope, the type's constructor cannot be accessed through that re-export. We now account for this case and extend the resulting resolution error. We also check if the constructor would be accessible directly, not through the re-export, and if so, we suggest using the full path instead.

```
error[E0423]: cannot initialize a tuple struct which contains private fields
  --&gt; $DIR/ctor-not-accessible-due-to-inaccessible-field-in-reexport.rs:12:33
   |
LL |             let crate::Foo(x) = crate::Foo(42);
   |                                 ^^^^^^^^^^
   |
note: the type is accessed through this re-export, but the type's constructor is not visible in this import's scope due to private fields
  --&gt; $DIR/ctor-not-accessible-due-to-inaccessible-field-in-reexport.rs:3:9
   |
LL | pub use my_mod::Foo;
   |         ^^^^^^^^^^^
help: the type can be constructed directly, because its fields are available from the current scope
   |
LL |             let crate::Foo(x) = crate::my_mod::Foo(42);
   |                                 ~~~~~~~~~~~~~~~~~~
```

Fix #133343.
</content>
</entry>
<entry>
<title>remove couple of clones</title>
<updated>2025-09-05T13:38:01+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2025-09-05T13:38:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=81042523c6e1ae50682f46ae3da4ede22bfd596e'/>
<id>urn:sha1:81042523c6e1ae50682f46ae3da4ede22bfd596e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #145597 - petrochenkov:nolateset, r=b-naber</title>
<updated>2025-08-23T02:00:51+00:00</updated>
<author>
<name>Jacob Pratt</name>
<email>jacob@jhpratt.dev</email>
</author>
<published>2025-08-23T02:00:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=8066e76c7df47fbcb7eca3e348b920a854919f87'/>
<id>urn:sha1:8066e76c7df47fbcb7eca3e348b920a854919f87</id>
<content type='text'>
resolve: Remove `ScopeSet::Late`

It's better to decouple the late/early stage from scope set, because in https://github.com/rust-lang/rust/pull/144131#discussion_r2283200511 we'll need the stage for `ScopeSet::Module` as well.

See individual commits for the refactoring details.
r? ``@b-naber``
</content>
</entry>
<entry>
<title>resolve: Remove `ScopeSet::Late`</title>
<updated>2025-08-22T13:52:16+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2025-08-19T08:59:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e26b1754cbd90363b7d5307a8cac31a347af9894'/>
<id>urn:sha1:e26b1754cbd90363b7d5307a8cac31a347af9894</id>
<content type='text'>
The difference between `Late` and `All` only matters when `finalize` is enabled.
So add a `stage` field to `Finalize` and use it instead.

</content>
</entry>
<entry>
<title>resolve: Remove derive fallback lint id from `ScopeSet::Late`</title>
<updated>2025-08-22T13:52:16+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2025-08-19T08:37:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a47c3729b49f3e5ded7e3c05981dbb27fab96b45'/>
<id>urn:sha1:a47c3729b49f3e5ded7e3c05981dbb27fab96b45</id>
<content type='text'>
</content>
</entry>
<entry>
<title>resolve: Remove `Module` from `ScopeSet::Late`</title>
<updated>2025-08-22T13:52:16+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2025-08-19T08:07:38+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b82b947a5c6ed8a8bdb155b99298e9e79c93238c'/>
<id>urn:sha1:b82b947a5c6ed8a8bdb155b99298e9e79c93238c</id>
<content type='text'>
It can be passed in a more usual way through `ParentScope`

</content>
</entry>
<entry>
<title>print raw lifetime idents with `r#`</title>
<updated>2025-08-22T04:58:37+00:00</updated>
<author>
<name>Deadbeef</name>
<email>ent3rm4n@gmail.com</email>
</author>
<published>2025-08-04T09:41:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1e5b5ba1e732d557f00a3cd79150990370c7db0a'/>
<id>urn:sha1:1e5b5ba1e732d557f00a3cd79150990370c7db0a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>resolve: Introduce `RibKind::Block`</title>
<updated>2025-08-14T15:50:57+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2025-08-07T16:43:15+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=68ebbae2e81b5e88681ec7a25d2aa19c0504a6b4'/>
<id>urn:sha1:68ebbae2e81b5e88681ec7a25d2aa19c0504a6b4</id>
<content type='text'>
to avoid confusing module items, blocks with items, and blocks without items.
</content>
</entry>
<entry>
<title>resolve: Improve code reuse in typo candidate collection</title>
<updated>2025-08-14T06:53:49+00:00</updated>
<author>
<name>Vadim Petrochenkov</name>
<email>vadim.petrochenkov@gmail.com</email>
</author>
<published>2025-08-13T19:01:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=9b797b9f7ac12a8ad6a2a5097b69e0216958709e'/>
<id>urn:sha1:9b797b9f7ac12a8ad6a2a5097b69e0216958709e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Switch to a bitflags `MacroKinds` to support macros with more than one kind</title>
<updated>2025-08-12T16:24:45+00:00</updated>
<author>
<name>Josh Triplett</name>
<email>josh@joshtriplett.org</email>
</author>
<published>2025-08-08T02:21:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0b855bcdc9b0fafa5a4a4330e10655105daf27cb'/>
<id>urn:sha1:0b855bcdc9b0fafa5a4a4330e10655105daf27cb</id>
<content type='text'>
Review everything that uses `MacroKind`, and switch anything that could
refer to more than one kind to use `MacroKinds`.

Add a new `SyntaxExtensionKind::MacroRules` for `macro_rules!` macros,
using the concrete `MacroRulesMacroExpander` type, and have it track
which kinds it can handle. Eliminate the separate optional `attr_ext`,
now that a `SyntaxExtension` can handle multiple macro kinds.

This also avoids the need to downcast when calling methods on
`MacroRulesMacroExpander`, such as `get_unused_rule`.

Integrate macro kind checking into name resolution's
`sub_namespace_match`, so that we only find a macro if it's the right
type, and eliminate the special-case hack for attributes.
</content>
</entry>
</feed>
