rust/compiler/rustc_lint/src
Nicholas Nethercote df247968f2 Move ast::Item::ident into ast::ItemKind.
`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`.
2025-04-01 14:08:57 +11:00
..
early Reword message 2025-02-20 17:55:31 +00:00
nonstandard_style
types Add helper methods checking for "#[non_exhaustive] that's active" 2025-03-07 16:16:36 +01:00
async_closures.rs Move some Map methods onto TyCtxt. 2025-02-17 13:21:02 +11:00
async_fn_in_trait.rs nightly feature tracking: get rid of the per-feature bool fields 2024-10-23 09:14:41 +01:00
builtin.rs Move ast::Item::ident into ast::ItemKind. 2025-04-01 14:08:57 +11:00
context.rs Fix false-positive in expr_or_init and in the invalid_from_utf8 lint 2025-03-11 21:56:53 +01:00
dangling.rs Implement .use keyword as an alias of clone 2025-03-06 17:58:32 -03:00
default_could_be_derived.rs Move hir::Item::ident into hir::ItemKind. 2025-03-18 06:29:50 +11:00
deref_into_dyn_supertrait.rs update version placeholders 2025-02-18 08:50:21 -08:00
drop_forget_useless.rs Move methods from Map to TyCtxt, part 3. 2025-02-21 14:31:09 +11:00
early.rs Track whether an assoc item is in a trait impl or an inherent impl 2025-03-25 10:12:07 +00:00
enum_intrinsics_non_enums.rs Fold visit into ty 2025-03-15 06:34:36 +00:00
errors.rs Add warn(unreachable_pub) to rustc_lint. 2024-08-27 15:24:11 +10:00
expect.rs Move methods from Map to TyCtxt, part 4. 2025-03-12 08:55:37 +11:00
for_loops_over_fallibles.rs Move methods from Map to TyCtxt, part 2. 2025-02-18 10:17:44 +11:00
foreign_modules.rs Stop relying on rustc_type_ir in non-type-system crates 2025-03-15 06:42:48 +00:00
hidden_unicode_codepoints.rs Rustfmt 2025-02-08 22:12:13 +00:00
if_let_rescope.rs Print out destructor 2025-02-26 19:03:29 +00:00
impl_trait_overcaptures.rs Stop relying on rustc_type_ir in non-type-system crates 2025-03-15 06:42:48 +00:00
internal.rs Implement lint against using Interner and InferCtxtLike in random compiler crates 2025-03-26 04:39:38 +00:00
invalid_from_utf8.rs invalid_from_utf8[_unchecked]: also lint inherent methods 2025-02-16 16:34:51 +03:00
late.rs Move methods from Map to TyCtxt, part 4. 2025-03-12 08:55:37 +11:00
let_underscore.rs Rustfmt 2025-02-08 22:12:13 +00:00
levels.rs Rollup merge of #138434 - compiler-errors:lint-level-pat-field, r=jieyouxu 2025-03-14 01:37:34 -04:00
lib.rs Auto merge of #119220 - Urgau:uplift-invalid_null_ptr_usage, r=fee1-dead 2025-03-31 04:17:14 +00:00
lints.rs Auto merge of #119220 - Urgau:uplift-invalid_null_ptr_usage, r=fee1-dead 2025-03-31 04:17:14 +00:00
macro_expr_fragment_specifier_2024_migration.rs Rename RefTokenTreeCursor. 2024-12-18 10:39:07 +11:00
map_unit_fn.rs Rustfmt 2025-02-08 22:12:13 +00:00
multiple_supertrait_upcastable.rs Move hir::Item::ident into hir::ItemKind. 2025-03-18 06:29:50 +11:00
non_ascii_idents.rs Fix binding mode problems 2025-02-22 00:13:19 +00:00
non_fmt_panic.rs Use Option<Symbol> in panic_call. 2025-03-25 16:14:27 +11:00
non_local_def.rs Add environment variable tracking in places where it was convenient 2025-03-26 15:46:40 +01:00
nonstandard_style.rs Move ast::Item::ident into ast::ItemKind. 2025-04-01 14:08:57 +11:00
noop_method_call.rs Rustfmt 2025-02-08 22:12:13 +00:00
opaque_hidden_inferred_bound.rs Squash fold into ty 2025-03-15 06:34:36 +00:00
pass_by_value.rs Rustfmt 2025-02-08 22:12:13 +00:00
passes.rs fix empty after lint on impl/trait items 2025-02-07 16:47:26 +01:00
precedence.rs Temporarily switch ambiguous_negative_literals lint to allow 2024-07-31 19:36:47 +02:00
ptr_nulls.rs Uplift clippy::invalid_null_ptr_usage as invalid_null_arguments 2025-03-30 19:33:15 +02:00
redundant_semicolon.rs Rustfmt 2025-02-08 22:12:13 +00:00
reference_casting.rs Expose peel_casts method as an util method inside rustc_lint 2025-03-30 12:14:02 +02:00
shadowed_into_iter.rs Move methods from Map to TyCtxt, part 3. 2025-02-21 14:31:09 +11:00
static_mut_refs.rs Rustfmt 2025-02-08 22:12:13 +00:00
tests.rs update cfg(bootstrap) 2025-01-08 21:26:39 +01:00
traits.rs Rustfmt 2025-02-08 22:12:13 +00:00
types.rs Auto merge of #138206 - amy-kwan:amy-kwan/reprc-struct-power-align-ignore-packed-align, r=workingjubilee 2025-03-30 14:47:07 +00:00
unit_bindings.rs Rustfmt 2025-02-08 22:12:13 +00:00
unqualified_local_imports.rs Move methods from Map to TyCtxt, part 3. 2025-02-21 14:31:09 +11:00
unused.rs Remove unnecessary check code in unused_delims 2025-02-15 07:35:28 +08:00
utils.rs Uplift clippy::invalid_null_ptr_usage as invalid_null_arguments 2025-03-30 19:33:15 +02:00