about summary refs log tree commit diff
path: root/crates
diff options
context:
space:
mode:
Diffstat (limited to 'crates')
-rw-r--r--crates/hir-def/src/find_path.rs6
-rw-r--r--crates/hir-def/src/item_scope.rs8
-rw-r--r--crates/hir-def/src/item_tree.rs12
-rw-r--r--crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs4
-rw-r--r--crates/hir-def/src/macro_expansion_tests/mbe/regression.rs8
-rw-r--r--crates/hir-def/src/nameres.rs4
-rw-r--r--crates/hir-def/src/nameres/path_resolution.rs4
-rw-r--r--crates/hir-def/src/visibility.rs21
-rw-r--r--crates/hir-expand/src/mod_path.rs10
-rw-r--r--crates/hir-ty/src/mir/lower.rs10
-rw-r--r--crates/hir-ty/src/tests/traits.rs4
-rw-r--r--crates/ide-assists/src/handlers/generate_default_from_new.rs2
-rw-r--r--crates/ide-assists/src/handlers/generate_delegate_trait.rs2
-rw-r--r--crates/ide-assists/src/handlers/into_to_qualified_from.rs4
-rw-r--r--crates/ide-db/src/generated/lints.rs479
-rwxr-xr-xcrates/ide/src/folding_ranges.rs2
-rw-r--r--crates/mbe/src/syntax_bridge.rs12
-rw-r--r--crates/proc-macro-api/src/version.rs4
18 files changed, 400 insertions, 196 deletions
diff --git a/crates/hir-def/src/find_path.rs b/crates/hir-def/src/find_path.rs
index 515a2cc8243..1a44c319de5 100644
--- a/crates/hir-def/src/find_path.rs
+++ b/crates/hir-def/src/find_path.rs
@@ -13,7 +13,7 @@ use crate::{
     item_scope::ItemInNs,
     nameres::DefMap,
     path::{ModPath, PathKind},
-    visibility::{Visibility, VisibilityExplicity},
+    visibility::{Visibility, VisibilityExplicitness},
     CrateRootModuleId, ModuleDefId, ModuleId,
 };
 
