<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_builtin_macros/src/test_harness.rs, branch perf-tmp</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=perf-tmp</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=perf-tmp'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-09-21T17:12:18+00:00</updated>
<entry>
<title>Add panic=immediate-abort</title>
<updated>2025-09-21T17:12:18+00:00</updated>
<author>
<name>Ben Kimock</name>
<email>kimockb@gmail.com</email>
</author>
<published>2025-09-07T16:31:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=888679013d1f424adef06267f3630069b4cabd40'/>
<id>urn:sha1:888679013d1f424adef06267f3630069b4cabd40</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move more early buffered lints to dyn lint diagnostics (1/N)</title>
<updated>2025-09-14T10:38:11+00:00</updated>
<author>
<name>León Orell Valerian Liehr</name>
<email>me@fmease.dev</email>
</author>
<published>2025-08-26T12:24:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2e816736efaebf1f4666efac1817bcccd78a3e52'/>
<id>urn:sha1:2e816736efaebf1f4666efac1817bcccd78a3e52</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Prevent impossible combinations in `ast::ModKind`.</title>
<updated>2025-08-19T11:57:31+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-08-19T05:06:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bfd5d59f976f6c3b6dbe486724a0bb2054aad94b'/>
<id>urn:sha1:bfd5d59f976f6c3b6dbe486724a0bb2054aad94b</id>
<content type='text'>
`ModKind::Loaded` has an `inline` field and a `had_parse_error` field.
If the `inline` field is `Inline::Yes` then `had_parse_error` must be
`Ok(())`.

This commit moves the `had_parse_error` field into the `Inline::No`
variant. This makes it impossible to create the nonsensical combination
of `inline == Inline::Yes` and `had_parse_error = Err(_)`.
</content>
</entry>
<entry>
<title>remove `P`</title>
<updated>2025-08-09T07:47:01+00:00</updated>
<author>
<name>Deadbeef</name>
<email>ent3rm4n@gmail.com</email>
</author>
<published>2025-08-09T05:24:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ad1113f87ef828b300ebb8fca397efd358580da3'/>
<id>urn:sha1:ad1113f87ef828b300ebb8fca397efd358580da3</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #142706 - fee1-dead-contrib:push-zsznlqyrzsqo, r=oli-obk</title>
<updated>2025-06-22T14:03:44+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2025-06-22T14:03:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c2ec7532eed172e79800d28f087727c4b048badd'/>
<id>urn:sha1:c2ec7532eed172e79800d28f087727c4b048badd</id>
<content type='text'>
completely deduplicate `Visitor` and `MutVisitor`

r? oli-obk

This closes rust-lang/rust#127615.

### Discussion

&gt; * Give every `MutVisitor::visit_*` method a corresponding `flat_map_*` method.

Not every AST node exists in a location where they can be mapped to multiple instances of themselves. Not every AST node exists in a location where they can be removed from existence (e.g. `filter_map_expr`). I don't think this is doable.

&gt; * Give every `MutVisitor::visit_*` method a corresponding `Visitor` method and vice versa

The only three remaining method-level asymmetries after this PR are `visit_stmt` and `visit_nested_use_tree` (only on `Visitor`) and `visit_span` (only on `MutVisitor`).

`visit_stmt` doesn't seem applicable to `MutVisitor` because `walk_flat_map_stmt_kind` will ask `flat_map_item` / `filter_map_expr` to potentially turn a single `Stmt` to multiple based on what a visitor wants. So only using `flat_map_stmt` seems appropriate.

`visit_nested_use_tree` is used for `rustc_resolve` to track stuff. Not useful for `MutVisitor` for now.

`visit_span` is currently not used for `MutVisitor` already, it was just kept in case we want to revive rust-lang/rust#127241. cc `@cjgillot` maybe we could remove for now and re-insert later if we find a use-case? It does involve some extra effort to maintain.

* Remaining FIXMEs

