From f624b6a47a5a6bd223a84fedf749d77a0bbbc2a8 Mon Sep 17 00:00:00 2001 From: BD103 <59022059+BD103@users.noreply.github.com> Date: Wed, 26 Feb 2025 11:39:45 -0500 Subject: [PATCH] Polish linter diagnostics (#285) This makes a few small improvements to the diagnostics of the linter so they're simpler, clearer, and more consistent. If you're reviewing, I recommend going through each commit individually! Part of #284. --- bevy_lint/src/lints/borrowed_reborrowable.rs | 26 ++++++++++++++--- .../cargo/duplicate_bevy_dependencies.rs | 7 ++--- bevy_lint/src/lints/insert_event_resource.rs | 10 ++++--- bevy_lint/src/lints/zst_query.rs | 12 +++++--- .../long_version_format/fail/Cargo.stderr | 4 +-- .../short_version_format/fail/Cargo.stderr | 4 +-- .../with_feature/fail/Cargo.stderr | 4 +-- .../ui/borrowed_reborrowable/closures.stderr | 2 +- .../ui/borrowed_reborrowable/commands.stderr | 4 +-- .../ui/borrowed_reborrowable/deferred.stderr | 4 +-- .../deferred_world.stderr | 4 +-- .../entity_commands.stderr | 4 +-- .../borrowed_reborrowable/entity_mut.stderr | 4 +-- .../filtered_entity_mut.stderr | 4 +-- .../ui/borrowed_reborrowable/mut_typed.stderr | 4 +-- .../borrowed_reborrowable/mut_untyped.stderr | 4 +-- .../borrowed_reborrowable/non_send_mut.stderr | 4 +-- .../ui/borrowed_reborrowable/ptr_mut.stderr | 4 +-- .../ui/borrowed_reborrowable/query.stderr | 4 +-- .../ui/borrowed_reborrowable/resource.stderr | 4 +-- bevy_lint/tests/ui/zst_query/query.rs | 14 +++++----- bevy_lint/tests/ui/zst_query/query.stderr | 28 +++++++++---------- 22 files changed, 90 insertions(+), 69 deletions(-) diff --git a/bevy_lint/src/lints/borrowed_reborrowable.rs b/bevy_lint/src/lints/borrowed_reborrowable.rs index 655cd28d..071b4a43 100644 --- a/bevy_lint/src/lints/borrowed_reborrowable.rs +++ b/bevy_lint/src/lints/borrowed_reborrowable.rs @@ -99,9 +99,9 @@ use std::ops::ControlFlow; use crate::{declare_bevy_lint, declare_bevy_lint_pass}; -use clippy_utils::{diagnostics::span_lint_and_sugg, ty::match_type}; +use clippy_utils::{diagnostics::span_lint_and_sugg, source::snippet_opt, ty::match_type}; use rustc_errors::Applicability; -use rustc_hir::{Body, FnDecl, Mutability, intravisit::FnKind}; +use rustc_hir::{Body, FnDecl, MutTy, Mutability, intravisit::FnKind}; use rustc_lint::{LateContext, LateLintPass}; use rustc_middle::ty::{Interner, Ty, TyKind, TypeVisitable, TypeVisitor}; use rustc_span::{ @@ -113,7 +113,7 @@ use rustc_span::{ declare_bevy_lint! { pub BORROWED_REBORROWABLE, PEDANTIC, - "parameter takes a mutable reference to a re-borrowable type", + "function parameter takes a mutable reference to a re-borrowable type", } declare_bevy_lint_pass! { @@ -184,13 +184,31 @@ impl<'tcx> LateLintPass<'tcx> for BorrowedReborrowable { let span = decl.inputs[arg_index].span.to(arg_ident.span); + // This tries to get the user-written form of `T` given the HIR representation for `&T` + // / `&mut T`. If we cannot for whatever reason, we fallback to using + // `Ty::to_string()` to get the fully-qualified form of `T`. + // + // For example, given a function signature like `fn(&mut Commands)`, we try to get the + // snippet for just `Commands` but default to `bevy::prelude::Commands<'_, '_>` if we + // cannot. + let ty_snippet = match decl.inputs[arg_index].kind { + // The `Ty` should be a `Ref`, since we proved that above. + rustc_hir::TyKind::Ref(_, MutTy { ty: inner_ty, .. }) => { + // Get the snippet for the inner type. + snippet_opt(cx, inner_ty.span) + } + // If it's not a `Ref` for whatever reason, fallback to our default value. + _ => None, + } + .unwrap_or_else(|| ty.to_string()); + span_lint_and_sugg( cx, BORROWED_REBORROWABLE.lint, span, reborrowable.message(), reborrowable.help(), - reborrowable.suggest(arg_ident, ty.to_string()), + reborrowable.suggest(arg_ident, ty_snippet), // Not machine-applicable since the function body may need to // also be updated to account for the removed ref Applicability::MaybeIncorrect, diff --git a/bevy_lint/src/lints/cargo/duplicate_bevy_dependencies.rs b/bevy_lint/src/lints/cargo/duplicate_bevy_dependencies.rs index a9bed0cd..e87057c6 100644 --- a/bevy_lint/src/lints/cargo/duplicate_bevy_dependencies.rs +++ b/bevy_lint/src/lints/cargo/duplicate_bevy_dependencies.rs @@ -167,14 +167,11 @@ fn lint_with_target_version( cx, DUPLICATE_BEVY_DEPENDENCIES.lint, toml_span(cargo_toml_reference.span(), file), - format!( - "Mismatching versions of `bevy` found, {} used bevy version {}", - mismatching_dependency.0, mismatching_dependency.1 - ), + DUPLICATE_BEVY_DEPENDENCIES.lint.desc, |diag| { diag.span_help( bevy_cargo_toml_span, - format!("Expected all crates to use `bevy` {target_version}"), + format!("expected all crates to use `bevy` {target_version}, but `{}` uses `bevy` {}", mismatching_dependency.0, mismatching_dependency.1), ); }, ); diff --git a/bevy_lint/src/lints/insert_event_resource.rs b/bevy_lint/src/lints/insert_event_resource.rs index 039e2a20..fa758965 100644 --- a/bevy_lint/src/lints/insert_event_resource.rs +++ b/bevy_lint/src/lints/insert_event_resource.rs @@ -70,6 +70,8 @@ declare_bevy_lint_pass! { }, } +const HELP_MESSAGE: &str = "inserting an `Events` resource does not fully setup that event"; + impl<'tcx> LateLintPass<'tcx> for InsertEventResource { fn check_expr(&mut self, cx: &LateContext<'tcx>, expr: &'tcx Expr<'tcx>) { // Find a method call. @@ -128,7 +130,7 @@ fn check_insert_resource(cx: &LateContext<'_>, method_call: &MethodCall) { format!( "called `App::insert_resource{generics_snippet}({receiver_snippet}, {args_snippet})` instead of `App::add_event::<{event_ty_snippet}>({receiver_snippet})`" ), - "inserting an `Events` resource does not fully setup that event", + HELP_MESSAGE, format!("App::add_event::<{event_ty_snippet}>({receiver_snippet})"), applicability, ); @@ -140,7 +142,7 @@ fn check_insert_resource(cx: &LateContext<'_>, method_call: &MethodCall) { format!( "called `App::insert_resource{generics_snippet}({args_snippet})` instead of `App::add_event::<{event_ty_snippet}>()`" ), - "inserting an `Events` resource does not fully setup that event", + HELP_MESSAGE, format!("add_event::<{event_ty_snippet}>()"), applicability, ); @@ -208,7 +210,7 @@ fn check_init_resource<'tcx>(cx: &LateContext<'tcx>, method_call: &MethodCall<'t format!( "called `App::init_resource{generics_snippet}({receiver_snippet})` instead of `App::add_event::<{event_ty_snippet}>({receiver_snippet})`" ), - "inserting an `Events` resource does not fully setup that event", + HELP_MESSAGE, format!("App::add_event::<{event_ty_snippet}>({receiver_snippet})"), applicability, ); @@ -220,7 +222,7 @@ fn check_init_resource<'tcx>(cx: &LateContext<'tcx>, method_call: &MethodCall<'t format!( "called `App::init_resource{generics_snippet}({args_snippet})` instead of `App::add_event::<{event_ty_snippet}>()`" ), - "inserting an `Events` resource does not fully setup that event", + HELP_MESSAGE, format!("add_event::<{event_ty_snippet}>()"), applicability, ); diff --git a/bevy_lint/src/lints/zst_query.rs b/bevy_lint/src/lints/zst_query.rs index cf7fc8a4..cd4fd021 100644 --- a/bevy_lint/src/lints/zst_query.rs +++ b/bevy_lint/src/lints/zst_query.rs @@ -68,10 +68,10 @@ use rustc_middle::ty::{ declare_bevy_lint! { pub ZST_QUERY, - // This will eventually be a `RESTRICTION` lint, but due to - // it is not yet ready for production. + // This will eventually be a `RESTRICTION` lint, but due to + // it is not yet ready for production. NURSERY, - "query for a zero-sized type", + "queried a zero-sized type", } declare_bevy_lint_pass! { @@ -136,7 +136,11 @@ impl QueryKind { // In the future, we might want to span the usage site of `is_added()`/`is_changed()` // and suggest to use `Added`/`Changed` instead. match self { - Self::Query => format!("consider using a filter instead: `With<{ty}>`"), + Self::Query => format!( + // NOTE: This isn't actually true, please see #279 for more info and how this will + // be fixed! + "zero-sized types do not retrieve any data, consider using a filter instead: `With<{ty}>`" + ), } } } diff --git a/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/long_version_format/fail/Cargo.stderr b/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/long_version_format/fail/Cargo.stderr index 23006188..ed9a862a 100644 --- a/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/long_version_format/fail/Cargo.stderr +++ b/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/long_version_format/fail/Cargo.stderr @@ -1,10 +1,10 @@ -error: Mismatching versions of `bevy` found, leafwing-input-manager used bevy version ^0.13 +error: multiple versions of the `bevy` crate found --> Cargo.toml:12:26 | 12 | leafwing-input-manager = "0.13" | ^^^^^^ | -help: Expected all crates to use `bevy` 0.14.2 +help: expected all crates to use `bevy` 0.14.2, but `leafwing-input-manager` uses `bevy` ^0.13 --> Cargo.toml:11:8 | 11 | bevy = { version = "0.14.2" } diff --git a/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/short_version_format/fail/Cargo.stderr b/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/short_version_format/fail/Cargo.stderr index 241a77b6..92192c29 100644 --- a/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/short_version_format/fail/Cargo.stderr +++ b/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/short_version_format/fail/Cargo.stderr @@ -1,10 +1,10 @@ -error: Mismatching versions of `bevy` found, leafwing-input-manager used bevy version ^0.13 +error: multiple versions of the `bevy` crate found --> Cargo.toml:12:26 | 12 | leafwing-input-manager = "0.13" | ^^^^^^ | -help: Expected all crates to use `bevy` 0.14.2 +help: expected all crates to use `bevy` 0.14.2, but `leafwing-input-manager` uses `bevy` ^0.13 --> Cargo.toml:11:8 | 11 | bevy = "0.14.2" diff --git a/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/with_feature/fail/Cargo.stderr b/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/with_feature/fail/Cargo.stderr index 69aa27e0..97daffc6 100644 --- a/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/with_feature/fail/Cargo.stderr +++ b/bevy_lint/tests/ui-cargo/duplicate_bevy_dependencies/with_feature/fail/Cargo.stderr @@ -1,10 +1,10 @@ -error: Mismatching versions of `bevy` found, leafwing-input-manager used bevy version ^0.13 +error: multiple versions of the `bevy` crate found --> Cargo.toml:12:26 | 12 | leafwing-input-manager = "0.13" | ^^^^^^ | -help: Expected all crates to use `bevy` 0.14.2 +help: expected all crates to use `bevy` 0.14.2, but `leafwing-input-manager` uses `bevy` ^0.13 --> Cargo.toml:11:8 | 11 | bevy = { version = "0.14.2", features = ["android_shared_stdcxx"] } diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/closures.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/closures.stderr index 060dc6b9..840b4f55 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/closures.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/closures.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut Commands` instead of a re-borrowed `Commands` --> tests/ui/borrowed_reborrowable/closures.rs:15:20 | 15 | let closure = |commands: &mut Commands| { - | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `Commands` instead: `mut commands: bevy::prelude::Commands<'_, '_>` + | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `Commands` instead: `mut commands: Commands` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/closures.rs:5:9 diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/commands.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/commands.stderr index da047b78..23b093e7 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/commands.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/commands.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut Commands` instead of a re-borrowed `Commands` --> tests/ui/borrowed_reborrowable/commands.rs:17:22 | 17 | fn mutable_reference(commands: &mut Commands) { - | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `Commands` instead: `mut commands: bevy::prelude::Commands<'_, '_>` + | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `Commands` instead: `mut commands: Commands` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/commands.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut Commands` instead of a re-borrowed `Commands` --> tests/ui/borrowed_reborrowable/commands.rs:23:33 | 23 | fn mutable_reference_return<'a>(_commands: &'a mut Commands) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Commands` instead: `mut _commands: bevy::prelude::Commands<'_, '_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Commands` instead: `mut _commands: Commands` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/deferred.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/deferred.stderr index 48b70fb1..8f3b612b 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/deferred.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/deferred.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut Deferred` instead of a re-borrowed `Deferred` --> tests/ui/borrowed_reborrowable/deferred.rs:17:22 | 17 | fn mutable_reference(_param: &mut Deferred) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Deferred` instead: `mut _param: bevy::prelude::Deferred<'_, bevy::bevy_ecs::world::CommandQueue>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Deferred` instead: `mut _param: Deferred` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/deferred.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut Deferred` instead of a re-borrowed `Deferred` --> tests/ui/borrowed_reborrowable/deferred.rs:23:33 | 23 | fn mutable_reference_return<'a>(_param: &'a mut Deferred) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Deferred` instead: `mut _param: bevy::prelude::Deferred<'_, bevy::bevy_ecs::world::CommandQueue>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Deferred` instead: `mut _param: Deferred` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/deferred_world.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/deferred_world.stderr index 209b35c8..c7c14c15 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/deferred_world.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/deferred_world.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut DeferredWorld` instead of a re-borrowed `DeferredWo --> tests/ui/borrowed_reborrowable/deferred_world.rs:17:22 | 17 | fn mutable_reference(_param: &mut DeferredWorld) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `DeferredWorld` instead: `mut _param: bevy::bevy_ecs::world::DeferredWorld<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `DeferredWorld` instead: `mut _param: DeferredWorld` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/deferred_world.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut DeferredWorld` instead of a re-borrowed `DeferredWo --> tests/ui/borrowed_reborrowable/deferred_world.rs:23:33 | 23 | fn mutable_reference_return<'a>(_param: &'a mut DeferredWorld) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `DeferredWorld` instead: `mut _param: bevy::bevy_ecs::world::DeferredWorld<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `DeferredWorld` instead: `mut _param: DeferredWorld` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/entity_commands.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/entity_commands.stderr index 89aa9e48..301d5bef 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/entity_commands.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/entity_commands.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut EntityCommands` instead of a re-borrowed `EntityCom --> tests/ui/borrowed_reborrowable/entity_commands.rs:17:22 | 17 | fn mutable_reference(_param: &mut EntityCommands) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityCommands` instead: `mut _param: bevy::prelude::EntityCommands<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityCommands` instead: `mut _param: EntityCommands` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/entity_commands.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut EntityCommands` instead of a re-borrowed `EntityCom --> tests/ui/borrowed_reborrowable/entity_commands.rs:23:33 | 23 | fn mutable_reference_return<'a>(_param: &'a mut EntityCommands) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityCommands` instead: `mut _param: bevy::prelude::EntityCommands<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityCommands` instead: `mut _param: EntityCommands` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/entity_mut.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/entity_mut.stderr index 59e5b8d7..f2300e71 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/entity_mut.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/entity_mut.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut EntityMut` instead of a re-borrowed `EntityMut` --> tests/ui/borrowed_reborrowable/entity_mut.rs:17:22 | 17 | fn mutable_reference(_param: &mut EntityMut) { - | ^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityMut` instead: `mut _param: bevy::prelude::EntityMut<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityMut` instead: `mut _param: EntityMut` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/entity_mut.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut EntityMut` instead of a re-borrowed `EntityMut` --> tests/ui/borrowed_reborrowable/entity_mut.rs:23:33 | 23 | fn mutable_reference_return<'a>(_param: &'a mut EntityMut) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityMut` instead: `mut _param: bevy::prelude::EntityMut<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `EntityMut` instead: `mut _param: EntityMut` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/filtered_entity_mut.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/filtered_entity_mut.stderr index f1c2ac89..1a1d971f 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/filtered_entity_mut.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/filtered_entity_mut.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut FilteredEntityMut` instead of a re-borrowed `Filter --> tests/ui/borrowed_reborrowable/filtered_entity_mut.rs:17:22 | 17 | fn mutable_reference(_param: &mut FilteredEntityMut) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `FilteredEntityMut` instead: `mut _param: bevy::bevy_ecs::world::FilteredEntityMut<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `FilteredEntityMut` instead: `mut _param: FilteredEntityMut` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/filtered_entity_mut.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut FilteredEntityMut` instead of a re-borrowed `Filter --> tests/ui/borrowed_reborrowable/filtered_entity_mut.rs:23:33 | 23 | fn mutable_reference_return<'a>(_param: &'a mut FilteredEntityMut) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `FilteredEntityMut` instead: `mut _param: bevy::bevy_ecs::world::FilteredEntityMut<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `FilteredEntityMut` instead: `mut _param: FilteredEntityMut` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/mut_typed.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/mut_typed.stderr index 6f139878..347c5add 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/mut_typed.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/mut_typed.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut Mut` instead of a re-borrowed `Mut` --> tests/ui/borrowed_reborrowable/mut_typed.rs:17:22 | 17 | fn mutable_reference(_param: &mut Mut) { - | ^^^^^^^^^^^^^^^^^^^^^^ help: use `Mut` instead: `mut _param: bevy::prelude::Mut<'_, bevy::prelude::Name>` + | ^^^^^^^^^^^^^^^^^^^^^^ help: use `Mut` instead: `mut _param: Mut` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/mut_typed.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut Mut` instead of a re-borrowed `Mut` --> tests/ui/borrowed_reborrowable/mut_typed.rs:23:33 | 23 | fn mutable_reference_return<'a>(_param: &'a mut Mut) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Mut` instead: `mut _param: bevy::prelude::Mut<'_, bevy::prelude::Name>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Mut` instead: `mut _param: Mut` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/mut_untyped.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/mut_untyped.stderr index 871975df..0abc0b6c 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/mut_untyped.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/mut_untyped.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut MutUntyped` instead of a re-borrowed `MutUntyped` --> tests/ui/borrowed_reborrowable/mut_untyped.rs:18:22 | 18 | fn mutable_reference(_param: &mut MutUntyped) { - | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `MutUntyped` instead: `mut _param: bevy::bevy_ecs::change_detection::MutUntyped<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `MutUntyped` instead: `mut _param: MutUntyped` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/mut_untyped.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut MutUntyped` instead of a re-borrowed `MutUntyped` --> tests/ui/borrowed_reborrowable/mut_untyped.rs:24:33 | 24 | fn mutable_reference_return<'a>(_param: &'a mut MutUntyped) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `MutUntyped` instead: `mut _param: bevy::bevy_ecs::change_detection::MutUntyped<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `MutUntyped` instead: `mut _param: MutUntyped` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/non_send_mut.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/non_send_mut.stderr index 0a79bf4c..dd919f55 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/non_send_mut.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/non_send_mut.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut NonSendMut` instead of a re-borrowed `NonSendMut` --> tests/ui/borrowed_reborrowable/non_send_mut.rs:19:22 | 19 | fn mutable_reference(_param: &mut NonSendMut) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `NonSendMut` instead: `mut _param: bevy::prelude::NonSendMut<'_, MyResource>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `NonSendMut` instead: `mut _param: NonSendMut` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/non_send_mut.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut NonSendMut` instead of a re-borrowed `NonSendMut` --> tests/ui/borrowed_reborrowable/non_send_mut.rs:25:33 | 25 | fn mutable_reference_return<'a>(_param: &'a mut NonSendMut) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `NonSendMut` instead: `mut _param: bevy::prelude::NonSendMut<'_, MyResource>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `NonSendMut` instead: `mut _param: NonSendMut` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/ptr_mut.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/ptr_mut.stderr index 979b7f98..6cb48b76 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/ptr_mut.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/ptr_mut.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut PtrMut` instead of a re-borrowed `PtrMut` --> tests/ui/borrowed_reborrowable/ptr_mut.rs:17:22 | 17 | fn mutable_reference(_param: &mut PtrMut) { - | ^^^^^^^^^^^^^^^^^^^ help: use `PtrMut` instead: `mut _param: bevy::bevy_ptr::PtrMut<'_>` + | ^^^^^^^^^^^^^^^^^^^ help: use `PtrMut` instead: `mut _param: PtrMut` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/ptr_mut.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut PtrMut` instead of a re-borrowed `PtrMut` --> tests/ui/borrowed_reborrowable/ptr_mut.rs:23:33 | 23 | fn mutable_reference_return<'a>(_param: &'a mut PtrMut) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^ help: use `PtrMut` instead: `mut _param: bevy::bevy_ptr::PtrMut<'_>` + | ^^^^^^^^^^^^^^^^^^^^^^ help: use `PtrMut` instead: `mut _param: PtrMut` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/query.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/query.stderr index a064dba9..df18fe55 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/query.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/query.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut Query` instead of a re-borrowed `Query` --> tests/ui/borrowed_reborrowable/query.rs:17:22 | 17 | fn mutable_reference(query: &mut Query) { - | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Query` instead: `mut query: bevy::prelude::Query<'_, '_, bevy::prelude::Entity>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Query` instead: `mut query: Query` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/query.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut Query` instead of a re-borrowed `Query` --> tests/ui/borrowed_reborrowable/query.rs:23:33 | 23 | fn mutable_reference_return<'a>(_query: &'a mut Query) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Query` instead: `mut _query: bevy::prelude::Query<'_, '_, bevy::prelude::Entity>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `Query` instead: `mut _query: Query` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/borrowed_reborrowable/resource.stderr b/bevy_lint/tests/ui/borrowed_reborrowable/resource.stderr index 285433f1..3d1f1c6d 100644 --- a/bevy_lint/tests/ui/borrowed_reborrowable/resource.stderr +++ b/bevy_lint/tests/ui/borrowed_reborrowable/resource.stderr @@ -2,7 +2,7 @@ error: parameter takes `&mut ResMut` instead of a re-borrowed `ResMut` --> tests/ui/borrowed_reborrowable/resource.rs:19:22 | 19 | fn mutable_reference(_res: &mut ResMut) { - | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `ResMut` instead: `mut _res: bevy::prelude::ResMut<'_, Data>` + | ^^^^^^^^^^^^^^^^^^^^^^^ help: use `ResMut` instead: `mut _res: ResMut` | note: the lint level is defined here --> tests/ui/borrowed_reborrowable/resource.rs:5:9 @@ -14,7 +14,7 @@ error: parameter takes `&mut ResMut` instead of a re-borrowed `ResMut` --> tests/ui/borrowed_reborrowable/resource.rs:25:33 | 25 | fn mutable_reference_return<'a>(_res: &'a mut ResMut) -> usize { - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `ResMut` instead: `mut _res: bevy::prelude::ResMut<'_, Data>` + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: use `ResMut` instead: `mut _res: ResMut` error: aborting due to 2 previous errors diff --git a/bevy_lint/tests/ui/zst_query/query.rs b/bevy_lint/tests/ui/zst_query/query.rs index f0567264..a57a6c84 100644 --- a/bevy_lint/tests/ui/zst_query/query.rs +++ b/bevy_lint/tests/ui/zst_query/query.rs @@ -49,19 +49,19 @@ fn main() { fn unit_query(_query: Query<()>) {} //~| HELP: consider using a filter instead: `With` -//~v ERROR: query for a zero-sized type +//~v ERROR: queried a zero-sized type fn immutable_zst(_query: Query<&ZST>) {} //~| HELP: consider using a filter instead: `With` -//~v ERROR: query for a zero-sized type +//~v ERROR: queried a zero-sized type fn mutable_zst(_query: Query<&mut ZST>) {} //~| HELP: consider using a filter instead: `With` -//~v ERROR: query for a zero-sized type +//~v ERROR: queried a zero-sized type fn immutable_zst_tuple(_query: Query<(Entity, &ZST)>) {} //~| HELP: consider using a filter instead: `With` -//~v ERROR: query for a zero-sized type +//~v ERROR: queried a zero-sized type fn mutable_zst_tuple(_query: Query<(Entity, &mut ZST)>) {} fn immutable_query(_query: Query<&NonZST>) {} @@ -73,11 +73,11 @@ fn generic_immutable_query(_query: Query<&Gene fn generic_mutable_query(_query: Query<&mut Generic>) {} //~| HELP: consider using a filter instead: `With>` -//~v ERROR: query for a zero-sized type +//~v ERROR: queried a zero-sized type fn generic_immutable_zst(_query: Query<&Generic>) {} //~| HELP: consider using a filter instead: `With>` -//~v ERROR: query for a zero-sized type +//~v ERROR: queried a zero-sized type fn generic_mutable_zst(_query: Query<&mut Generic>) {} fn immutable_query_tuple(_query: Query<(Entity, &NonZST)>) {} @@ -85,5 +85,5 @@ fn immutable_query_tuple(_query: Query<(Entity, &NonZST)>) {} fn mutable_query_tuple(_query: Query<(Entity, &mut NonZST)>) {} //~| HELP: consider using a filter instead: `With>` -//~v ERROR: query for a zero-sized type +//~v ERROR: queried a zero-sized type fn phantom_data_query(_query: Query<&Phantom>) {} diff --git a/bevy_lint/tests/ui/zst_query/query.stderr b/bevy_lint/tests/ui/zst_query/query.stderr index b3291dd1..0e819f73 100644 --- a/bevy_lint/tests/ui/zst_query/query.stderr +++ b/bevy_lint/tests/ui/zst_query/query.stderr @@ -1,63 +1,63 @@ -error: query for a zero-sized type +error: queried a zero-sized type --> tests/ui/zst_query/query.rs:53:32 | 53 | fn immutable_zst(_query: Query<&ZST>) {} | ^^^^ | - = help: consider using a filter instead: `With` + = help: zero-sized types do not retrieve any data, consider using a filter instead: `With` note: the lint level is defined here --> tests/ui/zst_query/query.rs:5:9 | 5 | #![deny(bevy::zst_query)] | ^^^^^^^^^^^^^^^ -error: query for a zero-sized type +error: queried a zero-sized type --> tests/ui/zst_query/query.rs:57:30 | 57 | fn mutable_zst(_query: Query<&mut ZST>) {} | ^^^^^^^^ | - = help: consider using a filter instead: `With` + = help: zero-sized types do not retrieve any data, consider using a filter instead: `With` -error: query for a zero-sized type +error: queried a zero-sized type --> tests/ui/zst_query/query.rs:61:47 | 61 | fn immutable_zst_tuple(_query: Query<(Entity, &ZST)>) {} | ^^^^ | - = help: consider using a filter instead: `With` + = help: zero-sized types do not retrieve any data, consider using a filter instead: `With` -error: query for a zero-sized type +error: queried a zero-sized type --> tests/ui/zst_query/query.rs:65:45 | 65 | fn mutable_zst_tuple(_query: Query<(Entity, &mut ZST)>) {} | ^^^^^^^^ | - = help: consider using a filter instead: `With` + = help: zero-sized types do not retrieve any data, consider using a filter instead: `With` -error: query for a zero-sized type +error: queried a zero-sized type --> tests/ui/zst_query/query.rs:77:40 | 77 | fn generic_immutable_zst(_query: Query<&Generic>) {} | ^^^^^^^^^^^^^ | - = help: consider using a filter instead: `With>` + = help: zero-sized types do not retrieve any data, consider using a filter instead: `With>` -error: query for a zero-sized type +error: queried a zero-sized type --> tests/ui/zst_query/query.rs:81:38 | 81 | fn generic_mutable_zst(_query: Query<&mut Generic>) {} | ^^^^^^^^^^^^^^^^^ | - = help: consider using a filter instead: `With>` + = help: zero-sized types do not retrieve any data, consider using a filter instead: `With>` -error: query for a zero-sized type +error: queried a zero-sized type --> tests/ui/zst_query/query.rs:89:37 | 89 | fn phantom_data_query(_query: Query<&Phantom>) {} | ^^^^^^^^^^^^^^^^ | - = help: consider using a filter instead: `With>` + = help: zero-sized types do not retrieve any data, consider using a filter instead: `With>` error: aborting due to 7 previous errors