@@ -544,11 +544,11 @@ fn find_local_import_locations(
         if let Some((name, vis, declared)) = data.scope.name_of(item) {
             if vis.is_visible_from(db, from) {
                 let is_pub_or_explicit = match vis {
-                    Visibility::Module(_, VisibilityExplicity::Explicit) => {
+                    Visibility::Module(_, VisibilityExplicitness::Explicit) => {
                         cov_mark::hit!(explicit_private_imports);
                         true
                     }
-                    Visibility::Module(_, VisibilityExplicity::Implicit) => {
+                    Visibility::Module(_, VisibilityExplicitness::Implicit) => {
                         cov_mark::hit!(discount_private_imports);
                         false
                     }
diff --git a/crates/hir-def/src/item_scope.rs b/crates/hir-def/src/item_scope.rs
index 6237ea7353f..0b0c838bedb 100644
--- a/crates/hir-def/src/item_scope.rs
+++ b/crates/hir-def/src/item_scope.rs
@@ -17,7 +17,7 @@ use syntax::ast;
 use crate::{
     db::DefDatabase,
     per_ns::PerNs,
-    visibility::{Visibility, VisibilityExplicity},
+    visibility::{Visibility, VisibilityExplicitness},
     AdtId, BuiltinType, ConstId, ExternCrateId, HasModule, ImplId, LocalModuleId, Lookup, MacroId,
     ModuleDefId, ModuleId, TraitId, UseId,
 };
@@ -653,14 +653,16 @@ impl ItemScope {
             .map(|(_, vis, _)| vis)
             .chain(self.values.values_mut().map(|(_, vis, _)| vis))
             .chain(self.unnamed_trait_imports.values_mut().map(|(vis, _)| vis))
-            .for_each(|vis| *vis = Visibility::Module(this_module, VisibilityExplicity::Implicit));
+            .for_each(|vis| {
+                *vis = Visibility::Module(this_module, VisibilityExplicitness::Implicit)
+            });
 
         for (mac, vis, import) in self.macros.values_mut() {
             if matches!(mac, MacroId::ProcMacroId(_) if import.is_none()) {
                 continue;
             }
 
-            *vis = Visibility::Module(this_module, VisibilityExplicity::Implicit);
+            *vis = Visibility::Module(this_module, VisibilityExplicitness::Implicit);
         }
     }
 
diff --git a/crates/hir-def/src/item_tree.rs b/crates/hir-def/src/item_tree.rs
index 299ad33c349..336e0de7fd6 100644
--- a/crates/hir-def/src/item_tree.rs
+++ b/crates/hir-def/src/item_tree.rs
@@ -69,7 +69,7 @@ use crate::{
     generics::{GenericParams, LifetimeParamData, TypeOrConstParamData},
     path::{path, AssociatedTypeBinding, GenericArgs, ImportAlias, ModPath, Path, PathKind},
     type_ref::{Mutability, TraitRef, TypeBound, TypeRef},
-    visibility::{RawVisibility, VisibilityExplicity},
+    visibility::{RawVisibility, VisibilityExplicitness},
     BlockId, Lookup,
 };
 
@@ -253,10 +253,10 @@ impl ItemVisibilities {
             RawVisibility::Public => RawVisibilityId::PUB,
             RawVisibility::Module(path, explicitiy) if path.segments().is_empty() => {
                 match (&path.kind, explicitiy) {
-                    (PathKind::Super(0), VisibilityExplicity::Explicit) => {
+                    (PathKind::Super(0), VisibilityExplicitness::Explicit) => {
                         RawVisibilityId::PRIV_EXPLICIT
                     }
-                    (PathKind::Super(0), VisibilityExplicity::Implicit) => {
+                    (PathKind::Super(0), VisibilityExplicitness::Implicit) => {
                         RawVisibilityId::PRIV_IMPLICIT
                     }
                     (PathKind::Crate, _) => RawVisibilityId::PUB_CRATE,
@@ -270,11 +270,11 @@ impl ItemVisibilities {
 
 static VIS_PUB: RawVisibility = RawVisibility::Public;
 static VIS_PRIV_IMPLICIT: RawVisibility =
-    RawVisibility::Module(ModPath::from_kind(PathKind::Super(0)), VisibilityExplicity::Implicit);
+    RawVisibility::Module(ModPath::from_kind(PathKind::Super(0)), VisibilityExplicitness::Implicit);
 static VIS_PRIV_EXPLICIT: RawVisibility =
-    RawVisibility::Module(ModPath::from_kind(PathKind::Super(0)), VisibilityExplicity::Explicit);
+    RawVisibility::Module(ModPath::from_kind(PathKind::Super(0)), VisibilityExplicitness::Explicit);
 static VIS_PUB_CRATE: RawVisibility =
-    RawVisibility::Module(ModPath::from_kind(PathKind::Crate), VisibilityExplicity::Explicit);
+    RawVisibility::Module(ModPath::from_kind(PathKind::Crate), VisibilityExplicitness::Explicit);
 
 #[derive(Default, Debug, Eq, PartialEq)]
 struct ItemTreeData {
diff --git a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
index 4690ca5d363..9596100b60e 100644
--- a/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
+++ b/crates/hir-def/src/macro_expansion_tests/builtin_fn_macro.rs
@@ -460,13 +460,13 @@ fn test_concat_expand() {
 #[rustc_builtin_macro]
 macro_rules! concat {}
 
-fn main() { concat!("foo", "r", 0, r#"bar"#, "\n", false, '"', '\0'); }
+fn main() { concat!("fo", "o", 0, r#"bar"#, "\n", false, '"', '\0'); }
 "##,
         expect![[r##"
 #[rustc_builtin_macro]
 macro_rules! concat {}
 
-fn main() { "foor0bar\nfalse\"\u{0}"; }
+fn main() { "foo0bar\nfalse\"\u{0}"; }
 "##]],
     );
 }
diff --git a/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs b/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs
index 226aa01827b..6717ee1aa5f 100644
--- a/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs
+++ b/crates/hir-def/src/macro_expansion_tests/mbe/regression.rs
@@ -544,11 +544,11 @@ fn test_proptest_arbitrary() {
     check(
         r#"
 macro_rules! arbitrary {
-    ([$($bounds : tt)*] $typ: ty, $strat: ty, $params: ty;
+    ([$($bounds : tt)*] $typ: ty, $strategy: ty, $params: ty;
         $args: ident => $logic: expr) => {
         impl<$($bounds)*> $crate::arbitrary::Arbitrary for $typ {
             type Parameters = $params;
-            type Strategy = $strat;
+            type Strategy = $strategy;
             fn arbitrary_with($args: Self::Parameters) -> Self::Strategy {
                 $logic
             }
@@ -569,11 +569,11 @@ arbitrary!(
 "#,
         expect![[r#"
 macro_rules! arbitrary {
-    ([$($bounds : tt)*] $typ: ty, $strat: ty, $params: ty;
+    ([$($bounds : tt)*] $typ: ty, $strategy: ty, $params: ty;
         $args: ident => $logic: expr) => {
         impl<$($bounds)*> $crate::arbitrary::Arbitrary for $typ {
             type Parameters = $params;
-            type Strategy = $strat;
+            type Strategy = $strategy;
             fn arbitrary_with($args: Self::Parameters) -> Self::Strategy {
                 $logic
             }
diff --git a/crates/hir-def/src/nameres.rs b/crates/hir-def/src/nameres.rs
index 1fa975789e7..2a9390e7978 100644
--- a/crates/hir-def/src/nameres.rs
+++ b/crates/hir-def/src/nameres.rs
@@ -79,7 +79,7 @@ use crate::{
     nameres::{diagnostics::DefDiagnostic, path_resolution::ResolveMode},
     path::ModPath,
     per_ns::PerNs,
-    visibility::{Visibility, VisibilityExplicity},
+    visibility::{Visibility, VisibilityExplicitness},
     AstId, BlockId, BlockLoc, CrateRootModuleId, EnumId, EnumVariantId, ExternCrateId, FunctionId,
     LocalModuleId, Lookup, MacroExpander, MacroId, ModuleId, ProcMacroId, UseId,
 };
@@ -336,7 +336,7 @@ impl DefMap {
         // this visibility for anything outside IDE, so that's probably OK.
         let visibility = Visibility::Module(
             ModuleId { krate, local_id, block: None },
-            VisibilityExplicity::Implicit,
+            VisibilityExplicitness::Implicit,
         );
         let module_data = ModuleData::new(
             ModuleOrigin::BlockExpr { block: block.ast_id, id: block_id },
diff --git a/crates/hir-def/src/nameres/path_resolution.rs b/crates/hir-def/src/nameres/path_resolution.rs
index 2c7e2227913..8943d22d876 100644
--- a/crates/hir-def/src/nameres/path_resolution.rs
+++ b/crates/hir-def/src/nameres/path_resolution.rs
@@ -87,7 +87,7 @@ impl DefMap {
         within_impl: bool,
     ) -> Option<Visibility> {
         let mut vis = match visibility {
-            RawVisibility::Module(path, explicity) => {
+            RawVisibility::Module(path, explicitness) => {
                 let (result, remaining) =
                     self.resolve_path(db, original_module, path, BuiltinShadowMode::Module, None);
                 if remaining.is_some() {
@@ -95,7 +95,7 @@ impl DefMap {
                 }
                 let types = result.take_types()?;
                 match types {
-                    ModuleDefId::ModuleId(m) => Visibility::Module(m, *explicity),
+                    ModuleDefId::ModuleId(m) => Visibility::Module(m, *explicitness),
                     // error: visibility needs to refer to module
                     _ => {
                         return None;
diff --git a/crates/hir-def/src/visibility.rs b/crates/hir-def/src/visibility.rs
index 3294ce29a4a..b9676179a5f 100644
--- a/crates/hir-def/src/visibility.rs
+++ b/crates/hir-def/src/visibility.rs
@@ -20,14 +20,17 @@ use crate::{
 pub enum RawVisibility {
     /// `pub(in module)`, `pub(crate)` or `pub(super)`. Also private, which is
     /// equivalent to `pub(self)`.
-    Module(ModPath, VisibilityExplicity),
+    Module(ModPath, VisibilityExplicitness),
     /// `pub`.
     Public,
 }
 
 impl RawVisibility {
     pub(crate) const fn private() -> RawVisibility {
-        RawVisibility::Module(ModPath::from_kind(PathKind::Super(0)), VisibilityExplicity::Implicit)
+        RawVisibility::Module(
+            ModPath::from_kind(PathKind::Super(0)),
+            VisibilityExplicitness::Implicit,
+        )
     }
 
     pub(crate) fn from_ast(
@@ -53,19 +56,19 @@ impl RawVisibility {
                     None => return RawVisibility::private(),
                     Some(path) => path,
                 };
-                RawVisibility::Module(path, VisibilityExplicity::Explicit)
+                RawVisibility::Module(path, VisibilityExplicitness::Explicit)
             }
             ast::VisibilityKind::PubCrate => {
                 let path = ModPath::from_kind(PathKind::Crate);
-                RawVisibility::Module(path, VisibilityExplicity::Explicit)
+                RawVisibility::Module(path, VisibilityExplicitness::Explicit)
             }
             ast::VisibilityKind::PubSuper => {
                 let path = ModPath::from_kind(PathKind::Super(1));
-                RawVisibility::Module(path, VisibilityExplicity::Explicit)
+                RawVisibility::Module(path, VisibilityExplicitness::Explicit)
             }
             ast::VisibilityKind::PubSelf => {
                 let path = ModPath::from_kind(PathKind::Super(0));
-                RawVisibility::Module(path, VisibilityExplicity::Explicit)
+                RawVisibility::Module(path, VisibilityExplicitness::Explicit)
             }
             ast::VisibilityKind::Pub => RawVisibility::Public,
         }
@@ -85,7 +88,7 @@ impl RawVisibility {
 #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
 pub enum Visibility {
     /// Visibility is restricted to a certain module.
-    Module(ModuleId, VisibilityExplicity),
+    Module(ModuleId, VisibilityExplicitness),
     /// Visibility is unrestricted.
     Public,
 }
@@ -206,12 +209,12 @@ impl Visibility {
 
 /// Whether the item was imported through `pub(crate) use` or just `use`.
 #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
-pub enum VisibilityExplicity {
+pub enum VisibilityExplicitness {
     Explicit,
     Implicit,
 }
 
-impl VisibilityExplicity {
+impl VisibilityExplicitness {
     pub fn is_explicit(&self) -> bool {
         matches!(self, Self::Explicit)
     }
diff --git a/crates/hir-expand/src/mod_path.rs b/crates/hir-expand/src/mod_path.rs
index dd41bcaee20..b64c3549e42 100644
--- a/crates/hir-expand/src/mod_path.rs
+++ b/crates/hir-expand/src/mod_path.rs
@@ -284,13 +284,13 @@ fn convert_path(
 }
 
 fn convert_path_tt(db: &dyn ExpandDatabase, tt: &[tt::TokenTree]) -> Option<ModPath> {
-    let mut leafs = tt.iter().filter_map(|tt| match tt {
+    let mut leaves = tt.iter().filter_map(|tt| match tt {
         tt::TokenTree::Leaf(leaf) => Some(leaf),
         tt::TokenTree::Subtree(_) => None,
     });
     let mut segments = smallvec::smallvec![];
-    let kind = match leafs.next()? {
-        tt::Leaf::Punct(tt::Punct { char: ':', .. }) => match leafs.next()? {
+    let kind = match leaves.next()? {
+        tt::Leaf::Punct(tt::Punct { char: ':', .. }) => match leaves.next()? {
             tt::Leaf::Punct(tt::Punct { char: ':', .. }) => PathKind::Abs,
             _ => return None,
         },
@@ -300,7 +300,7 @@ fn convert_path_tt(db: &dyn ExpandDatabase, tt: &[tt::TokenTree]) -> Option<ModP
         tt::Leaf::Ident(tt::Ident { text, .. }) if text == "self" => PathKind::Super(0),
         tt::Leaf::Ident(tt::Ident { text, .. }) if text == "super" => {
             let mut deg = 1;
-            while let Some(tt::Leaf::Ident(tt::Ident { text, .. })) = leafs.next() {
+            while let Some(tt::Leaf::Ident(tt::Ident { text, .. })) = leaves.next() {
                 if text != "super" {
                     segments.push(Name::new_text_dont_use(text.clone()));
                     break;
@@ -316,7 +316,7 @@ fn convert_path_tt(db: &dyn ExpandDatabase, tt: &[tt::TokenTree]) -> Option<ModP
         }
         _ => return None,
     };
-    segments.extend(leafs.filter_map(|leaf| match leaf {
+    segments.extend(leaves.filter_map(|leaf| match leaf {
         ::tt::Leaf::Ident(ident) => Some(Name::new_text_dont_use(ident.text.clone())),
         _ => None,
     }));
diff --git a/crates/hir-ty/src/mir/lower.rs b/crates/hir-ty/src/mir/lower.rs
index 74bac8cbf12..28d26c6c8ae 100644
--- a/crates/hir-ty/src/mir/lower.rs
+++ b/crates/hir-ty/src/mir/lower.rs
@@ -97,7 +97,7 @@ pub enum MirLowerError {
     MutatingRvalue,
     UnresolvedLabel,
     UnresolvedUpvar(Place),
-    UnaccessableLocal,
+    InaccessibleLocal,
 
     // monomorphization errors:
     GenericArgNotProvided(TypeOrConstParamId, Substitution),
@@ -116,7 +116,7 @@ impl DropScopeToken {
         ctx.pop_drop_scope_internal(current, span)
     }
 
-    /// It is useful when we want a drop scope is syntaxically closed, but we don't want to execute any drop
+    /// It is useful when we want a drop scope is syntactically closed, but we don't want to execute any drop
     /// code. Either when the control flow is diverging (so drop code doesn't reached) or when drop is handled
     /// for us (for example a block that ended with a return statement. Return will drop everything, so the block shouldn't
     /// do anything)
@@ -186,7 +186,7 @@ impl MirLowerError {
             | MirLowerError::UnsizedTemporary(_)
             | MirLowerError::IncompleteExpr
             | MirLowerError::IncompletePattern
-            | MirLowerError::UnaccessableLocal
+            | MirLowerError::InaccessibleLocal
             | MirLowerError::TraitFunctionDefinition(_, _)
             | MirLowerError::UnresolvedName(_)
             | MirLowerError::RecordLiteralWithoutPath
@@ -1843,8 +1843,8 @@ impl<'ctx> MirLowerCtx<'ctx> {
             None => {
                 // FIXME: It should never happens, but currently it will happen in `const_dependent_on_local` test, which
                 // is a hir lowering problem IMO.
-                // never!("Using unaccessable local for binding is always a bug");
-                Err(MirLowerError::UnaccessableLocal)
+                // never!("Using inaccessible local for binding is always a bug");
+                Err(MirLowerError::InaccessibleLocal)
             }
         }
     }
diff --git a/crates/hir-ty/src/tests/traits.rs b/crates/hir-ty/src/tests/traits.rs
index e4756ee9e29..db14addaf18 100644
--- a/crates/hir-ty/src/tests/traits.rs
+++ b/crates/hir-ty/src/tests/traits.rs
@@ -3424,7 +3424,7 @@ fn bin_op_with_rhs_is_self_for_assoc_bound() {
         fn repro<T>(t: T) -> bool
 where
     T: Request,
-    T::Output: Convertable,
+    T::Output: Convertible,
 {
     let a = execute(&t).convert();
     let b = execute(&t).convert();
@@ -3439,7 +3439,7 @@ where
 {
     <T as Request>::output()
 }
-trait Convertable {
+trait Convertible {
     type TraitSelf: PartialEq<Self::TraitSelf>;
     type AssocAsDefaultSelf: PartialEq;
     fn convert(self) -> Self::AssocAsDefaultSelf;
diff --git a/crates/ide-assists/src/handlers/generate_default_from_new.rs b/crates/ide-assists/src/handlers/generate_default_from_new.rs
index 7e4f140a28f..dc27af5cbed 100644
--- a/crates/ide-assists/src/handlers/generate_default_from_new.rs
+++ b/crates/ide-assists/src/handlers/generate_default_from_new.rs
@@ -418,7 +418,7 @@ where
     }
 
     #[test]
-    fn new_function_with_generics_and_wheres() {
+    fn new_function_with_generics_and_where() {
         check_assist(
             generate_default_from_new,
             r#"
diff --git a/crates/ide-assists/src/handlers/generate_delegate_trait.rs b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
index 3964b14f470..898bd01291a 100644
--- a/crates/ide-assists/src/handlers/generate_delegate_trait.rs
+++ b/crates/ide-assists/src/handlers/generate_delegate_trait.rs
@@ -295,7 +295,7 @@ fn generate_impl(
             // those in strukt.
             //
             // These generics parameters will also be used in `field_ty` and
-            // `where_clauses`, so we should substitude arguments in them as well.
+            // `where_clauses`, so we should substitute arguments in them as well.
             let strukt_params = resolve_name_conflicts(strukt_params, &old_impl_params);
             let (field_ty, ty_where_clause) = match &strukt_params {
                 Some(strukt_params) => {
diff --git a/crates/ide-assists/src/handlers/into_to_qualified_from.rs b/crates/ide-assists/src/handlers/into_to_qualified_from.rs
index 965e4aa786e..f7da88b2c18 100644
--- a/crates/ide-assists/src/handlers/into_to_qualified_from.rs
+++ b/crates/ide-assists/src/handlers/into_to_qualified_from.rs
@@ -120,7 +120,7 @@ fn main() -> () {
     }
 
     #[test]
-    fn fromed_in_child_mod_imported() {
+    fn from_in_child_mod_imported() {
         check_assist(
             into_to_qualified_from,
             r#"
@@ -168,7 +168,7 @@ fn main() -> () {
     }
 
     #[test]
-    fn fromed_in_child_mod_not_imported() {
+    fn from_in_child_mod_not_imported() {
         check_assist(
             into_to_qualified_from,
             r#"
diff --git a/crates/ide-db/src/generated/lints.rs b/crates/ide-db/src/generated/lints.rs
index be8419686f4..677c8fd54c0 100644
--- a/crates/ide-db/src/generated/lints.rs
+++ b/crates/ide-db/src/generated/lints.rs
@@ -22,10 +22,6 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         description: r##"detects certain glob imports that require reporting an ambiguity error"##,
     },
     Lint { label: "ambiguous_glob_reexports", description: r##"ambiguous glob re-exports"## },
-    Lint {
-        label: "ambiguous_wide_pointer_comparisons",
-        description: r##"detects ambiguous wide pointer comparisons"##,
-    },
     Lint { label: "anonymous_parameters", description: r##"detects anonymous parameters"## },
     Lint { label: "arithmetic_overflow", description: r##"arithmetic operation overflows"## },
     Lint {
@@ -110,7 +106,7 @@ pub const DEFAULT_LINTS: &[Lint] = &[
     },
     Lint {
         label: "deref_into_dyn_supertrait",
-        description: r##"`Deref` implementation usage with a supertrait trait object for output are shadow by implicit coercion"##,
+        description: r##"`Deref` implementation usage with a supertrait trait object for output might be shadowed in the future"##,
     },
     Lint {
         label: "deref_nullptr",
@@ -180,7 +176,7 @@ pub const DEFAULT_LINTS: &[Lint] = &[
     },
     Lint {
         label: "future_incompatible",
-        description: r##"lint group for: ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer"##,
+        description: r##"lint group for: deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety"##,
     },
     Lint {
         label: "fuzzy_provenance_casts",
@@ -199,6 +195,10 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         description: r##"floating-point literals cannot be used in patterns"##,
     },
     Lint {
+        label: "implied_bounds_entailment",
+        description: r##"impl method assumes more implied bounds than its corresponding trait method"##,
+    },
+    Lint {
         label: "improper_ctypes",
         description: r##"proper use of libc types in foreign modules"##,
     },
@@ -580,10 +580,6 @@ pub const DEFAULT_LINTS: &[Lint] = &[
     },
     Lint { label: "uninhabited_static", description: r##"uninhabited static"## },
     Lint {
-        label: "unit_bindings",
-        description: r##"binding is useless because it has the unit `()` type"##,
-    },
-    Lint {
         label: "unknown_crate_types",
         description: r##"unknown crate type found in `#[crate_type]` directive"##,
     },
@@ -740,19 +736,16 @@ pub const DEFAULT_LINTS: &[Lint] = &[
         label: "while_true",
         description: r##"suggest using `loop { }` instead of `while true { }`"##,
     },
-    Lint {
-        label: "writes_through_immutable_pointer",
-        description: r##"shared references are immutable, and pointers derived from them must not be written to"##,
-    },
 ];
 
 pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "future_incompatible",
-            description: r##"lint group for: ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety, writes-through-immutable-pointer"##,
+            description: r##"lint group for: deref-into-dyn-supertrait, ambiguous-associated-items, ambiguous-glob-imports, byte-slice-in-packed-struct-with-derive, cenum-impl-drop-cast, coherence-leak-check, coinductive-overlap-in-coherence, conflicting-repr-hints, const-evaluatable-unchecked, const-patterns-without-partial-eq, deprecated-cfg-attr-crate-type-name, elided-lifetimes-in-associated-constant, forbidden-lint-groups, ill-formed-attribute-input, illegal-floating-point-literal-pattern, implied-bounds-entailment, indirect-structural-match, invalid-doc-attributes, invalid-type-param-default, late-bound-lifetime-arguments, legacy-derive-helpers, macro-expanded-macro-exports-accessed-by-absolute-paths, missing-fragment-specifier, nontrivial-structural-match, order-dependent-trait-objects, patterns-in-fns-without-body, pointer-structural-match, proc-macro-back-compat, proc-macro-derive-resolution-fallback, pub-use-of-private-extern-crate, repr-transparent-external-private-fields, semicolon-in-expressions-from-macros, soft-unstable, suspicious-auto-trait-impls, uninhabited-static, unstable-name-collisions, unstable-syntax-pre-expansion, unsupported-calling-conventions, where-clauses-object-safety"##,
         },
         children: &[
+            "deref_into_dyn_supertrait",
             "ambiguous_associated_items",
             "ambiguous_glob_imports",
             "byte_slice_in_packed_struct_with_derive",
@@ -767,6 +760,7 @@ pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
             "forbidden_lint_groups",
             "ill_formed_attribute_input",
             "illegal_floating_point_literal_pattern",
+            "implied_bounds_entailment",
             "indirect_structural_match",
             "invalid_doc_attributes",
             "invalid_type_param_default",
@@ -790,7 +784,6 @@ pub const DEFAULT_LINT_GROUPS: &[LintGroup] = &[
             "unstable_syntax_pre_expansion",
             "unsupported_calling_conventions",
             "where_clauses_object_safety",
-            "writes_through_immutable_pointer",
         ],
     },
     LintGroup {
@@ -1396,17 +1389,6 @@ The tracking issue for this feature is: [#91583]
 "##,
     },
     Lint {
-        label: "array_methods",
-        description: r##"# `array_methods`
-
-The tracking issue for this feature is: [#76118]
-
-[#76118]: https://github.com/rust-lang/rust/issues/76118
-
-------------------------
-"##,
-    },
-    Lint {
         label: "array_try_from_fn",
         description: r##"# `array_try_from_fn`
 
@@ -1575,7 +1557,7 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | M68k         | `reg_data`                      | None           | `i8`, `i16`, `i32`                      |
 | CSKY         | `reg`                           | None           | `i8`, `i16`, `i32`                      |
 | CSKY         | `freg`                          | None           | `f32`,                                  |
-| s390x        | `reg`                           | None           | `i8`, `i16`, `i32`, `i64`               |
+| s390x        | `reg`, `reg_addr`               | None           | `i8`, `i16`, `i32`, `i64`               |
 | s390x        | `freg`                          | None           | `f32`, `f64`                            |
 
 ## Register aliases
@@ -1649,9 +1631,10 @@ This feature tracks `asm!` and `global_asm!` support for the following architect
 | NVPTX        | `reg64`        | None     | `rd0`          | None          |
 | Hexagon      | `reg`          | None     | `r0`           | None          |
 | PowerPC      | `reg`          | None     | `0`            | None          |
-| PowerPC      | `reg_nonzero`  | None     | `3`            | `b`           |
+| PowerPC      | `reg_nonzero`  | None     | `3`            | None          |
 | PowerPC      | `freg`         | None     | `0`            | None          |
 | s390x        | `reg`          | None     | `%r0`          | None          |
+| s390x        | `reg_addr`     | None     | `%r1`          | None          |
 | s390x        | `freg`         | None     | `%f0`          | None          |
 | CSKY         | `reg`          | None     | `r0`           | None          |
 | CSKY         | `freg`         | None     | `f0`           | None          |
@@ -1749,6 +1732,15 @@ The tracking issue for this feature is: [#110011]
 "##,
     },
     Lint {
+        label: "async_fn_traits",
+        description: r##"# `async_fn_traits`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
+------------------------
+"##,
+    },
+    Lint {
         label: "async_for_loop",
         description: r##"# `async_for_loop`
 
@@ -2000,17 +1992,6 @@ The tracking issue for this feature is: [#80996]
 "##,
     },
     Lint {
-        label: "bound_map",
-        description: r##"# `bound_map`
-
-The tracking issue for this feature is: [#86026]
-
-[#86026]: https://github.com/rust-lang/rust/issues/86026
-
-------------------------
-"##,
-    },
-    Lint {
         label: "box_into_boxed_slice",
         description: r##"# `box_into_boxed_slice`
 
@@ -2389,6 +2370,17 @@ fn b() {
 "##,
     },
     Lint {
+        label: "cfg_sanitizer_cfi",
+        description: r##"# `cfg_sanitizer_cfi`
+
+The tracking issue for this feature is: [#89653]
+
+[#89653]: https://github.com/rust-lang/rust/issues/89653
+
+------------------------
+"##,
+    },
+    Lint {
         label: "cfg_target_abi",
         description: r##"# `cfg_target_abi`
 
@@ -2822,17 +2814,6 @@ The tracking issue for this feature is: [#91583]
 "##,
     },
     Lint {
-        label: "const_assume",
-        description: r##"# `const_assume`
-
-The tracking issue for this feature is: [#76972]
-
-[#76972]: https://github.com/rust-lang/rust/issues/76972
-
-------------------------
-"##,
-    },
-    Lint {
         label: "const_async_blocks",
         description: r##"# `const_async_blocks`
 
@@ -3107,6 +3088,17 @@ The tracking issue for this feature is: [#79597]
 "##,
     },
     Lint {
+        label: "const_hint_assert_unchecked",
+        description: r##"# `const_hint_assert_unchecked`
+
+The tracking issue for this feature is: [#119131]
+
+[#119131]: https://github.com/rust-lang/rust/issues/119131
+
+------------------------
+"##,
+    },
+    Lint {
         label: "const_index_range_slice_index",
         description: r##"# `const_index_range_slice_index`
 
@@ -3511,6 +3503,17 @@ The tracking issue for this feature is: [#83570]
 "##,
     },
     Lint {
+        label: "const_slice_first_last_chunk",
+        description: r##"# `const_slice_first_last_chunk`
+
+The tracking issue for this feature is: [#111774]
+
+[#111774]: https://github.com/rust-lang/rust/issues/111774
+
+------------------------
+"##,
+    },
+    Lint {
         label: "const_slice_from_mut_ptr_range",
         description: r##"# `const_slice_from_mut_ptr_range`
 
@@ -3586,6 +3589,17 @@ The tracking issue for this feature is: [#101804]
 "##,
     },
     Lint {
+        label: "const_str_from_raw_parts_mut",
+        description: r##"# `const_str_from_raw_parts_mut`
+
+The tracking issue for this feature is: [#119206]
+
+[#119206]: https://github.com/rust-lang/rust/issues/119206
+
+------------------------
+"##,
+    },
+    Lint {
         label: "const_str_from_utf8",
         description: r##"# `const_str_from_utf8`
 
@@ -3608,6 +3622,17 @@ The tracking issue for this feature is: [#91005]
 "##,
     },
     Lint {
+        label: "const_strict_overflow_ops",
+        description: r##"# `const_strict_overflow_ops`
+
+The tracking issue for this feature is: [#118260]
+
+[#118260]: https://github.com/rust-lang/rust/issues/118260
+
+------------------------
+"##,
+    },
+    Lint {
         label: "const_swap",
         description: r##"# `const_swap`
 
@@ -3747,15 +3772,6 @@ The tracking issue for this feature is: [#117693]
 "##,
     },
     Lint {
-        label: "core_panic",
-        description: r##"# `core_panic`
-
-This feature is internal to the Rust compiler and is not intended for general use.
-
-------------------------
-"##,
-    },
-    Lint {
         label: "core_private_bignum",
         description: r##"# `core_private_bignum`
 
@@ -5309,6 +5325,17 @@ The tracking issue for this feature is: [#113521]
 "##,
     },
     Lint {
+        label: "generic_nonzero",
+        description: r##"# `generic_nonzero`
+
+The tracking issue for this feature is: [#120257]
+
+[#120257]: https://github.com/rust-lang/rust/issues/120257
+
+------------------------
+"##,
+    },
+    Lint {
         label: "get_many_mut",
         description: r##"# `get_many_mut`
 
@@ -5429,6 +5456,17 @@ The tracking issue for this feature is: [#44839]
 "##,
     },
     Lint {
+        label: "hint_assert_unchecked",
+        description: r##"# `hint_assert_unchecked`
+
+The tracking issue for this feature is: [#119131]
+
+[#119131]: https://github.com/rust-lang/rust/issues/119131
+
+------------------------
+"##,
+    },
+    Lint {
         label: "hint_must_use",
         description: r##"# `hint_must_use`
 
@@ -5751,6 +5789,15 @@ add the methods `is_sorted`, `is_sorted_by` and `is_sorted_by_key` to
 "##,
     },
     Lint {
+        label: "is_val_statically_known",
+        description: r##"# `is_val_statically_known`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
+------------------------
+"##,
+    },
+    Lint {
         label: "isqrt",
         description: r##"# `isqrt`
 
@@ -6410,6 +6457,17 @@ The tracking issue for this feature is: [#98262]
 "##,
     },
     Lint {
+        label: "min_exhaustive_patterns",
+        description: r##"# `min_exhaustive_patterns`
+
+The tracking issue for this feature is: [#119612]
+
+[#119612]: https://github.com/rust-lang/rust/issues/119612
+
+------------------------
+"##,
+    },
+    Lint {
         label: "min_specialization",
         description: r##"# `min_specialization`
 
@@ -6507,23 +6565,12 @@ The tracking issue for this feature is: [#81872]
 "##,
     },
     Lint {
-        label: "mutex_unpoison",
-        description: r##"# `mutex_unpoison`
-
-The tracking issue for this feature is: [#96469]
-
-[#96469]: https://github.com/rust-lang/rust/issues/96469
-
-------------------------
-"##,
-    },
-    Lint {
         label: "naked_functions",
         description: r##"# `naked_functions`
 
-The tracking issue for this feature is: [#32408]
+The tracking issue for this feature is: [#90957]
 
-[#32408]: https://github.com/rust-lang/rust/issues/32408
+[#90957]: https://github.com/rust-lang/rust/issues/90957
 
 ------------------------
 "##,
@@ -6753,6 +6800,37 @@ The tracking issue for this feature is: [#117691]
 "##,
     },
     Lint {
+        label: "non_zero_count_ones",
+        description: r##"# `non_zero_count_ones`
+
+The tracking issue for this feature is: [#120287]
+
+[#120287]: https://github.com/rust-lang/rust/issues/120287
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "nonzero_from_mut",
+        description: r##"# `nonzero_from_mut`
+
+The tracking issue for this feature is: [#106290]
+
+[#106290]: https://github.com/rust-lang/rust/issues/106290
+
+------------------------
+"##,
+    },
+    Lint {
+        label: "nonzero_internals",
+        description: r##"# `nonzero_internals`
+
+This feature has no tracking issue, and is therefore likely internal to the compiler, not being intended for general use.
+
+------------------------
+"##,
+    },
+    Lint {
         label: "nonzero_ops",
         description: r##"# `nonzero_ops`
 
@@ -6806,23 +6884,23 @@ The tracking issue for this feature is: [#43561]
 "##,
     },
     Lint {
-        label: "offset_of",
-        description: r##"# `offset_of`
+        label: "offset_of_enum",
+        description: r##"# `offset_of_enum`
 
-The tracking issue for this feature is: [#106655]
+The tracking issue for this feature is: [#120141]
 
-[#106655]: https://github.com/rust-lang/rust/issues/106655
+[#120141]: https://github.com/rust-lang/rust/issues/120141
 
 ------------------------
 "##,
     },
     Lint {
-        label: "offset_of_enum",
-        description: r##"# `offset_of_enum`
+        label: "offset_of_nested",
+        description: r##"# `offset_of_nested`
 
-The tracking issue for this feature is: [#106655]
+The tracking issue for this feature is: [#120140]
 
-[#106655]: https://github.com/rust-lang/rust/issues/106655
+[#120140]: https://github.com/rust-lang/rust/issues/120140
 
 ------------------------
 "##,
@@ -7157,6 +7235,17 @@ The tracking issue for this feature is: [#115268]
 "##,
     },
     Lint {
+        label: "proc_macro_c_str_literals",
+        description: r##"# `proc_macro_c_str_literals`
+
+The tracking issue for this feature is: [#119750]
+
+[#119750]: https://github.com/rust-lang/rust/issues/119750
+
+------------------------
+"##,
+    },
+    Lint {
         label: "proc_macro_def_site",
         description: r##"# `proc_macro_def_site`
 
@@ -7376,17 +7465,6 @@ The tracking issue for this feature is: [#107792]
 "##,
     },
     Lint {
-        label: "raw_os_nonzero",
-        description: r##"# `raw_os_nonzero`
-
-The tracking issue for this feature is: [#82363]
-
-[#82363]: https://github.com/rust-lang/rust/issues/82363
-
-------------------------
-"##,
-    },
-    Lint {
         label: "raw_ref_op",
         description: r##"# `raw_ref_op`
 
@@ -7546,17 +7624,6 @@ The tracking issue for this feature is: [#93743]
 "##,
     },
     Lint {
-        label: "round_ties_even",
-        description: r##"# `round_ties_even`
-
-The tracking issue for this feature is: [#96710]
-
-[#96710]: https://github.com/rust-lang/rust/issues/96710
-
-------------------------
-"##,
-    },
-    Lint {
         label: "rt",
         description: r##"# `rt`
 
@@ -7806,17 +7873,6 @@ The tracking issue for this feature is: [#27747]
 "##,
     },
     Lint {
-        label: "slice_first_last_chunk",
-        description: r##"# `slice_first_last_chunk`
-
-The tracking issue for this feature is: [#111774]
-
-[#111774]: https://github.com/rust-lang/rust/issues/111774
-
-------------------------
-"##,
-    },
-    Lint {
         label: "slice_flatten",
         description: r##"# `slice_flatten`
 
@@ -7839,17 +7895,6 @@ The tracking issue for this feature is: [#89792]
 "##,
     },
     Lint {
-        label: "slice_group_by",
-        description: r##"# `slice_group_by`
-
-The tracking issue for this feature is: [#80552]
-
-[#80552]: https://github.com/rust-lang/rust/issues/80552
-
-------------------------
-"##,
-    },
-    Lint {
         label: "slice_index_methods",
         description: r##"# `slice_index_methods`
 
@@ -8049,6 +8094,17 @@ The tracking issue for this feature is: [#96137]
 "##,
     },
     Lint {
+        label: "split_at_checked",
+        description: r##"# `split_at_checked`
+
+The tracking issue for this feature is: [#119128]
+
+[#119128]: https://github.com/rust-lang/rust/issues/119128
+
+------------------------
+"##,
+    },
+    Lint {
         label: "sse4a_target_feature",
         description: r##"# `sse4a_target_feature`
 
@@ -8185,6 +8241,17 @@ The tracking issue for this feature is: [#15701]
 "##,
     },
     Lint {
+        label: "str_from_raw_parts",
+        description: r##"# `str_from_raw_parts`
+
+The tracking issue for this feature is: [#119206]
+
+[#119206]: https://github.com/rust-lang/rust/issues/119206
+
+------------------------
+"##,
+    },
+    Lint {
         label: "str_from_utf16_endian",
         description: r##"# `str_from_utf16_endian`
 
@@ -8205,6 +8272,17 @@ This feature is internal to the Rust compiler and is not intended for general us
 "##,
     },
     Lint {
+        label: "str_lines_remainder",
+        description: r##"# `str_lines_remainder`
+
+The tracking issue for this feature is: [#77998]
+
+[#77998]: https://github.com/rust-lang/rust/issues/77998
+
+------------------------
+"##,
+    },
+    Lint {
         label: "str_split_inclusive_remainder",
         description: r##"# `str_split_inclusive_remainder`
 
@@ -8238,6 +8316,17 @@ The tracking issue for this feature is: [#77998]
 "##,
     },
     Lint {
+        label: "strict_overflow_ops",
+        description: r##"# `strict_overflow_ops`
+
+The tracking issue for this feature is: [#118260]
+
+[#118260]: https://github.com/rust-lang/rust/issues/118260
+
+------------------------
+"##,
+    },
+    Lint {
         label: "strict_provenance",
         description: r##"# `strict_provenance`
 
@@ -8750,6 +8839,37 @@ pub fn main() {
 "##,
     },
     Lint {
+        label: "trait_upcasting",
+        description: r##"# `trait_upcasting`
+
+The tracking issue for this feature is: [#65991]
+
+[#65991]: https://github.com/rust-lang/rust/issues/65991
+
+------------------------
+
+The `trait_upcasting` feature adds support for trait upcasting coercion. This allows a
+trait object of type `dyn Bar` to be cast to a trait object of type `dyn Foo`
+so long as `Bar: Foo`.
+
+```rust,edition2018
+#![feature(trait_upcasting)]
+#![allow(incomplete_features)]
+
+trait Foo {}
+
+trait Bar: Foo {}
+
+impl Foo for i32 {}
+
+impl<T: Foo + ?Sized> Bar for T {}
+
+let bar: &dyn Bar = &123;
+let foo: &dyn Foo = bar;
+```
+"##,
+    },
+    Lint {
         label: "transmutability",
         description: r##"# `transmutability`
 
@@ -10483,6 +10603,11 @@ differing by an underscore."##,
 from other `Duration` methods."##,
     },
     Lint {
+        label: "clippy::eager_transmute",
+        description: r##"Checks for integer validity checks, followed by a transmute that is (incorrectly) evaluated
+eagerly (e.g. using `bool::then_some`)."##,
+    },
+    Lint {
         label: "clippy::else_if_without_else",
         description: r##"Checks for usage of if expressions with an `else if` branch,
 but without a final `else` branch."##,
@@ -10500,6 +10625,10 @@ nightly-only experimental API. Therefore, this lint is only triggered
 if the `never_type` is enabled."##,
     },
     Lint {
+        label: "clippy::empty_enum_variants_with_brackets",
+        description: r##"Finds enum variants without fields that are declared with empty brackets."##,
+    },
+    Lint {
         label: "clippy::empty_line_after_doc_comments",
         description: r##"Checks for empty lines after documentation comments."##,
     },
@@ -10765,7 +10894,7 @@ multithreaded executors are likely to be used for running these Futures."##,
     Lint {
         label: "clippy::get_first",
         description: r##"Checks for usage of `x.get(0)` instead of
-`x.first()`."##,
+`x.first()` or `x.front()`."##,
     },
     Lint {
         label: "clippy::get_last_with_len",
@@ -10867,6 +10996,11 @@ can be expressed using built-in methods to improve accuracy
 at the cost of performance."##,
     },
     Lint {
+        label: "clippy::incompatible_msrv",
+        description: r##"This lint checks that no function newer than the defined MSRV (minimum
+supported rust version) is used in the crate."##,
+    },
+    Lint {
         label: "clippy::inconsistent_digit_grouping",
         description: r##"Warns if an integral or floating-point constant is
 grouped inconsistently with underscores."##,
@@ -11018,6 +11152,16 @@ create a `Vec`."##,
         description: r##"Checks for the use of `.iter().count()`."##,
     },
     Lint {
+        label: "clippy::iter_filter_is_ok",
+        description: r##"Checks for usage of `.filter(Result::is_ok)` that may be replaced with a `.flatten()` call.
+This lint will require additional changes to the follow-up calls as it appects the type."##,
+    },
+    Lint {
+        label: "clippy::iter_filter_is_some",
+        description: r##"Checks for usage of `.filter(Option::is_some)` that may be replaced with a `.flatten()` call.
+This lint will require additional changes to the follow-up calls as it appects the type."##,
+    },
+    Lint {
         label: "clippy::iter_kv_map",
         description: r##"Checks for iterating a map (`HashMap` or `BTreeMap`) and
 ignoring either the keys or values."##,
@@ -11187,6 +11331,14 @@ when `lines` has type `std::io::Lines`."##,
 `Vec` or a `VecDeque` (formerly called `RingBuf`)."##,
     },
     Lint {
+        label: "clippy::lint_groups_priority",
+        description: r##"Checks for lint groups with the same priority as lints in the `Cargo.toml`
+[`[lints]` table](https://doc.rust-lang.org/cargo/reference/manifest.html#the-lints-section).
+
+This lint will be removed once [cargo#12918](https://github.com/rust-lang/cargo/issues/12918)
+is resolved."##,
+    },
+    Lint {
         label: "clippy::little_endian_bytes",
         description: r##"Checks for the usage of the `to_le_bytes` method and/or the function `from_le_bytes`."##,
     },
@@ -11269,6 +11421,7 @@ ascii range"##,
         description: r##"Checks for manual `is_infinite` reimplementations
 (i.e., `x == <float>::INFINITY || x == <float>::NEG_INFINITY`)."##,
     },
+    Lint { label: "clippy::manual_is_variant_and", description: r##""## },
     Lint {
         label: "clippy::manual_let_else",
         description: r##"Warn of cases where `let...else` could be used"##,
@@ -11545,10 +11698,10 @@ is greater than the largest index used to index into the slice."##,
     Lint {
         label: "clippy::missing_enforced_import_renames",
         description: r##"Checks for imports that do not rename the item as specified
-in the `enforce-import-renames` config option.
+in the `enforced-import-renames` config option.
 
 Note: Even though this lint is warn-by-default, it will only trigger if
-import renames are defined in the clippy.toml file."##,
+import renames are defined in the `clippy.toml` file."##,
     },
     Lint {
         label: "clippy::missing_errors_doc",
@@ -11937,6 +12090,10 @@ taken to satisfy a bound
 and suggests to dereference the other argument instead"##,
     },
     Lint {
+        label: "clippy::option_as_ref_cloned",
+        description: r##"Checks for usage of `.as_ref().cloned()` and `.as_mut().cloned()` on `Option`s"##,
+    },
+    Lint {
         label: "clippy::option_as_ref_deref",
         description: r##"Checks for usage of `_.as_ref().map(Deref::deref)` or its aliases (such as String::as_str)."##,
     },
@@ -11947,7 +12104,7 @@ suggests usage of the `env!` macro."##,
     },
     Lint {
         label: "clippy::option_filter_map",
-        description: r##"Checks for iterators of `Option`s using ``.filter(Option::is_some).map(Option::unwrap)` that may
+        description: r##"Checks for iterators of `Option`s using `.filter(Option::is_some).map(Option::unwrap)` that may
 be replaced with a `.flatten()` call."##,
     },
     Lint {
@@ -12133,6 +12290,11 @@ namely `*const T` to `*const U` and `*mut T` to `*mut U`."##,
         label: "clippy::pub_enum_variant_names",
         description: r##"Nothing. This lint has been deprecated."##,
     },
+    Lint {
+        label: "clippy::pub_underscore_fields",
+        description: r##"Checks whether any field of the struct is prefixed with an `_` (underscore) and also marked
+`pub` (public)"##,
+    },
     Lint { label: "clippy::pub_use", description: r##"Restricts the usage of `pub use ...`"## },
     Lint {
         label: "clippy::pub_with_shorthand",
@@ -12228,8 +12390,8 @@ value that is going to be dropped without further use."##,
     Lint {
         label: "clippy::redundant_closure",
         description: r##"Checks for closures which just call another function where
-the function can be called directly. `unsafe` functions or calls where types
-get adjusted are ignored."##,
+the function can be called directly. `unsafe` functions, calls where types
+get adjusted or where the callee is marked `#[track_caller]` are ignored."##,
     },
     Lint {
         label: "clippy::redundant_closure_call",
@@ -12337,7 +12499,7 @@ they are equivalent to `1`. (Related discussion in [rust-clippy#7306](https://gi
     },
     Lint {
         label: "clippy::result_filter_map",
-        description: r##"Checks for iterators of `Result`s using ``.filter(Result::is_ok).map(Result::unwrap)` that may
+        description: r##"Checks for iterators of `Result`s using `.filter(Result::is_ok).map(Result::unwrap)` that may
 be replaced with a `.flatten()` call."##,
     },
     Lint {
@@ -12432,7 +12594,7 @@ see the `unseparated_literal_suffix` lint."##,
     },
     Lint {
         label: "clippy::serde_api_misuse",
-        description: r##"Checks for mis-uses of the serde API."##,
+        description: r##"Checks for misuses of the serde API."##,
     },
     Lint {
         label: "clippy::shadow_reuse",
@@ -12570,6 +12732,12 @@ use an unstable sort than a stable sort."##,
         description: r##"Finds items imported through `std` when available through `core`."##,
     },
     Lint {
+        label: "clippy::str_split_at_newline",
+        description: r##"Checks for usages of `str.trim().split(\
+)` and `str.trim().split(\\
+)`."##,
+    },
+    Lint {
         label: "clippy::str_to_string",
         description: r##"This lint checks for `.to_string()` method calls on values of type `&str`."##,
     },
@@ -12665,6 +12833,11 @@ is followed immediately by a newline or the `else` seems to be missing."##,
 subtracting elements in an AddAssign impl."##,
     },
     Lint {
+        label: "clippy::suspicious_open_options",
+        description: r##"Checks for the suspicious use of `OpenOptions::create()`
+without an explicit `OpenOptions::truncate()`."##,
+    },
+    Lint {
         label: "clippy::suspicious_operation_groupings",
         description: r##"Checks for unlikely usages of binary operators that are almost
 certainly typos and/or copy/paste errors, given the other usages
@@ -12714,6 +12887,10 @@ either `ignore`, `no_run` or `compile_fail`."##,
 (marked with `#[cfg(test)]`)."##,
     },
     Lint {
+        label: "clippy::thread_local_initializer_can_be_made_const",
+        description: r##"Suggests to use `const` in `thread_local!` macro if possible."##,
+    },
+    Lint {
         label: "clippy::to_digit_is_some",
         description: r##"Checks for `.to_digit(..).is_some()` on `char`s."##,
     },
@@ -12723,6 +12900,10 @@ either `ignore`, `no_run` or `compile_fail`."##,
 applied to a type that implements [`Display`](https://doc.rust-lang.org/std/fmt/trait.Display.html)
 in a macro that does formatting."##,
     },
+    Lint {
+        label: "clippy::to_string_trait_impl",
+        description: r##"Checks for direct implementations of `ToString`."##,
+    },
     Lint { label: "clippy::todo", description: r##"Checks for usage of `todo!`."## },
     Lint {
         label: "clippy::too_many_arguments",
@@ -12836,7 +13017,7 @@ declarations above a certain complexity threshold."##,
     },
     Lint {
         label: "clippy::unchecked_duration_subtraction",
-        description: r##"Lints subtraction between an [`Instant`] and a [`Duration`]."##,
+        description: r##"Lints subtraction between an `Instant` and a `Duration`."##,
     },
     Lint {
         label: "clippy::unconditional_recursion",
@@ -12991,6 +13172,10 @@ sub-expression."##,
         description: r##"Detects cases of owned empty strings being passed as an argument to a function expecting `&str`"##,
     },
     Lint {
+        label: "clippy::unnecessary_result_map_or_else",
+        description: r##"Checks for usage of `.map_or_else()` map closure for `Result` type."##,
+    },
+    Lint {
         label: "clippy::unnecessary_safety_comment",
         description: r##"Checks for `// SAFETY: ` comments on safe code."##,
     },
@@ -13499,7 +13684,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::correctness",
-            description: r##"lint group for: clippy::absurd_extreme_comparisons, clippy::almost_swapped, clippy::approx_constant, clippy::async_yields_async, clippy::bad_bit_mask, clippy::cast_slice_different_sizes, clippy::deprecated_semver, clippy::derive_ord_xor_partial_ord, clippy::derived_hash_with_manual_eq, clippy::enum_clike_unportable_variant, clippy::eq_op, clippy::erasing_op, clippy::fn_address_comparisons, clippy::if_let_mutex, clippy::ifs_same_cond, clippy::impl_hash_borrow_with_str_and_bytes, clippy::impossible_comparisons, clippy::ineffective_bit_mask, clippy::infinite_iter, clippy::inherent_to_string_shadow_display, clippy::inline_fn_without_body, clippy::invalid_null_ptr_usage, clippy::invalid_regex, clippy::invisible_characters, clippy::iter_next_loop, clippy::iter_skip_zero, clippy::iterator_step_by_zero, clippy::let_underscore_lock, clippy::match_str_case_mismatch, clippy::mem_replace_with_uninit, clippy::min_max, clippy::mismatched_target_os, clippy::mistyped_literal_suffixes, clippy::modulo_one, clippy::mut_from_ref, clippy::never_loop, clippy::non_octal_unix_permissions, clippy::nonsensical_open_options, clippy::not_unsafe_ptr_arg_deref, clippy::option_env_unwrap, clippy::out_of_bounds_indexing, clippy::overly_complex_bool_expr, clippy::panicking_unwrap, clippy::possible_missing_comma, clippy::read_line_without_trim, clippy::recursive_format_impl, clippy::redundant_comparisons, clippy::redundant_locals, clippy::reversed_empty_ranges, clippy::self_assignment, clippy::serde_api_misuse, clippy::size_of_in_element_count, clippy::suspicious_splitn, clippy::transmute_null_to_fn, clippy::transmuting_null, clippy::uninit_assumed_init, clippy::uninit_vec, clippy::unit_cmp, clippy::unit_hash, clippy::unit_return_expecting_ord, clippy::unsound_collection_transmute, clippy::unused_io_amount, clippy::useless_attribute, clippy::vec_resize_to_zero, clippy::while_immutable_condition, clippy::wrong_transmute, clippy::zst_offset"##,
+            description: r##"lint group for: clippy::absurd_extreme_comparisons, clippy::almost_swapped, clippy::approx_constant, clippy::async_yields_async, clippy::bad_bit_mask, clippy::cast_slice_different_sizes, clippy::deprecated_semver, clippy::derive_ord_xor_partial_ord, clippy::derived_hash_with_manual_eq, clippy::eager_transmute, clippy::enum_clike_unportable_variant, clippy::eq_op, clippy::erasing_op, clippy::fn_address_comparisons, clippy::if_let_mutex, clippy::ifs_same_cond, clippy::impl_hash_borrow_with_str_and_bytes, clippy::impossible_comparisons, clippy::ineffective_bit_mask, clippy::infinite_iter, clippy::inherent_to_string_shadow_display, clippy::inline_fn_without_body, clippy::invalid_null_ptr_usage, clippy::invalid_regex, clippy::invisible_characters, clippy::iter_next_loop, clippy::iter_skip_zero, clippy::iterator_step_by_zero, clippy::let_underscore_lock, clippy::lint_groups_priority, clippy::match_str_case_mismatch, clippy::mem_replace_with_uninit, clippy::min_max, clippy::mismatched_target_os, clippy::mistyped_literal_suffixes, clippy::modulo_one, clippy::mut_from_ref, clippy::never_loop, clippy::non_octal_unix_permissions, clippy::nonsensical_open_options, clippy::not_unsafe_ptr_arg_deref, clippy::option_env_unwrap, clippy::out_of_bounds_indexing, clippy::overly_complex_bool_expr, clippy::panicking_unwrap, clippy::possible_missing_comma, clippy::read_line_without_trim, clippy::recursive_format_impl, clippy::redundant_comparisons, clippy::redundant_locals, clippy::reversed_empty_ranges, clippy::self_assignment, clippy::serde_api_misuse, clippy::size_of_in_element_count, clippy::suspicious_splitn, clippy::transmute_null_to_fn, clippy::transmuting_null, clippy::uninit_assumed_init, clippy::uninit_vec, clippy::unit_cmp, clippy::unit_hash, clippy::unit_return_expecting_ord, clippy::unsound_collection_transmute, clippy::unused_io_amount, clippy::useless_attribute, clippy::vec_resize_to_zero, clippy::while_immutable_condition, clippy::wrong_transmute, clippy::zst_offset"##,
         },
         children: &[
             "clippy::absurd_extreme_comparisons",
@@ -13511,6 +13696,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::deprecated_semver",
             "clippy::derive_ord_xor_partial_ord",
             "clippy::derived_hash_with_manual_eq",
+            "clippy::eager_transmute",
             "clippy::enum_clike_unportable_variant",
             "clippy::eq_op",
             "clippy::erasing_op",
@@ -13530,6 +13716,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::iter_skip_zero",
             "clippy::iterator_step_by_zero",
             "clippy::let_underscore_lock",
+            "clippy::lint_groups_priority",
             "clippy::match_str_case_mismatch",
             "clippy::mem_replace_with_uninit",
             "clippy::min_max",
@@ -13654,7 +13841,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::pedantic",
-            description: r##"lint group for: clippy::bool_to_int_with_if, clippy::borrow_as_ptr, clippy::case_sensitive_file_extension_comparisons, clippy::cast_lossless, clippy::cast_possible_truncation, clippy::cast_possible_wrap, clippy::cast_precision_loss, clippy::cast_ptr_alignment, clippy::cast_sign_loss, clippy::checked_conversions, clippy::cloned_instead_of_copied, clippy::copy_iterator, clippy::default_trait_access, clippy::doc_link_with_quotes, clippy::doc_markdown, clippy::empty_enum, clippy::enum_glob_use, clippy::expl_impl_clone_on_copy, clippy::explicit_deref_methods, clippy::explicit_into_iter_loop, clippy::explicit_iter_loop, clippy::filter_map_next, clippy::flat_map_option, clippy::float_cmp, clippy::fn_params_excessive_bools, clippy::from_iter_instead_of_collect, clippy::if_not_else, clippy::ignored_unit_patterns, clippy::implicit_clone, clippy::implicit_hasher, clippy::inconsistent_struct_constructor, clippy::index_refutable_slice, clippy::inefficient_to_string, clippy::inline_always, clippy::into_iter_without_iter, clippy::invalid_upcast_comparisons, clippy::items_after_statements, clippy::iter_not_returning_iterator, clippy::iter_without_into_iter, clippy::large_digit_groups, clippy::large_futures, clippy::large_stack_arrays, clippy::large_types_passed_by_value, clippy::linkedlist, clippy::macro_use_imports, clippy::manual_assert, clippy::manual_instant_elapsed, clippy::manual_let_else, clippy::manual_ok_or, clippy::manual_string_new, clippy::many_single_char_names, clippy::map_unwrap_or, clippy::match_bool, clippy::match_on_vec_items, clippy::match_same_arms, clippy::match_wild_err_arm, clippy::match_wildcard_for_single_variants, clippy::maybe_infinite_iter, clippy::mismatching_type_param_order, clippy::missing_errors_doc, clippy::missing_fields_in_debug, clippy::missing_panics_doc, clippy::module_name_repetitions, clippy::must_use_candidate, clippy::mut_mut, clippy::naive_bytecount, clippy::needless_bitwise_bool, clippy::needless_continue, clippy::needless_for_each, clippy::needless_pass_by_value, clippy::needless_raw_string_hashes, clippy::no_effect_underscore_binding, clippy::no_mangle_with_rust_abi, clippy::option_option, clippy::ptr_as_ptr, clippy::ptr_cast_constness, clippy::range_minus_one, clippy::range_plus_one, clippy::redundant_closure_for_method_calls, clippy::redundant_else, clippy::ref_binding_to_reference, clippy::ref_option_ref, clippy::return_self_not_must_use, clippy::same_functions_in_if_condition, clippy::semicolon_if_nothing_returned, clippy::should_panic_without_expect, clippy::similar_names, clippy::single_match_else, clippy::stable_sort_primitive, clippy::string_add_assign, clippy::struct_excessive_bools, clippy::struct_field_names, clippy::too_many_lines, clippy::transmute_ptr_to_ptr, clippy::trivially_copy_pass_by_ref, clippy::unchecked_duration_subtraction, clippy::unicode_not_nfc, clippy::uninlined_format_args, clippy::unnecessary_box_returns, clippy::unnecessary_join, clippy::unnecessary_wraps, clippy::unnested_or_patterns, clippy::unreadable_literal, clippy::unsafe_derive_deserialize, clippy::unused_async, clippy::unused_self, clippy::used_underscore_binding, clippy::verbose_bit_mask, clippy::wildcard_imports, clippy::zero_sized_map_values"##,
+            description: r##"lint group for: clippy::bool_to_int_with_if, clippy::borrow_as_ptr, clippy::case_sensitive_file_extension_comparisons, clippy::cast_lossless, clippy::cast_possible_truncation, clippy::cast_possible_wrap, clippy::cast_precision_loss, clippy::cast_ptr_alignment, clippy::cast_sign_loss, clippy::checked_conversions, clippy::cloned_instead_of_copied, clippy::copy_iterator, clippy::default_trait_access, clippy::doc_link_with_quotes, clippy::doc_markdown, clippy::empty_enum, clippy::enum_glob_use, clippy::expl_impl_clone_on_copy, clippy::explicit_deref_methods, clippy::explicit_into_iter_loop, clippy::explicit_iter_loop, clippy::filter_map_next, clippy::flat_map_option, clippy::float_cmp, clippy::fn_params_excessive_bools, clippy::from_iter_instead_of_collect, clippy::if_not_else, clippy::ignored_unit_patterns, clippy::implicit_clone, clippy::implicit_hasher, clippy::inconsistent_struct_constructor, clippy::index_refutable_slice, clippy::inefficient_to_string, clippy::inline_always, clippy::into_iter_without_iter, clippy::invalid_upcast_comparisons, clippy::items_after_statements, clippy::iter_filter_is_ok, clippy::iter_filter_is_some, clippy::iter_not_returning_iterator, clippy::iter_without_into_iter, clippy::large_digit_groups, clippy::large_futures, clippy::large_stack_arrays, clippy::large_types_passed_by_value, clippy::linkedlist, clippy::macro_use_imports, clippy::manual_assert, clippy::manual_instant_elapsed, clippy::manual_is_variant_and, clippy::manual_let_else, clippy::manual_ok_or, clippy::manual_string_new, clippy::many_single_char_names, clippy::map_unwrap_or, clippy::match_bool, clippy::match_on_vec_items, clippy::match_same_arms, clippy::match_wild_err_arm, clippy::match_wildcard_for_single_variants, clippy::maybe_infinite_iter, clippy::mismatching_type_param_order, clippy::missing_errors_doc, clippy::missing_fields_in_debug, clippy::missing_panics_doc, clippy::module_name_repetitions, clippy::must_use_candidate, clippy::mut_mut, clippy::naive_bytecount, clippy::needless_bitwise_bool, clippy::needless_continue, clippy::needless_for_each, clippy::needless_pass_by_value, clippy::needless_raw_string_hashes, clippy::no_effect_underscore_binding, clippy::no_mangle_with_rust_abi, clippy::option_as_ref_cloned, clippy::option_option, clippy::ptr_as_ptr, clippy::ptr_cast_constness, clippy::pub_underscore_fields, clippy::range_minus_one, clippy::range_plus_one, clippy::redundant_closure_for_method_calls, clippy::redundant_else, clippy::ref_binding_to_reference, clippy::ref_option_ref, clippy::return_self_not_must_use, clippy::same_functions_in_if_condition, clippy::semicolon_if_nothing_returned, clippy::should_panic_without_expect, clippy::similar_names, clippy::single_match_else, clippy::stable_sort_primitive, clippy::str_split_at_newline, clippy::string_add_assign, clippy::struct_excessive_bools, clippy::struct_field_names, clippy::too_many_lines, clippy::transmute_ptr_to_ptr, clippy::trivially_copy_pass_by_ref, clippy::unchecked_duration_subtraction, clippy::unicode_not_nfc, clippy::uninlined_format_args, clippy::unnecessary_box_returns, clippy::unnecessary_join, clippy::unnecessary_wraps, clippy::unnested_or_patterns, clippy::unreadable_literal, clippy::unsafe_derive_deserialize, clippy::unused_async, clippy::unused_self, clippy::used_underscore_binding, clippy::verbose_bit_mask, clippy::wildcard_imports, clippy::zero_sized_map_values"##,
         },
         children: &[
             "clippy::bool_to_int_with_if",
@@ -13694,6 +13881,8 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::into_iter_without_iter",
             "clippy::invalid_upcast_comparisons",
             "clippy::items_after_statements",
+            "clippy::iter_filter_is_ok",
+            "clippy::iter_filter_is_some",
             "clippy::iter_not_returning_iterator",
             "clippy::iter_without_into_iter",
             "clippy::large_digit_groups",
@@ -13704,6 +13893,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::macro_use_imports",
             "clippy::manual_assert",
             "clippy::manual_instant_elapsed",
+            "clippy::manual_is_variant_and",
             "clippy::manual_let_else",
             "clippy::manual_ok_or",
             "clippy::manual_string_new",
@@ -13730,9 +13920,11 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::needless_raw_string_hashes",
             "clippy::no_effect_underscore_binding",
             "clippy::no_mangle_with_rust_abi",
+            "clippy::option_as_ref_cloned",
             "clippy::option_option",
             "clippy::ptr_as_ptr",
             "clippy::ptr_cast_constness",
+            "clippy::pub_underscore_fields",
             "clippy::range_minus_one",
             "clippy::range_plus_one",
             "clippy::redundant_closure_for_method_calls",
@@ -13746,6 +13938,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::similar_names",
             "clippy::single_match_else",
             "clippy::stable_sort_primitive",
+            "clippy::str_split_at_newline",
             "clippy::string_add_assign",
             "clippy::struct_excessive_bools",
             "clippy::struct_field_names",
@@ -13772,7 +13965,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::perf",
-            description: r##"lint group for: clippy::box_collection, clippy::box_default, clippy::boxed_local, clippy::cmp_owned, clippy::collapsible_str_replace, clippy::drain_collect, clippy::expect_fun_call, clippy::extend_with_drain, clippy::format_collect, clippy::format_in_format_args, clippy::iter_nth, clippy::iter_overeager_cloned, clippy::large_const_arrays, clippy::large_enum_variant, clippy::manual_memcpy, clippy::manual_retain, clippy::manual_str_repeat, clippy::manual_try_fold, clippy::map_entry, clippy::missing_spin_loop, clippy::redundant_allocation, clippy::result_large_err, clippy::single_char_pattern, clippy::slow_vector_initialization, clippy::to_string_in_format_args, clippy::unnecessary_to_owned, clippy::useless_vec, clippy::vec_init_then_push, clippy::waker_clone_wake"##,
+            description: r##"lint group for: clippy::box_collection, clippy::box_default, clippy::boxed_local, clippy::cmp_owned, clippy::collapsible_str_replace, clippy::drain_collect, clippy::expect_fun_call, clippy::extend_with_drain, clippy::format_collect, clippy::format_in_format_args, clippy::iter_nth, clippy::iter_overeager_cloned, clippy::large_const_arrays, clippy::large_enum_variant, clippy::manual_memcpy, clippy::manual_retain, clippy::manual_str_repeat, clippy::manual_try_fold, clippy::map_entry, clippy::missing_spin_loop, clippy::redundant_allocation, clippy::result_large_err, clippy::single_char_pattern, clippy::slow_vector_initialization, clippy::thread_local_initializer_can_be_made_const, clippy::to_string_in_format_args, clippy::unnecessary_to_owned, clippy::useless_vec, clippy::vec_init_then_push, clippy::waker_clone_wake"##,
         },
         children: &[
             "clippy::box_collection",
@@ -13799,6 +13992,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::result_large_err",
             "clippy::single_char_pattern",
             "clippy::slow_vector_initialization",
+            "clippy::thread_local_initializer_can_be_made_const",
             "clippy::to_string_in_format_args",
             "clippy::unnecessary_to_owned",
             "clippy::useless_vec",
@@ -13809,7 +14003,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::restriction",
-            description: r##"lint group for: clippy::absolute_paths, clippy::alloc_instead_of_core, clippy::allow_attributes, clippy::allow_attributes_without_reason, clippy::arithmetic_side_effects, clippy::as_conversions, clippy::as_underscore, clippy::assertions_on_result_states, clippy::big_endian_bytes, clippy::clone_on_ref_ptr, clippy::create_dir, clippy::dbg_macro, clippy::decimal_literal_representation, clippy::default_numeric_fallback, clippy::default_union_representation, clippy::deref_by_slicing, clippy::disallowed_script_idents, clippy::else_if_without_else, clippy::empty_drop, clippy::empty_structs_with_brackets, clippy::error_impl_error, clippy::exhaustive_enums, clippy::exhaustive_structs, clippy::exit, clippy::expect_used, clippy::filetype_is_file, clippy::float_arithmetic, clippy::float_cmp_const, clippy::fn_to_numeric_cast_any, clippy::format_push_string, clippy::get_unwrap, clippy::host_endian_bytes, clippy::if_then_some_else_none, clippy::impl_trait_in_params, clippy::implicit_return, clippy::indexing_slicing, clippy::infinite_loop, clippy::inline_asm_x86_att_syntax, clippy::inline_asm_x86_intel_syntax, clippy::integer_division, clippy::iter_over_hash_type, clippy::large_include_file, clippy::let_underscore_must_use, clippy::let_underscore_untyped, clippy::little_endian_bytes, clippy::lossy_float_literal, clippy::map_err_ignore, clippy::mem_forget, clippy::min_ident_chars, clippy::missing_assert_message, clippy::missing_asserts_for_indexing, clippy::missing_docs_in_private_items, clippy::missing_inline_in_public_items, clippy::missing_trait_methods, clippy::mixed_read_write_in_expression, clippy::mod_module_files, clippy::modulo_arithmetic, clippy::multiple_inherent_impl, clippy::multiple_unsafe_ops_per_block, clippy::mutex_atomic, clippy::needless_raw_strings, clippy::non_ascii_literal, clippy::panic, clippy::panic_in_result_fn, clippy::partial_pub_fields, clippy::pattern_type_mismatch, clippy::print_stderr, clippy::print_stdout, clippy::pub_use, clippy::pub_with_shorthand, clippy::pub_without_shorthand, clippy::question_mark_used, clippy::rc_buffer, clippy::rc_mutex, clippy::redundant_type_annotations, clippy::ref_patterns, clippy::rest_pat_in_fully_bound_structs, clippy::same_name_method, clippy::self_named_module_files, clippy::semicolon_inside_block, clippy::semicolon_outside_block, clippy::separated_literal_suffix, clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated, clippy::single_call_fn, clippy::single_char_lifetime_names, clippy::std_instead_of_alloc, clippy::std_instead_of_core, clippy::str_to_string, clippy::string_add, clippy::string_lit_chars_any, clippy::string_slice, clippy::string_to_string, clippy::suspicious_xor_used_as_pow, clippy::tests_outside_test_module, clippy::todo, clippy::try_err, clippy::undocumented_unsafe_blocks, clippy::unimplemented, clippy::unnecessary_safety_comment, clippy::unnecessary_safety_doc, clippy::unnecessary_self_imports, clippy::unneeded_field_pattern, clippy::unreachable, clippy::unseparated_literal_suffix, clippy::unwrap_in_result, clippy::unwrap_used, clippy::use_debug, clippy::verbose_file_reads, clippy::wildcard_enum_match_arm"##,
+            description: r##"lint group for: clippy::absolute_paths, clippy::alloc_instead_of_core, clippy::allow_attributes, clippy::allow_attributes_without_reason, clippy::arithmetic_side_effects, clippy::as_conversions, clippy::as_underscore, clippy::assertions_on_result_states, clippy::big_endian_bytes, clippy::clone_on_ref_ptr, clippy::create_dir, clippy::dbg_macro, clippy::decimal_literal_representation, clippy::default_numeric_fallback, clippy::default_union_representation, clippy::deref_by_slicing, clippy::disallowed_script_idents, clippy::else_if_without_else, clippy::empty_drop, clippy::empty_enum_variants_with_brackets, clippy::empty_structs_with_brackets, clippy::error_impl_error, clippy::exhaustive_enums, clippy::exhaustive_structs, clippy::exit, clippy::expect_used, clippy::filetype_is_file, clippy::float_arithmetic, clippy::float_cmp_const, clippy::fn_to_numeric_cast_any, clippy::format_push_string, clippy::get_unwrap, clippy::host_endian_bytes, clippy::if_then_some_else_none, clippy::impl_trait_in_params, clippy::implicit_return, clippy::indexing_slicing, clippy::infinite_loop, clippy::inline_asm_x86_att_syntax, clippy::inline_asm_x86_intel_syntax, clippy::integer_division, clippy::iter_over_hash_type, clippy::large_include_file, clippy::let_underscore_must_use, clippy::let_underscore_untyped, clippy::little_endian_bytes, clippy::lossy_float_literal, clippy::map_err_ignore, clippy::mem_forget, clippy::min_ident_chars, clippy::missing_assert_message, clippy::missing_asserts_for_indexing, clippy::missing_docs_in_private_items, clippy::missing_inline_in_public_items, clippy::missing_trait_methods, clippy::mixed_read_write_in_expression, clippy::mod_module_files, clippy::modulo_arithmetic, clippy::multiple_inherent_impl, clippy::multiple_unsafe_ops_per_block, clippy::mutex_atomic, clippy::needless_raw_strings, clippy::non_ascii_literal, clippy::panic, clippy::panic_in_result_fn, clippy::partial_pub_fields, clippy::pattern_type_mismatch, clippy::print_stderr, clippy::print_stdout, clippy::pub_use, clippy::pub_with_shorthand, clippy::pub_without_shorthand, clippy::question_mark_used, clippy::rc_buffer, clippy::rc_mutex, clippy::redundant_type_annotations, clippy::ref_patterns, clippy::rest_pat_in_fully_bound_structs, clippy::same_name_method, clippy::self_named_module_files, clippy::semicolon_inside_block, clippy::semicolon_outside_block, clippy::separated_literal_suffix, clippy::shadow_reuse, clippy::shadow_same, clippy::shadow_unrelated, clippy::single_call_fn, clippy::single_char_lifetime_names, clippy::std_instead_of_alloc, clippy::std_instead_of_core, clippy::str_to_string, clippy::string_add, clippy::string_lit_chars_any, clippy::string_slice, clippy::string_to_string, clippy::suspicious_xor_used_as_pow, clippy::tests_outside_test_module, clippy::todo, clippy::try_err, clippy::undocumented_unsafe_blocks, clippy::unimplemented, clippy::unnecessary_safety_comment, clippy::unnecessary_safety_doc, clippy::unnecessary_self_imports, clippy::unneeded_field_pattern, clippy::unreachable, clippy::unseparated_literal_suffix, clippy::unwrap_in_result, clippy::unwrap_used, clippy::use_debug, clippy::verbose_file_reads, clippy::wildcard_enum_match_arm"##,
         },
         children: &[
             "clippy::absolute_paths",
@@ -13831,6 +14025,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::disallowed_script_idents",
             "clippy::else_if_without_else",
             "clippy::empty_drop",
+            "clippy::empty_enum_variants_with_brackets",
             "clippy::empty_structs_with_brackets",
             "clippy::error_impl_error",
             "clippy::exhaustive_enums",
@@ -13928,7 +14123,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::style",
-            description: r##"lint group for: clippy::assertions_on_constants, clippy::assign_op_pattern, clippy::blocks_in_conditions, clippy::bool_assert_comparison, clippy::borrow_interior_mutable_const, clippy::builtin_type_shadow, clippy::bytes_nth, clippy::chars_last_cmp, clippy::chars_next_cmp, clippy::cmp_null, clippy::collapsible_else_if, clippy::collapsible_if, clippy::collapsible_match, clippy::comparison_chain, clippy::comparison_to_empty, clippy::declare_interior_mutable_const, clippy::default_instead_of_iter_empty, clippy::disallowed_macros, clippy::disallowed_methods, clippy::disallowed_names, clippy::disallowed_types, clippy::double_must_use, clippy::double_neg, clippy::duplicate_underscore_argument, clippy::enum_variant_names, clippy::err_expect, clippy::excessive_precision, clippy::field_reassign_with_default, clippy::filter_map_bool_then, clippy::fn_to_numeric_cast, clippy::fn_to_numeric_cast_with_truncation, clippy::for_kv_map, clippy::from_over_into, clippy::from_str_radix_10, clippy::get_first, clippy::if_same_then_else, clippy::implicit_saturating_add, clippy::implicit_saturating_sub, clippy::inconsistent_digit_grouping, clippy::infallible_destructuring_match, clippy::inherent_to_string, clippy::init_numbered_fields, clippy::into_iter_on_ref, clippy::is_digit_ascii_radix, clippy::items_after_test_module, clippy::iter_cloned_collect, clippy::iter_next_slice, clippy::iter_nth_zero, clippy::iter_skip_next, clippy::just_underscores_and_digits, clippy::len_without_is_empty, clippy::len_zero, clippy::let_and_return, clippy::let_unit_value, clippy::main_recursion, clippy::manual_async_fn, clippy::manual_bits, clippy::manual_is_ascii_check, clippy::manual_is_finite, clippy::manual_is_infinite, clippy::manual_map, clippy::manual_next_back, clippy::manual_non_exhaustive, clippy::manual_range_contains, clippy::manual_saturating_arithmetic, clippy::manual_while_let_some, clippy::map_clone, clippy::map_collect_result_unit, clippy::match_like_matches_macro, clippy::match_overlapping_arm, clippy::match_ref_pats, clippy::match_result_ok, clippy::mem_replace_option_with_none, clippy::mem_replace_with_default, clippy::missing_enforced_import_renames, clippy::missing_safety_doc, clippy::mixed_case_hex_literals, clippy::module_inception, clippy::must_use_unit, clippy::mut_mutex_lock, clippy::needless_borrow, clippy::needless_borrows_for_generic_args, clippy::needless_doctest_main, clippy::needless_else, clippy::needless_late_init, clippy::needless_parens_on_range_literals, clippy::needless_pub_self, clippy::needless_range_loop, clippy::needless_return, clippy::needless_return_with_question_mark, clippy::neg_multiply, clippy::new_ret_no_self, clippy::new_without_default, clippy::non_minimal_cfg, clippy::obfuscated_if_else, clippy::ok_expect, clippy::op_ref, clippy::option_map_or_err_ok, clippy::option_map_or_none, clippy::partialeq_to_none, clippy::print_literal, clippy::print_with_newline, clippy::println_empty_string, clippy::ptr_arg, clippy::ptr_eq, clippy::question_mark, clippy::redundant_closure, clippy::redundant_field_names, clippy::redundant_pattern, clippy::redundant_pattern_matching, clippy::redundant_static_lifetimes, clippy::result_map_or_into_option, clippy::result_unit_err, clippy::same_item_push, clippy::self_named_constructors, clippy::should_implement_trait, clippy::single_char_add_str, clippy::single_component_path_imports, clippy::single_match, clippy::string_extend_chars, clippy::tabs_in_doc_comments, clippy::to_digit_is_some, clippy::toplevel_ref_arg, clippy::trim_split_whitespace, clippy::unnecessary_fallible_conversions, clippy::unnecessary_fold, clippy::unnecessary_lazy_evaluations, clippy::unnecessary_mut_passed, clippy::unnecessary_owned_empty_strings, clippy::unsafe_removed_from_name, clippy::unused_enumerate_index, clippy::unused_unit, clippy::unusual_byte_groupings, clippy::unwrap_or_default, clippy::upper_case_acronyms, clippy::while_let_on_iterator, clippy::write_literal, clippy::write_with_newline, clippy::writeln_empty_string, clippy::wrong_self_convention, clippy::zero_ptr"##,
+            description: r##"lint group for: clippy::assertions_on_constants, clippy::assign_op_pattern, clippy::blocks_in_conditions, clippy::bool_assert_comparison, clippy::borrow_interior_mutable_const, clippy::builtin_type_shadow, clippy::bytes_nth, clippy::chars_last_cmp, clippy::chars_next_cmp, clippy::cmp_null, clippy::collapsible_else_if, clippy::collapsible_if, clippy::collapsible_match, clippy::comparison_chain, clippy::comparison_to_empty, clippy::declare_interior_mutable_const, clippy::default_instead_of_iter_empty, clippy::disallowed_macros, clippy::disallowed_methods, clippy::disallowed_names, clippy::disallowed_types, clippy::double_must_use, clippy::double_neg, clippy::duplicate_underscore_argument, clippy::enum_variant_names, clippy::err_expect, clippy::excessive_precision, clippy::field_reassign_with_default, clippy::filter_map_bool_then, clippy::fn_to_numeric_cast, clippy::fn_to_numeric_cast_with_truncation, clippy::for_kv_map, clippy::from_over_into, clippy::from_str_radix_10, clippy::get_first, clippy::if_same_then_else, clippy::implicit_saturating_add, clippy::implicit_saturating_sub, clippy::inconsistent_digit_grouping, clippy::infallible_destructuring_match, clippy::inherent_to_string, clippy::init_numbered_fields, clippy::into_iter_on_ref, clippy::is_digit_ascii_radix, clippy::items_after_test_module, clippy::iter_cloned_collect, clippy::iter_next_slice, clippy::iter_nth_zero, clippy::iter_skip_next, clippy::just_underscores_and_digits, clippy::len_without_is_empty, clippy::len_zero, clippy::let_and_return, clippy::let_unit_value, clippy::main_recursion, clippy::manual_async_fn, clippy::manual_bits, clippy::manual_is_ascii_check, clippy::manual_is_finite, clippy::manual_is_infinite, clippy::manual_map, clippy::manual_next_back, clippy::manual_non_exhaustive, clippy::manual_range_contains, clippy::manual_saturating_arithmetic, clippy::manual_while_let_some, clippy::map_clone, clippy::map_collect_result_unit, clippy::match_like_matches_macro, clippy::match_overlapping_arm, clippy::match_ref_pats, clippy::match_result_ok, clippy::mem_replace_option_with_none, clippy::mem_replace_with_default, clippy::missing_enforced_import_renames, clippy::missing_safety_doc, clippy::mixed_case_hex_literals, clippy::module_inception, clippy::must_use_unit, clippy::mut_mutex_lock, clippy::needless_borrow, clippy::needless_borrows_for_generic_args, clippy::needless_doctest_main, clippy::needless_else, clippy::needless_late_init, clippy::needless_parens_on_range_literals, clippy::needless_pub_self, clippy::needless_range_loop, clippy::needless_return, clippy::needless_return_with_question_mark, clippy::neg_multiply, clippy::new_ret_no_self, clippy::new_without_default, clippy::non_minimal_cfg, clippy::obfuscated_if_else, clippy::ok_expect, clippy::op_ref, clippy::option_map_or_err_ok, clippy::option_map_or_none, clippy::partialeq_to_none, clippy::print_literal, clippy::print_with_newline, clippy::println_empty_string, clippy::ptr_arg, clippy::ptr_eq, clippy::question_mark, clippy::redundant_closure, clippy::redundant_field_names, clippy::redundant_pattern, clippy::redundant_pattern_matching, clippy::redundant_static_lifetimes, clippy::result_map_or_into_option, clippy::result_unit_err, clippy::same_item_push, clippy::self_named_constructors, clippy::should_implement_trait, clippy::single_char_add_str, clippy::single_component_path_imports, clippy::single_match, clippy::string_extend_chars, clippy::tabs_in_doc_comments, clippy::to_digit_is_some, clippy::to_string_trait_impl, clippy::toplevel_ref_arg, clippy::trim_split_whitespace, clippy::unnecessary_fallible_conversions, clippy::unnecessary_fold, clippy::unnecessary_lazy_evaluations, clippy::unnecessary_mut_passed, clippy::unnecessary_owned_empty_strings, clippy::unsafe_removed_from_name, clippy::unused_enumerate_index, clippy::unused_unit, clippy::unusual_byte_groupings, clippy::unwrap_or_default, clippy::upper_case_acronyms, clippy::while_let_on_iterator, clippy::write_literal, clippy::write_with_newline, clippy::writeln_empty_string, clippy::wrong_self_convention, clippy::zero_ptr"##,
         },
         children: &[
             "clippy::assertions_on_constants",
@@ -14053,6 +14248,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::string_extend_chars",
             "clippy::tabs_in_doc_comments",
             "clippy::to_digit_is_some",
+            "clippy::to_string_trait_impl",
             "clippy::toplevel_ref_arg",
             "clippy::trim_split_whitespace",
             "clippy::unnecessary_fallible_conversions",
@@ -14077,7 +14273,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
     LintGroup {
         lint: Lint {
             label: "clippy::suspicious",
-            description: r##"lint group for: clippy::almost_complete_range, clippy::arc_with_non_send_sync, clippy::await_holding_invalid_type, clippy::await_holding_lock, clippy::await_holding_refcell_ref, clippy::blanket_clippy_restriction_lints, clippy::cast_abs_to_unsigned, clippy::cast_enum_constructor, clippy::cast_enum_truncation, clippy::cast_nan_to_int, clippy::cast_slice_from_raw_parts, clippy::crate_in_macro_def, clippy::drop_non_drop, clippy::duplicate_mod, clippy::empty_loop, clippy::float_equality_without_abs, clippy::forget_non_drop, clippy::four_forward_slashes, clippy::from_raw_with_void_ptr, clippy::ineffective_open_options, clippy::iter_out_of_bounds, clippy::join_absolute_paths, clippy::let_underscore_future, clippy::lines_filter_map_ok, clippy::maybe_misused_cfg, clippy::misnamed_getters, clippy::misrefactored_assign_op, clippy::multi_assignments, clippy::mut_range_bound, clippy::mutable_key_type, clippy::no_effect_replace, clippy::non_canonical_clone_impl, clippy::non_canonical_partial_ord_impl, clippy::octal_escapes, clippy::path_ends_with_ext, clippy::permissions_set_readonly_false, clippy::print_in_format_impl, clippy::rc_clone_in_vec_init, clippy::repeat_vec_with_capacity, clippy::single_range_in_vec_init, clippy::size_of_ref, clippy::suspicious_arithmetic_impl, clippy::suspicious_assignment_formatting, clippy::suspicious_command_arg_space, clippy::suspicious_doc_comments, clippy::suspicious_else_formatting, clippy::suspicious_map, clippy::suspicious_op_assign_impl, clippy::suspicious_to_owned, clippy::suspicious_unary_op_formatting, clippy::swap_ptr_to_ref, clippy::test_attr_in_doctest, clippy::type_id_on_box, clippy::unconditional_recursion"##,
+            description: r##"lint group for: clippy::almost_complete_range, clippy::arc_with_non_send_sync, clippy::await_holding_invalid_type, clippy::await_holding_lock, clippy::await_holding_refcell_ref, clippy::blanket_clippy_restriction_lints, clippy::cast_abs_to_unsigned, clippy::cast_enum_constructor, clippy::cast_enum_truncation, clippy::cast_nan_to_int, clippy::cast_slice_from_raw_parts, clippy::crate_in_macro_def, clippy::drop_non_drop, clippy::duplicate_mod, clippy::empty_loop, clippy::float_equality_without_abs, clippy::forget_non_drop, clippy::four_forward_slashes, clippy::from_raw_with_void_ptr, clippy::incompatible_msrv, clippy::ineffective_open_options, clippy::iter_out_of_bounds, clippy::join_absolute_paths, clippy::let_underscore_future, clippy::lines_filter_map_ok, clippy::maybe_misused_cfg, clippy::misnamed_getters, clippy::misrefactored_assign_op, clippy::multi_assignments, clippy::mut_range_bound, clippy::mutable_key_type, clippy::no_effect_replace, clippy::non_canonical_clone_impl, clippy::non_canonical_partial_ord_impl, clippy::octal_escapes, clippy::path_ends_with_ext, clippy::permissions_set_readonly_false, clippy::print_in_format_impl, clippy::rc_clone_in_vec_init, clippy::repeat_vec_with_capacity, clippy::single_range_in_vec_init, clippy::size_of_ref, clippy::suspicious_arithmetic_impl, clippy::suspicious_assignment_formatting, clippy::suspicious_command_arg_space, clippy::suspicious_doc_comments, clippy::suspicious_else_formatting, clippy::suspicious_map, clippy::suspicious_op_assign_impl, clippy::suspicious_open_options, clippy::suspicious_to_owned, clippy::suspicious_unary_op_formatting, clippy::swap_ptr_to_ref, clippy::test_attr_in_doctest, clippy::type_id_on_box, clippy::unconditional_recursion, clippy::unnecessary_result_map_or_else"##,
         },
         children: &[
             "clippy::almost_complete_range",
@@ -14099,6 +14295,7 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::forget_non_drop",
             "clippy::four_forward_slashes",
             "clippy::from_raw_with_void_ptr",
+            "clippy::incompatible_msrv",
             "clippy::ineffective_open_options",
             "clippy::iter_out_of_bounds",
             "clippy::join_absolute_paths",
@@ -14128,12 +14325,14 @@ pub const CLIPPY_LINT_GROUPS: &[LintGroup] = &[
             "clippy::suspicious_else_formatting",
             "clippy::suspicious_map",
             "clippy::suspicious_op_assign_impl",
+            "clippy::suspicious_open_options",
             "clippy::suspicious_to_owned",
             "clippy::suspicious_unary_op_formatting",
             "clippy::swap_ptr_to_ref",
             "clippy::test_attr_in_doctest",
             "clippy::type_id_on_box",
             "clippy::unconditional_recursion",
+            "clippy::unnecessary_result_map_or_else",
         ],
     },
 ];
diff --git a/crates/ide/src/folding_ranges.rs b/crates/ide/src/folding_ranges.rs
index b863e144f0a..2bc07211231 100755
--- a/crates/ide/src/folding_ranges.rs
+++ b/crates/ide/src/folding_ranges.rs
@@ -494,7 +494,7 @@ fn main() <fold block>{
                         2,
                         3,
                     ]</fold>,
-                    strustS => <fold matcharm>StructS <fold block>{
+                    structS => <fold matcharm>StructS <fold block>{
                         a: 31,
                     }</fold></fold>,
                 }</fold>
diff --git a/crates/mbe/src/syntax_bridge.rs b/crates/mbe/src/syntax_bridge.rs
index 4513732902d..d6c3bd18926 100644
--- a/crates/mbe/src/syntax_bridge.rs
+++ b/crates/mbe/src/syntax_bridge.rs
@@ -622,7 +622,7 @@ where
 
 struct Converter<SpanMap, S> {
     current: Option<SyntaxToken>,
-    current_leafs: Vec<tt::Leaf<S>>,
+    current_leaves: Vec<tt::Leaf<S>>,
     preorder: PreorderWithTokens,
     range: TextRange,
     punct_offset: Option<(SyntaxToken, TextSize)>,
@@ -650,7 +650,7 @@ impl<SpanMap, S> Converter<SpanMap, S> {
             append,
             remove,
             call_site,
-            current_leafs: vec![],
+            current_leaves: vec![],
         };
         let first = this.next_token();
         this.current = first;
@@ -665,7 +665,7 @@ impl<SpanMap, S> Converter<SpanMap, S> {
                     self.preorder.skip_subtree();
                     if let Some(mut v) = self.append.remove(&n.into()) {
                         v.reverse();
-                        self.current_leafs.extend(v);
+                        self.current_leaves.extend(v);
                         return None;
                     }
                 }
@@ -673,7 +673,7 @@ impl<SpanMap, S> Converter<SpanMap, S> {
                 WalkEvent::Leave(ele) => {
                     if let Some(mut v) = self.append.remove(&ele) {
                         v.reverse();
-                        self.current_leafs.extend(v);
+                        self.current_leaves.extend(v);
                         return None;
                     }
                 }
@@ -758,8 +758,8 @@ where
             }
         }
 
-        if let Some(leaf) = self.current_leafs.pop() {
-            if self.current_leafs.is_empty() {
+        if let Some(leaf) = self.current_leaves.pop() {
+            if self.current_leaves.is_empty() {
                 self.current = self.next_token();
             }
             return Some((SynToken::Leaf(leaf), TextRange::empty(TextSize::new(0))));
diff --git a/crates/proc-macro-api/src/version.rs b/crates/proc-macro-api/src/version.rs
index 5ff1f36c545..5f81c0a96d9 100644
--- a/crates/proc-macro-api/src/version.rs
+++ b/crates/proc-macro-api/src/version.rs
@@ -106,9 +106,9 @@ fn read_section<'a>(dylib_binary: &'a [u8], section_name: &str) -> io::Result<&'
 /// <https://github.com/rust-lang/rust-analyzer/issues/6174>
 pub fn read_version(dylib_path: &AbsPath) -> io::Result<String> {
     let dylib_file = File::open(dylib_path)?;
-    let dylib_mmaped = unsafe { Mmap::map(&dylib_file) }?;
+    let dylib_mmapped = unsafe { Mmap::map(&dylib_file) }?;
 
-    let dot_rustc = read_section(&dylib_mmaped, ".rustc")?;
+    let dot_rustc = read_section(&dylib_mmapped, ".rustc")?;
 
     // check if magic is valid
     if &dot_rustc[0..4] != b"rust" {