`visit_lifetime` has an extra param for `Visitor` that's not in `MutVisitor`. This is again something only used by `rustc_resolve`. I think we can keep that symmetry for now.
</content>
</entry>
<entry>
<title>Use a symbol for `ExpansionConfig::crate_name`.</title>
<updated>2025-06-20T03:17:39+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-05-29T14:37:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4a1f445142e2446d8139f91cf85d4e93083b33ef'/>
<id>urn:sha1:4a1f445142e2446d8139f91cf85d4e93083b33ef</id>
<content type='text'>
This avoids some symbol interning and `to_string` conversions.
</content>
</entry>
<entry>
<title>remove `walk_item_kind` from `MutVisitor`</title>
<updated>2025-06-19T05:50:15+00:00</updated>
<author>
<name>Deadbeef</name>
<email>ent3rm4n@gmail.com</email>
</author>
<published>2025-06-11T14:20:28+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4eaca5d1def1347e3c31bd549f419258a2bd6004'/>
<id>urn:sha1:4eaca5d1def1347e3c31bd549f419258a2bd6004</id>
<content type='text'>
just using `walk_item` instead would be okay.
</content>
</entry>
<entry>
<title>avoid some usages of `&amp;mut P&lt;T&gt;` in AST visitors</title>
<updated>2025-05-29T04:54:55+00:00</updated>
<author>
<name>Deadbeef</name>
<email>ent3rm4n@gmail.com</email>
</author>
<published>2025-05-27T07:17:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=367a877147024987bfec25af513cb1233894135d'/>
<id>urn:sha1:367a877147024987bfec25af513cb1233894135d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move `ast::Item::ident` into `ast::ItemKind`.</title>
<updated>2025-04-01T03:08:57+00:00</updated>
<author>
<name>Nicholas Nethercote</name>
<email>n.nethercote@gmail.com</email>
</author>
<published>2025-03-20T22:47:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=df247968f267d30fb8b048c21f595f2293d8ff62'/>
<id>urn:sha1:df247968f267d30fb8b048c21f595f2293d8ff62</id>
<content type='text'>
`ast::Item` has an `ident` field.

- It's always non-empty for these item kinds: `ExternCrate`, `Static`,
  `Const`, `Fn`, `Mod`, `TyAlias`, `Enum`, `Struct`, `Union`,
  `Trait`, `TraitAlias`, `MacroDef`, `Delegation`.

- It's always empty for these item kinds: `Use`, `ForeignMod`,
  `GlobalAsm`, `Impl`, `MacCall`, `DelegationMac`.

There is a similar story for `AssocItemKind` and `ForeignItemKind`.

Some sites that handle items check for an empty ident, some don't. This
is a very C-like way of doing things, but this is Rust, we have sum
types, we can do this properly and never forget to check for the
exceptional case and never YOLO possibly empty identifiers (or possibly
dummy spans) around and hope that things will work out.

The commit is large but it's mostly obvious plumbing work. Some notable
things.

- `ast::Item` got 8 bytes bigger. This could be avoided by boxing the
  fields within some of the `ast::ItemKind` variants (specifically:
  `Struct`, `Union`, `Enum`). I might do that in a follow-up; this
  commit is big enough already.

- For the visitors: `FnKind` no longer needs an `ident` field because
  the `Fn` within how has one.

- In the parser, the `ItemInfo` typedef is no longer needed. It was used
  in various places to return an `Ident` alongside an `ItemKind`, but
  now the `Ident` (if present) is within the `ItemKind`.

- In a few places I renamed identifier variables called `name` (or
  `foo_name`) as `ident` (or `foo_ident`), to better match the type, and
  because `name` is normally used for `Symbol`s. It's confusing to see
  something like `foo_name.name`.
</content>
</entry>
<entry>
<title>Implement `#[define_opaque]` attribute for functions.</title>
<updated>2025-03-11T12:05:02+00:00</updated>
<author>
<name>Oli Scherer</name>
<email>git-spam-no-reply9815368754983@oli-obk.de</email>
</author>
<published>2024-07-26T10:04:02+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cb4751d4b87e1c8ebdeb381abe3785486a59968e'/>
<id>urn:sha1:cb4751d4b87e1c8ebdeb381abe3785486a59968e</id>
<content type='text'>
</content>
</entry>
</feed>
