diff --git a/Cargo.lock b/Cargo.lock index 9db703bc14205..9cf6ad835a3f4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "Inflector" @@ -6077,9 +6077,9 @@ dependencies = [ [[package]] name = "shadow-rs" -version = "0.23.0" +version = "0.35.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "970538704756fd0bb4ec8cb89f80674afb661e7c0fe716f9ba5be57717742300" +checksum = "fca0e9bdc073d7173ba993fb7886477af5df75588b57afcb4b96f21911ab0bfa" dependencies = [ "const_format", "is_debug", @@ -8414,7 +8414,7 @@ dependencies = [ [[package]] name = "triomphe" version = "0.1.12" -source = "git+https://github.com/sokra/triomphe?branch=sokra/unstable#9c591aba443d01a9f525fe9b4a671359d1b455d2" +source = "git+https://github.com/sokra/triomphe?branch=sokra%2Funstable#9c591aba443d01a9f525fe9b4a671359d1b455d2" dependencies = [ "serde", "stable_deref_trait", @@ -9403,12 +9403,22 @@ dependencies = [ [[package]] name = "tzdb" -version = "0.5.7" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec758958f2fb5069cd7fae385be95cc8eceb8cdfd270c7d14de6034f0108d99e" +checksum = "1b580f6b365fa89f5767cdb619a55d534d04a4e14c2d7e5b9a31e94598687fb1" dependencies = [ "iana-time-zone", "tz-rs", + "tzdb_data", +] + +[[package]] +name = "tzdb_data" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "654c1ec546942ce0594e8d220e6b8e3899e0a0a8fe70ddd54d32a376dfefe3f8" +dependencies = [ + "tz-rs", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index b07a827b215e4..f32f3c4484826 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -191,7 +191,7 @@ serde_path_to_error = "0.1.9" serde_qs = "0.11.0" serde_with = "2.3.2" serde_yaml = "0.9.17" -shadow-rs = { version = "0.23.0", default-features = false, features = [ +shadow-rs = { version = "0.35.0", default-features = false, features = [ "tzdb", ] } smallvec = { version = "1.13.1", features = [ diff --git a/crates/napi/src/lib.rs b/crates/napi/src/lib.rs index f0311809b3dad..50561af2f7056 100644 --- a/crates/napi/src/lib.rs +++ b/crates/napi/src/lib.rs @@ -29,6 +29,7 @@ DEALINGS IN THE SOFTWARE. #![recursion_limit = "2048"] //#![deny(clippy::all)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #[macro_use] extern crate napi_derive; diff --git a/crates/napi/src/next_api/project.rs b/crates/napi/src/next_api/project.rs index df20d341d7094..ee2c720dac863 100644 --- a/crates/napi/src/next_api/project.rs +++ b/crates/napi/src/next_api/project.rs @@ -931,6 +931,7 @@ impl From for NapiUpdateInfo { } /// Subscribes to lifecycle events of the compilation. +/// /// Emits an [UpdateMessage::Start] event when any computation starts. /// Emits an [UpdateMessage::End] event when there was no computation for the /// specified time (`aggregation_ms`). The [UpdateMessage::End] event contains diff --git a/crates/next-api/src/lib.rs b/crates/next-api/src/lib.rs index 1673bbdf166d3..063d0ccb7c6ea 100644 --- a/crates/next-api/src/lib.rs +++ b/crates/next-api/src/lib.rs @@ -1,5 +1,6 @@ #![feature(future_join)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![feature(impl_trait_in_assoc_type)] mod app; diff --git a/crates/next-build-test/src/lib.rs b/crates/next-build-test/src/lib.rs index 9d3ac8bccd78c..6636b418d237f 100644 --- a/crates/next-build-test/src/lib.rs +++ b/crates/next-build-test/src/lib.rs @@ -1,6 +1,7 @@ #![feature(future_join)] #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use std::{str::FromStr, time::Instant}; diff --git a/crates/next-build/src/lib.rs b/crates/next-build/src/lib.rs index 84b223d0d8dd8..e796f4322c79c 100644 --- a/crates/next-build/src/lib.rs +++ b/crates/next-build/src/lib.rs @@ -1,5 +1,6 @@ #![feature(type_alias_impl_trait)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod build_options; diff --git a/crates/next-core/src/lib.rs b/crates/next-core/src/lib.rs index 5a91cc900a09c..dba3f12602e76 100644 --- a/crates/next-core/src/lib.rs +++ b/crates/next-core/src/lib.rs @@ -2,6 +2,7 @@ #![feature(str_split_remainder)] #![feature(impl_trait_in_assoc_type)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![feature(iter_intersperse)] mod app_page_loader_tree; diff --git a/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs b/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs index 871a655c3f263..d7411d106b137 100644 --- a/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs +++ b/crates/next-core/src/next_client_reference/ecmascript_client_reference/ecmascript_client_reference_module.rs @@ -8,7 +8,7 @@ use turbopack_core::{ }; use turbopack_ecmascript::chunk::EcmascriptChunkPlaceable; -/// An [EcmascriptClientReferenceModule] is a marker module, used by the +/// A marker module used by the /// [super::ecmascript_client_reference_proxy_module::EcmascriptClientReferenceProxyModule] to /// indicate which client reference should appear in the client reference manifest. #[turbo_tasks::value] diff --git a/crates/next-core/src/next_dynamic/dynamic_transition.rs b/crates/next-core/src/next_dynamic/dynamic_transition.rs index 6cdd94da4537e..335ed9d592e1e 100644 --- a/crates/next-core/src/next_dynamic/dynamic_transition.rs +++ b/crates/next-core/src/next_dynamic/dynamic_transition.rs @@ -6,7 +6,9 @@ use turbopack_core::{context::ProcessResult, reference_type::ReferenceType, sour use super::NextDynamicEntryModule; /// This transition is used to create the marker asset for a next/dynamic -/// import. This will get picked up during module processing and will be used to +/// import. +/// +/// This will get picked up during module processing and will be used to /// create the dynamic entry, and the dynamic manifest entry. #[turbo_tasks::value] pub struct NextDynamicTransition { diff --git a/crates/next-core/src/next_edge/route_regex.rs b/crates/next-core/src/next_edge/route_regex.rs index d07c2ca24b650..10365453941d6 100644 --- a/crates/next-core/src/next_edge/route_regex.rs +++ b/crates/next-core/src/next_edge/route_regex.rs @@ -245,10 +245,11 @@ fn get_named_parametrized_route( /// This function extends `getRouteRegex` generating also a named regexp where /// each group is named along with a routeKeys object that indexes the assigned -/// named group with its corresponding key. When the routeKeys need to be -/// prefixed to uniquely identify internally the "prefixRouteKey" arg should -/// be "true" currently this is only the case when creating the routes-manifest -/// during the build +/// named group with its corresponding key. +/// +/// When the routeKeys need to be prefixed to uniquely identify internally the +/// "prefixRouteKey" arg should be "true" currently this is only the case when +/// creating the routes-manifest during the build pub fn get_named_route_regex(normalized_route: &str) -> NamedRouteRegex { let (parameterized_route, route_keys) = get_named_parametrized_route(normalized_route, false); let regex = get_route_regex(normalized_route); diff --git a/crates/next-core/src/next_telemetry.rs b/crates/next-core/src/next_telemetry.rs index af433b84ae106..58202bb093a7e 100644 --- a/crates/next-core/src/next_telemetry.rs +++ b/crates/next-core/src/next_telemetry.rs @@ -3,7 +3,10 @@ use turbo_tasks::{RcStr, Vc}; use turbopack_core::diagnostics::{Diagnostic, DiagnosticPayload}; /// A structure that keeps track of whether a particular Next.js feature is -/// enabled for the telemetry. The original implementation code can be found at the following [link](https://github.com/vercel/next.js/blob/9da305fe320b89ee2f8c3cfb7ecbf48856368913/packages/next/src/build/webpack-config.ts#L2516). +/// enabled for the telemetry. +/// +/// The original implementation code can be found +/// [here](https://github.com/vercel/next.js/blob/9da305fe320b89ee2f8c3cfb7ecbf48856368913/packages/next/src/build/webpack-config.ts#L2516). #[turbo_tasks::value(shared)] pub struct NextFeatureTelemetry { pub event_name: RcStr, diff --git a/crates/next-custom-transforms/src/lib.rs b/crates/next-custom-transforms/src/lib.rs index 75e3728b7c947..1a51df9fed1cf 100644 --- a/crates/next-custom-transforms/src/lib.rs +++ b/crates/next-custom-transforms/src/lib.rs @@ -30,6 +30,7 @@ DEALINGS IN THE SOFTWARE. #![deny(clippy::all)] #![feature(box_patterns)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod chain_transforms; pub mod transforms; diff --git a/crates/next-custom-transforms/src/transforms/fonts/find_functions_outside_module_scope.rs b/crates/next-custom-transforms/src/transforms/fonts/find_functions_outside_module_scope.rs index 9d20459e501e0..bdfc46e001619 100644 --- a/crates/next-custom-transforms/src/transforms/fonts/find_functions_outside_module_scope.rs +++ b/crates/next-custom-transforms/src/transforms/fonts/find_functions_outside_module_scope.rs @@ -9,7 +9,7 @@ pub struct FindFunctionsOutsideModuleScope<'a> { pub state: &'a super::State, } -impl<'a> Visit for FindFunctionsOutsideModuleScope<'a> { +impl Visit for FindFunctionsOutsideModuleScope<'_> { noop_visit_type!(); fn visit_ident(&mut self, ident: &Ident) { diff --git a/crates/next-custom-transforms/src/transforms/fonts/font_functions_collector.rs b/crates/next-custom-transforms/src/transforms/fonts/font_functions_collector.rs index 82d770fd65dc8..6836907072085 100644 --- a/crates/next-custom-transforms/src/transforms/fonts/font_functions_collector.rs +++ b/crates/next-custom-transforms/src/transforms/fonts/font_functions_collector.rs @@ -12,7 +12,7 @@ pub struct FontFunctionsCollector<'a> { pub state: &'a mut super::State, } -impl<'a> Visit for FontFunctionsCollector<'a> { +impl Visit for FontFunctionsCollector<'_> { noop_visit_type!(); fn visit_import_decl(&mut self, import_decl: &ImportDecl) { diff --git a/crates/next-custom-transforms/src/transforms/fonts/font_imports_generator.rs b/crates/next-custom-transforms/src/transforms/fonts/font_imports_generator.rs index 941626536c5d9..b772a7f02d289 100644 --- a/crates/next-custom-transforms/src/transforms/fonts/font_imports_generator.rs +++ b/crates/next-custom-transforms/src/transforms/fonts/font_imports_generator.rs @@ -13,7 +13,7 @@ pub struct FontImportsGenerator<'a> { pub relative_path: &'a str, } -impl<'a> FontImportsGenerator<'a> { +impl FontImportsGenerator<'_> { fn check_call_expr( &mut self, call_expr: &CallExpr, @@ -145,7 +145,7 @@ impl<'a> FontImportsGenerator<'a> { } } -impl<'a> Visit for FontImportsGenerator<'a> { +impl Visit for FontImportsGenerator<'_> { noop_visit_type!(); fn visit_module_item(&mut self, item: &ModuleItem) { diff --git a/crates/next-custom-transforms/src/transforms/react_server_components.rs b/crates/next-custom-transforms/src/transforms/react_server_components.rs index d53f0a3e4661f..181efc14ac97c 100644 --- a/crates/next-custom-transforms/src/transforms/react_server_components.rs +++ b/crates/next-custom-transforms/src/transforms/react_server_components.rs @@ -840,7 +840,6 @@ impl ReactServerComponentValidator { /// dynamic(() => import(...), { ssr: true }) // ✅ /// dynamic(() => import(...), { ssr: false }) // ❌ /// ``` - fn check_for_next_ssr_false(&self, node: &CallExpr) -> Option<()> { if !self.is_callee_next_dynamic(&node.callee) { return None; @@ -934,8 +933,10 @@ impl Visit for ReactServerComponentValidator { /// Returns a visitor to assert react server components without any transform. /// This is for the Turbopack which have its own transform phase for the server -/// components proxy. Also this returns a visitor instead of fold, performs -/// better than running whole transform as a folder. +/// components proxy. +/// +/// This also returns a visitor instead of fold and performs better than running +/// whole transform as a folder. pub fn server_components_assert( filename: FileName, config: Config, diff --git a/rust-toolchain.toml b/rust-toolchain.toml index a37d1352a6fab..41fef56887c45 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "nightly-2024-08-01" +channel = "nightly-2024-10-04" components = ["rustfmt", "clippy", "rust-analyzer"] profile = "minimal" diff --git a/turbopack/crates/node-file-trace/src/lib.rs b/turbopack/crates/node-file-trace/src/lib.rs index 387c95240ac2b..d36c75ae8b794 100644 --- a/turbopack/crates/node-file-trace/src/lib.rs +++ b/turbopack/crates/node-file-trace/src/lib.rs @@ -1,5 +1,6 @@ #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] mod nft_json; diff --git a/turbopack/crates/node-file-trace/src/main.rs b/turbopack/crates/node-file-trace/src/main.rs index 77767706c2df9..12f98da9c6774 100644 --- a/turbopack/crates/node-file-trace/src/main.rs +++ b/turbopack/crates/node-file-trace/src/main.rs @@ -1,4 +1,5 @@ #![feature(min_specialization)] +#![allow(clippy::needless_return)] // clippy bug causes false positive use std::sync::Arc; @@ -26,5 +27,6 @@ async fn main() -> Result<()> { println!("{}", file); } } + Ok(()) } diff --git a/turbopack/crates/turbo-static/src/call_resolver.rs b/turbopack/crates/turbo-static/src/call_resolver.rs index aecd8d60bfc34..fd18d7361c2ef 100644 --- a/turbopack/crates/turbo-static/src/call_resolver.rs +++ b/turbopack/crates/turbo-static/src/call_resolver.rs @@ -12,7 +12,7 @@ pub struct CallResolver<'a> { } /// On drop, serialize the state to disk -impl<'a> Drop for CallResolver<'a> { +impl Drop for CallResolver<'_> { fn drop(&mut self) { let file = OpenOptions::new() .create(true) diff --git a/turbopack/crates/turbo-static/src/main.rs b/turbopack/crates/turbo-static/src/main.rs index a3eece260d62c..e2cb14266657e 100644 --- a/turbopack/crates/turbo-static/src/main.rs +++ b/turbopack/crates/turbo-static/src/main.rs @@ -1,5 +1,3 @@ -#![feature(entry_insert)] - use std::{ collections::{HashMap, HashSet}, error::Error, diff --git a/turbopack/crates/turbo-tasks-auto-hash-map/src/map.rs b/turbopack/crates/turbo-tasks-auto-hash-map/src/map.rs index 3e1c604b3fee1..595a16b69e82c 100644 --- a/turbopack/crates/turbo-tasks-auto-hash-map/src/map.rs +++ b/turbopack/crates/turbo-tasks-auto-hash-map/src/map.rs @@ -410,7 +410,7 @@ impl<'a, K, V> Iterator for Iter<'a, K, V> { } } -impl<'a, K, V> Clone for Iter<'a, K, V> { +impl Clone for Iter<'_, K, V> { fn clone(&self) -> Self { match self { Iter::List(iter) => Iter::List(iter.clone()), @@ -590,7 +590,7 @@ impl<'a, K: Eq + Hash, V, H: BuildHasher, const I: usize> OccupiedEntry<'a, K, V } } -impl<'a, K: Eq + Hash, V, H: BuildHasher + Default, const I: usize> OccupiedEntry<'a, K, V, H, I> { +impl OccupiedEntry<'_, K, V, H, I> { /// see [HashMap::OccupiedEntry::remove](https://doc.rust-lang.org/std/collections/hash_map/enum.OccupiedEntry.html#method.remove) pub fn remove(self) -> V { match self { @@ -663,9 +663,7 @@ impl<'a, K: Eq + Hash, V, H: BuildHasher, const I: usize> OccupiedRawEntry<'a, K } } -impl<'a, K: Eq + Hash, V, H: BuildHasher + Default, const I: usize> - OccupiedRawEntry<'a, K, V, H, I> -{ +impl OccupiedRawEntry<'_, K, V, H, I> { /// see [HashMap::OccupiedEntry::remove](https://doc.rust-lang.org/std/collections/hash_map/enum.OccupiedEntry.html#method.remove) pub fn remove(self) -> V { match self { diff --git a/turbopack/crates/turbo-tasks-auto-hash-map/src/set.rs b/turbopack/crates/turbo-tasks-auto-hash-map/src/set.rs index 3a74b55044e43..cd1fa8c0c6799 100644 --- a/turbopack/crates/turbo-tasks-auto-hash-map/src/set.rs +++ b/turbopack/crates/turbo-tasks-auto-hash-map/src/set.rs @@ -141,7 +141,7 @@ impl<'a, K> Iterator for Iter<'a, K> { } } -impl<'a, K> Clone for Iter<'a, K> { +impl Clone for Iter<'_, K> { fn clone(&self) -> Self { Self(self.0.clone()) } diff --git a/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs b/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs index c8a9697a52d58..63bb787963d4c 100644 --- a/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs +++ b/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs @@ -204,7 +204,7 @@ pub(crate) struct OperationGuard<'a> { backend: &'a TurboTasksBackend, } -impl<'a> Drop for OperationGuard<'a> { +impl Drop for OperationGuard<'_> { fn drop(&mut self) { let fetch_sub = self .backend diff --git a/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs b/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs index f1f0952861d8a..74dbe91f67e46 100644 --- a/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs +++ b/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs @@ -135,7 +135,7 @@ pub struct TaskGuard<'a> { backend: &'a TurboTasksBackend, } -impl<'a> Debug for TaskGuard<'a> { +impl Debug for TaskGuard<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { let mut d = f.debug_struct("TaskGuard"); d.field("task_id", &self.task_id); @@ -149,7 +149,7 @@ impl<'a> Debug for TaskGuard<'a> { } } -impl<'a> TaskGuard<'a> { +impl TaskGuard<'_> { pub fn id(&self) -> TaskId { self.task_id } diff --git a/turbopack/crates/turbo-tasks-backend/src/backend/storage.rs b/turbopack/crates/turbo-tasks-backend/src/backend/storage.rs index 7a3006624c93c..b5cb827b2a179 100644 --- a/turbopack/crates/turbo-tasks-backend/src/backend/storage.rs +++ b/turbopack/crates/turbo-tasks-backend/src/backend/storage.rs @@ -229,7 +229,7 @@ where inner: RefMut<'a, K, InnerStorage, BuildHasherDefault>, } -impl<'a, K, T> Deref for StorageWriteGuard<'a, K, T> +impl Deref for StorageWriteGuard<'_, K, T> where T: KeyValuePair, T::Key: Indexed, @@ -242,7 +242,7 @@ where } } -impl<'a, K, T> DerefMut for StorageWriteGuard<'a, K, T> +impl DerefMut for StorageWriteGuard<'_, K, T> where T: KeyValuePair, T::Key: Indexed, diff --git a/turbopack/crates/turbo-tasks-backend/src/lib.rs b/turbopack/crates/turbo-tasks-backend/src/lib.rs index c7b5fe1832ad1..488754fc8f39d 100644 --- a/turbopack/crates/turbo-tasks-backend/src/lib.rs +++ b/turbopack/crates/turbo-tasks-backend/src/lib.rs @@ -1,3 +1,7 @@ +// TODO: Remove when persistent cache stack is fully landed +// https://linear.app/vercel/issue/PACK-3289 +#![allow(dead_code)] + mod backend; mod data; mod utils; diff --git a/turbopack/crates/turbo-tasks-backend/src/utils/dash_map_multi.rs b/turbopack/crates/turbo-tasks-backend/src/utils/dash_map_multi.rs index 65d630499fcdf..bd6b4f32fa621 100644 --- a/turbopack/crates/turbo-tasks-backend/src/utils/dash_map_multi.rs +++ b/turbopack/crates/turbo-tasks-backend/src/utils/dash_map_multi.rs @@ -24,14 +24,10 @@ where }, } -unsafe impl<'a, K: Eq + Hash + Sync, V: Sync, S: BuildHasher> Send for RefMut<'a, K, V, S> {} -unsafe impl<'a, K: Eq + Hash + Sync, V: Sync, S: BuildHasher> Sync for RefMut<'a, K, V, S> {} - -impl<'a, K: Eq + Hash, V, S: BuildHasher> RefMut<'a, K, V, S> { - pub fn key(&self) -> &K { - self.pair().0 - } +unsafe impl Send for RefMut<'_, K, V, S> {} +unsafe impl Sync for RefMut<'_, K, V, S> {} +impl RefMut<'_, K, V, S> { pub fn value(&self) -> &V { self.pair().1 } @@ -57,7 +53,7 @@ impl<'a, K: Eq + Hash, V, S: BuildHasher> RefMut<'a, K, V, S> { } } -impl<'a, K: Eq + Hash, V, S: BuildHasher> Deref for RefMut<'a, K, V, S> { +impl Deref for RefMut<'_, K, V, S> { type Target = V; fn deref(&self) -> &V { @@ -65,7 +61,7 @@ impl<'a, K: Eq + Hash, V, S: BuildHasher> Deref for RefMut<'a, K, V, S> { } } -impl<'a, K: Eq + Hash, V, S: BuildHasher> DerefMut for RefMut<'a, K, V, S> { +impl DerefMut for RefMut<'_, K, V, S> { fn deref_mut(&mut self) -> &mut V { self.value_mut() } diff --git a/turbopack/crates/turbo-tasks-build/src/lib.rs b/turbopack/crates/turbo-tasks-build/src/lib.rs index 80d882abd56f5..0890594afb8bd 100644 --- a/turbopack/crates/turbo-tasks-build/src/lib.rs +++ b/turbopack/crates/turbo-tasks-build/src/lib.rs @@ -228,7 +228,7 @@ struct RegisterContext<'a> { values: &'a mut HashMap, } -impl<'a> RegisterContext<'a> { +impl RegisterContext<'_> { fn process_item(&mut self, item: &Item) -> Result<()> { match item { Item::Enum(enum_item) => self.process_enum(enum_item), @@ -437,7 +437,7 @@ impl<'a> RegisterContext<'a> { } } -impl<'a> RegisterContext<'a> { +impl RegisterContext<'_> { fn get_global_name(&self, parts: &[&Ident]) -> String { format!( "r##\"{}{}::{}\"##", diff --git a/turbopack/crates/turbo-tasks-bytes/src/lib.rs b/turbopack/crates/turbo-tasks-bytes/src/lib.rs index 2576a5bcfe784..2d0818847e7a7 100644 --- a/turbopack/crates/turbo-tasks-bytes/src/lib.rs +++ b/turbopack/crates/turbo-tasks-bytes/src/lib.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod bytes; pub mod stream; diff --git a/turbopack/crates/turbo-tasks-env/src/lib.rs b/turbopack/crates/turbo-tasks-env/src/lib.rs index 285d8f82a7a55..b1b359e3499b7 100644 --- a/turbopack/crates/turbo-tasks-env/src/lib.rs +++ b/turbopack/crates/turbo-tasks-env/src/lib.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] mod command_line; mod custom; diff --git a/turbopack/crates/turbo-tasks-fetch/src/lib.rs b/turbopack/crates/turbo-tasks-fetch/src/lib.rs index c4f3e12e0f164..24fa58b957019 100644 --- a/turbopack/crates/turbo-tasks-fetch/src/lib.rs +++ b/turbopack/crates/turbo-tasks-fetch/src/lib.rs @@ -1,5 +1,6 @@ #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use anyhow::Result; use turbo_tasks::{RcStr, Vc}; diff --git a/turbopack/crates/turbo-tasks-fetch/tests/fetch.rs b/turbopack/crates/turbo-tasks-fetch/tests/fetch.rs index 5f4057dd571f8..8c83bf091aa22 100644 --- a/turbopack/crates/turbo-tasks-fetch/tests/fetch.rs +++ b/turbopack/crates/turbo-tasks-fetch/tests/fetch.rs @@ -1,3 +1,4 @@ +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this #![cfg(test)] use turbo_tasks::Vc; diff --git a/turbopack/crates/turbo-tasks-fs/examples/hash_directory.rs b/turbopack/crates/turbo-tasks-fs/examples/hash_directory.rs index 5efbdb7263a66..505931e29c03a 100644 --- a/turbopack/crates/turbo-tasks-fs/examples/hash_directory.rs +++ b/turbopack/crates/turbo-tasks-fs/examples/hash_directory.rs @@ -1,3 +1,4 @@ +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this #![feature(trivial_bounds)] use std::{ diff --git a/turbopack/crates/turbo-tasks-fs/examples/hash_glob.rs b/turbopack/crates/turbo-tasks-fs/examples/hash_glob.rs index 507b56e6210da..1bdc1029e1f03 100644 --- a/turbopack/crates/turbo-tasks-fs/examples/hash_glob.rs +++ b/turbopack/crates/turbo-tasks-fs/examples/hash_glob.rs @@ -1,4 +1,5 @@ #![feature(trivial_bounds)] +#![allow(clippy::needless_return)] // clippy false positive use std::{ collections::BTreeMap, diff --git a/turbopack/crates/turbo-tasks-fs/src/lib.rs b/turbopack/crates/turbo-tasks-fs/src/lib.rs index 10f5342081d7d..f000757d464eb 100644 --- a/turbopack/crates/turbo-tasks-fs/src/lib.rs +++ b/turbopack/crates/turbo-tasks-fs/src/lib.rs @@ -1,3 +1,4 @@ +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this #![feature(trivial_bounds)] #![feature(hash_extract_if)] #![feature(min_specialization)] @@ -5,6 +6,7 @@ #![feature(io_error_more)] #![feature(round_char_boundary)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(clippy::mutable_key_type)] pub mod attach; @@ -1826,7 +1828,7 @@ mod mime_option_serde { { struct Visitor; - impl<'de> de::Visitor<'de> for Visitor { + impl de::Visitor<'_> for Visitor { type Value = Option; fn expecting(&self, formatter: &mut fmt::Formatter) -> fmt::Result { diff --git a/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs b/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs index 4103247c6a409..4b9ae10fb8ac2 100644 --- a/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs +++ b/turbopack/crates/turbo-tasks-fs/src/mutex_map.rs @@ -61,7 +61,7 @@ pub struct MutexMapGuard<'a, K: Eq + Hash> { key: Option, } -impl<'a, K: Eq + Hash> Drop for MutexMapGuard<'a, K> { +impl Drop for MutexMapGuard<'_, K> { fn drop(&mut self) { if let Some(key) = self.key.take() { let mut map = self.map.map.lock(); @@ -94,7 +94,7 @@ impl Serialize for MutexMap { impl<'de, K> Deserialize<'de> for MutexMap { fn deserialize>(deserializer: D) -> Result { struct Visitor(PhantomData>); - impl<'de, K> serde::de::Visitor<'de> for Visitor { + impl serde::de::Visitor<'_> for Visitor { type Value = MutexMap; fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { formatter.write_str("a unit") diff --git a/turbopack/crates/turbo-tasks-fs/src/rope.rs b/turbopack/crates/turbo-tasks-fs/src/rope.rs index 76e384f7f8ba8..e6cc5ce174c78 100644 --- a/turbopack/crates/turbo-tasks-fs/src/rope.rs +++ b/turbopack/crates/turbo-tasks-fs/src/rope.rs @@ -21,8 +21,9 @@ use RopeElem::{Local, Shared}; static EMPTY_BUF: &[u8] = &[]; -/// A Rope provides an efficient structure for sharing bytes/strings between -/// multiple sources. Cloning a Rope is extremely cheap (Arc and usize), and +/// An efficient structure for sharing bytes/strings between multiple sources. +/// +/// Cloning a Rope is extremely cheap (Arc and usize), and /// sharing the contents of one Rope can be done by just cloning an Arc. /// /// Ropes are immutable, in order to construct one see [RopeBuilder]. diff --git a/turbopack/crates/turbo-tasks-fs/src/source_context.rs b/turbopack/crates/turbo-tasks-fs/src/source_context.rs index b32cd76a16d03..30edf00d16bb1 100644 --- a/turbopack/crates/turbo-tasks-fs/src/source_context.rs +++ b/turbopack/crates/turbo-tasks-fs/src/source_context.rs @@ -27,7 +27,7 @@ pub enum SourceContextLine<'a> { }, } -impl<'a> Display for SourceContextLine<'a> { +impl Display for SourceContextLine<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { SourceContextLine::Context { line, outside } => { @@ -91,7 +91,7 @@ impl<'a> Display for SourceContextLine<'a> { pub struct SourceContextLines<'a>(pub Vec>); -impl<'a> Display for SourceContextLines<'a> { +impl Display for SourceContextLines<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { for line in &self.0 { write!(f, "{}", line)?; diff --git a/turbopack/crates/turbo-tasks-fs/src/util.rs b/turbopack/crates/turbo-tasks-fs/src/util.rs index 1c32eb408bfbe..46b034639d1d7 100644 --- a/turbopack/crates/turbo-tasks-fs/src/util.rs +++ b/turbopack/crates/turbo-tasks-fs/src/util.rs @@ -85,8 +85,9 @@ pub fn normalize_path(str: &str) -> Option { } /// Normalizes a /-separated request into a form that contains no leading /, no -/// double /, and no "." or ".." segments in the middle of the request. A -/// request might only start with a single "." segment and no ".." segments, or +/// double /, and no "." or ".." segments in the middle of the request. +/// +/// A request might only start with a single "." segment and no ".." segments, or /// any positive number of ".." segments but no "." segment. pub fn normalize_request(str: &str) -> String { let mut segments = vec!["."]; diff --git a/turbopack/crates/turbo-tasks-hash/src/deterministic_hash.rs b/turbopack/crates/turbo-tasks-hash/src/deterministic_hash.rs index 7d378108eeaea..f97bf47936d39 100644 --- a/turbopack/crates/turbo-tasks-hash/src/deterministic_hash.rs +++ b/turbopack/crates/turbo-tasks-hash/src/deterministic_hash.rs @@ -25,8 +25,9 @@ macro_rules! impl_write_number { } /// DeterministicHash is a custom trait that signals the implementor can safely -/// be hashed in a replicatable way across platforms and process runs. Note that -/// the default Hash trait used by Rust is not deterministic for our purposes. +/// be hashed in a replicatable way across platforms and process runs. +/// +/// Note that the default Hash trait used by Rust is not deterministic for our purposes. /// /// It's very important that Vcs never implement this, since they cannot be /// deterministic. The value that they wrap, however, can implement the trait. @@ -36,9 +37,10 @@ pub trait DeterministicHash { fn deterministic_hash(&self, state: &mut H); } -/// DeterministicHasher is a custom trait that signals the implementor can -/// safely hash in a replicatable way across platforms and process runs. Note -/// that the default Hasher trait used by Rust allows for non-deterministic +/// A custom trait that signals the implementor can safely hash in a replicatable way across +/// platforms and process runs. +/// +/// Note that the default Hasher trait used by Rust allows for non-deterministic /// hashing, so it is not suitable for our purposes. pub trait DeterministicHasher { fn finish(&self) -> u64; @@ -180,7 +182,7 @@ tuple_impls! { A B C D E F G H I J K L } /// HasherWrapper allows the DeterministicHasher to be used as a Hasher, for /// standard types that do not allow us to directly access their internals. struct HasherWrapper<'a, D: DeterministicHasher>(&'a mut D); -impl<'a, D: DeterministicHasher> std::hash::Hasher for HasherWrapper<'a, D> { +impl std::hash::Hasher for HasherWrapper<'_, D> { fn write(&mut self, bytes: &[u8]) { self.0.write_bytes(bytes); } diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.rs index 3cb20817b548e..0122ab1be5f6e 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use turbo_tasks::{ResolvedVc, Vc}; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr index e64fe1c7379ae..e650db7b8d696 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr @@ -1,5 +1,5 @@ error: unexpected token, expected one of: "fs", "network", "resolved", "local_cells" - --> tests/function/fail_attribute_invalid_args.rs:8:25 + --> tests/function/fail_attribute_invalid_args.rs:9:25 | -8 | #[turbo_tasks::function(invalid_argument)] +9 | #[turbo_tasks::function(invalid_argument)] | ^^^^^^^^^^^^^^^^ diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.rs index 02522f2eeaf43..f2031edaaccf9 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use turbo_tasks::{ResolvedVc, Vc}; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr index f3c6f2774edbc..62139f86e88ad 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr @@ -1,5 +1,5 @@ error: unexpected token, expected one of: "fs", "network", "resolved", "local_cells" - --> tests/function/fail_attribute_invalid_args_inherent_impl.rs:13:29 + --> tests/function/fail_attribute_invalid_args_inherent_impl.rs:14:29 | -13 | #[turbo_tasks::function(invalid_argument)] +14 | #[turbo_tasks::function(invalid_argument)] | ^^^^^^^^^^^^^^^^ diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.rs index 97d36beffbd2d..2a32519fc156a 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(dead_code)] use turbo_tasks::Vc; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.stderr index 877e032b19061..d0645705f674a 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_inherent_impl.stderr @@ -1,7 +1,7 @@ error[E0277]: the trait bound `IntegersVec: ResolvedValue` is not satisfied - --> tests/function/fail_resolved_inherent_impl.rs:14:29 + --> tests/function/fail_resolved_inherent_impl.rs:15:29 | -14 | #[turbo_tasks::function(resolved)] +15 | #[turbo_tasks::function(resolved)] | ^^^^^^^^ the trait `ResolvedValue` is not implemented for `IntegersVec` | = help: the following other types implement trait `ResolvedValue`: diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.rs index 79a20dcaf7ea0..93365c776597e 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(dead_code)] use turbo_tasks::Vc; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.stderr index 63ba615d4e3dd..61f8615435dc1 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_static.stderr @@ -1,24 +1,24 @@ error[E0277]: the trait bound `IntegersVec: ResolvedValue` is not satisfied - --> tests/function/fail_resolved_static.rs:9:25 - | -9 | #[turbo_tasks::function(resolved)] - | ^^^^^^^^ the trait `ResolvedValue` is not implemented for `IntegersVec` - | - = help: the following other types implement trait `ResolvedValue`: - &T - &mut T - () - (A, Z, Y, X, W, V, U, T) - (B, A, Z, Y, X, W, V, U, T) - (C, B, A, Z, Y, X, W, V, U, T) - (D, C, B, A, Z, Y, X, W, V, U, T) - (E, D, C, B, A, Z, Y, X, W, V, U, T) - and $N others + --> tests/function/fail_resolved_static.rs:10:25 + | +10 | #[turbo_tasks::function(resolved)] + | ^^^^^^^^ the trait `ResolvedValue` is not implemented for `IntegersVec` + | + = help: the following other types implement trait `ResolvedValue`: + &T + &mut T + () + (A, Z, Y, X, W, V, U, T) + (B, A, Z, Y, X, W, V, U, T) + (C, B, A, Z, Y, X, W, V, U, T) + (D, C, B, A, Z, Y, X, W, V, U, T) + (E, D, C, B, A, Z, Y, X, W, V, U, T) + and $N others note: required by a bound in `assert_returns_resolved_value` - --> $WORKSPACE/turbopack/crates/turbo-tasks/src/macro_helpers.rs - | - | pub fn assert_returns_resolved_value() - | ----------------------------- required by a bound in this function + --> $WORKSPACE/turbopack/crates/turbo-tasks/src/macro_helpers.rs + | + | pub fn assert_returns_resolved_value() + | ----------------------------- required by a bound in this function ... - | Rv: ResolvedValue + Send, - | ^^^^^^^^^^^^^ required by this bound in `assert_returns_resolved_value` + | Rv: ResolvedValue + Send, + | ^^^^^^^^^^^^^ required by this bound in `assert_returns_resolved_value` diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.rs index 918bf97845a92..7258be1c74734 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(dead_code)] use turbo_tasks::Vc; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.stderr index e18d2811d2f90..17d67aa8472ca 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_resolved_trait_impl.stderr @@ -1,7 +1,7 @@ error[E0277]: the trait bound `IntegersVec: ResolvedValue` is not satisfied - --> tests/function/fail_resolved_trait_impl.rs:19:29 + --> tests/function/fail_resolved_trait_impl.rs:20:29 | -19 | #[turbo_tasks::function(resolved)] +20 | #[turbo_tasks::function(resolved)] | ^^^^^^^^ the trait `ResolvedValue` is not implemented for `IntegersVec` | = help: the following other types implement trait `ResolvedValue`: diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_inherent_impl.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_inherent_impl.rs index bcd96cc1a8078..0ef6aad6fb7eb 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_inherent_impl.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_inherent_impl.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(dead_code)] use turbo_tasks::{ResolvedVc, Vc}; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_static.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_static.rs index 26e98b52c86d5..e51e9895e459c 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_static.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_static.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(dead_code)] use turbo_tasks::{ResolvedVc, Vc}; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_trait_impl.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_trait_impl.rs index c1f37f2bd9213..6cee5ed82daed 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_trait_impl.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_trait_impl.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(dead_code)] use turbo_tasks::{ResolvedVc, Vc}; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_vc_input.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_vc_input.rs index 66c4b564836ba..cfd60c6eb2561 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_vc_input.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/pass_resolved_vc_input.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![allow(dead_code)] use anyhow::Result; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/task_input.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/task_input.rs index fbf465369095e..c3b9bfad00d67 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/task_input.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/task_input.rs @@ -1,6 +1,7 @@ //! Tests for the `#[derive(TaskInput)]` macro are in `turbo_tasks` itself. //! However, we keep one test here as an integration test between the derive //! macro and the `#[turbo_tasks::function]` macro. +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use serde::{Deserialize, Serialize}; use turbo_tasks::{Completion, ReadRef, TaskInput, Vc}; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.rs index 0280713b8722c..3f3f8ca459b7c 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use turbo_tasks::Vc; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.stderr index d100c44fdc5b0..a8ae9e0fc20e0 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/value/fail_resolved.stderr @@ -1,7 +1,7 @@ error[E0277]: the trait bound `Vc: ResolvedValue` is not satisfied - --> tests/value/fail_resolved.rs:7:12 + --> tests/value/fail_resolved.rs:8:12 | -7 | value: Vc, +8 | value: Vc, | ^^^^^^^ the trait `ResolvedValue` is not implemented for `Vc` | = help: the following other types implement trait `ResolvedValue`: @@ -15,8 +15,8 @@ error[E0277]: the trait bound `Vc: ResolvedValue` is not satisfied (E, D, C, B, A, Z, Y, X, W, V, U, T) and $N others note: required by a bound in `DeriveResolvedValueAssertion::assert_impl_resolved_value` - --> tests/value/fail_resolved.rs:5:22 + --> tests/value/fail_resolved.rs:6:22 | -5 | #[turbo_tasks::value(resolved)] +6 | #[turbo_tasks::value(resolved)] | ^^^^^^^^ required by this bound in `DeriveResolvedValueAssertion::assert_impl_resolved_value` = note: this error originates in the derive macro `turbo_tasks::ResolvedValue` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/value/pass_resolved.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/value/pass_resolved.rs index a4ee6fc723943..f8243ecedd632 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/value/pass_resolved.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/value/pass_resolved.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #[turbo_tasks::value(resolved)] struct MyValue { diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/value_debug.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/value_debug.rs index e3f49c479a272..f46e8ce8a35b0 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/value_debug.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/value_debug.rs @@ -1,3 +1,5 @@ +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this + use turbo_tasks::debug::ValueDebugFormat; use turbo_tasks_testing::{register, run, Registration}; diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/value_trait/pass_resolved.rs b/turbopack/crates/turbo-tasks-macros-tests/tests/value_trait/pass_resolved.rs index dbdca31fb5add..0bef7e6cc2e25 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/value_trait/pass_resolved.rs +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/value_trait/pass_resolved.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #[turbo_tasks::value_trait(resolved)] trait MyTrait {} diff --git a/turbopack/crates/turbo-tasks-macros/src/generic_type_macro.rs b/turbopack/crates/turbo-tasks-macros/src/generic_type_macro.rs index 29ca8ab32f727..334d7d81ee5e8 100644 --- a/turbopack/crates/turbo-tasks-macros/src/generic_type_macro.rs +++ b/turbopack/crates/turbo-tasks-macros/src/generic_type_macro.rs @@ -108,7 +108,7 @@ struct ReplaceGenericsVisitor<'a> { generics: &'a std::collections::HashSet, } -impl<'a> VisitMut for ReplaceGenericsVisitor<'a> { +impl VisitMut for ReplaceGenericsVisitor<'_> { fn visit_type_mut(&mut self, node: &mut Type) { if let Type::Path(type_path) = node { if type_path.qself.is_none() diff --git a/turbopack/crates/turbo-tasks-macros/src/lib.rs b/turbopack/crates/turbo-tasks-macros/src/lib.rs index 613b2da8ff789..30716e0f2e412 100644 --- a/turbopack/crates/turbo-tasks-macros/src/lib.rs +++ b/turbopack/crates/turbo-tasks-macros/src/lib.rs @@ -49,6 +49,7 @@ pub fn derive_task_input(input: TokenStream) -> TokenStream { /// Derives the `turbo_tasks::KeyValuePair` trait for a enum. Each variant need to have a `value` /// field which becomes part of the value enum and all remaining fields become part of the key. +/// /// Assuming the enum is called `Abc` it exposes `AbcKey` and `AbcValue` types for it too. The key /// enum will have `Debug, Clone, PartialEq, Eq, Hash` derived and the value enum will have `Debug, /// Clone` derived. It's expected that all fields implement these traits. diff --git a/turbopack/crates/turbo-tasks-memory/benches/mod.rs b/turbopack/crates/turbo-tasks-memory/benches/mod.rs index 6bbaf50152aa7..b11aaaf8116e1 100644 --- a/turbopack/crates/turbo-tasks-memory/benches/mod.rs +++ b/turbopack/crates/turbo-tasks-memory/benches/mod.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use criterion::{criterion_group, criterion_main, Criterion}; diff --git a/turbopack/crates/turbo-tasks-memory/src/aggregation/change.rs b/turbopack/crates/turbo-tasks-memory/src/aggregation/change.rs index a0ff1eb605692..fc69033cf6f7a 100644 --- a/turbopack/crates/turbo-tasks-memory/src/aggregation/change.rs +++ b/turbopack/crates/turbo-tasks-memory/src/aggregation/change.rs @@ -92,7 +92,7 @@ pub enum PreparedChangeRef<'l, C: AggregationContext> { }, } -impl<'l, C: AggregationContext> PreparedOperation for PreparedChangeRef<'l, C> { +impl PreparedOperation for PreparedChangeRef<'_, C> { type Result = (); fn apply(self, ctx: &C) { let (uppers, change) = match self { diff --git a/turbopack/crates/turbo-tasks-memory/src/aggregation/followers.rs b/turbopack/crates/turbo-tasks-memory/src/aggregation/followers.rs index 1490b2c4fa96b..1a9a6f9c569e8 100644 --- a/turbopack/crates/turbo-tasks-memory/src/aggregation/followers.rs +++ b/turbopack/crates/turbo-tasks-memory/src/aggregation/followers.rs @@ -49,14 +49,14 @@ pub fn on_added( let followers_len = aggregating.followers.len(); let optimize = (!already_optimizing_for_node && followers_len >= MAX_FOLLOWERS - && followers_len.count_ones() == 1) - .then(|| { - aggregating - .followers - .iter() - .cloned() - .collect::>() - }); + && followers_len.is_power_of_two()) + .then(|| { + aggregating + .followers + .iter() + .cloned() + .collect::>() + }); let uppers = aggregating.uppers.iter().cloned().collect::>(); start_in_progress_all(ctx, &uppers); drop(node); diff --git a/turbopack/crates/turbo-tasks-memory/src/aggregation/loom_tests.rs b/turbopack/crates/turbo-tasks-memory/src/aggregation/loom_tests.rs index a99874f2c1323..d9958d4389657 100644 --- a/turbopack/crates/turbo-tasks-memory/src/aggregation/loom_tests.rs +++ b/turbopack/crates/turbo-tasks-memory/src/aggregation/loom_tests.rs @@ -147,7 +147,10 @@ impl AggregationNodeGuard for NodeGuard { } impl AggregationContext for NodeAggregationContext { - type Guard<'l> = NodeGuard where Self: 'l; + type Guard<'l> + = NodeGuard + where + Self: 'l; type Data = Aggregated; type NodeRef = NodeRef; type DataChange = Change; diff --git a/turbopack/crates/turbo-tasks-memory/src/aggregation/new_edge.rs b/turbopack/crates/turbo-tasks-memory/src/aggregation/new_edge.rs index 583d2ce564f4f..b40c5e3b13d2b 100644 --- a/turbopack/crates/turbo-tasks-memory/src/aggregation/new_edge.rs +++ b/turbopack/crates/turbo-tasks-memory/src/aggregation/new_edge.rs @@ -31,7 +31,7 @@ pub fn handle_new_edge( ref mut aggregation_number, ref uppers, } => { - if number_of_children.count_ones() == 1 + if number_of_children.is_power_of_two() && (uppers.len() + 1) * number_of_children >= MAX_UPPERS_TIMES_CHILDREN { let uppers = uppers.iter().cloned().collect::>(); diff --git a/turbopack/crates/turbo-tasks-memory/src/aggregation/tests.rs b/turbopack/crates/turbo-tasks-memory/src/aggregation/tests.rs index f8c4e7ae43be1..e85ad96f4bbff 100644 --- a/turbopack/crates/turbo-tasks-memory/src/aggregation/tests.rs +++ b/turbopack/crates/turbo-tasks-memory/src/aggregation/tests.rs @@ -491,8 +491,11 @@ impl AggregationNodeGuard for NodeGuard { } } -impl<'a> AggregationContext for NodeAggregationContext<'a> { - type Guard<'l> = NodeGuard where Self: 'l; +impl AggregationContext for NodeAggregationContext<'_> { + type Guard<'l> + = NodeGuard + where + Self: 'l; type Data = Aggregated; type NodeRef = NodeRef; type DataChange = Change; diff --git a/turbopack/crates/turbo-tasks-memory/src/aggregation/uppers.rs b/turbopack/crates/turbo-tasks-memory/src/aggregation/uppers.rs index 89a59d184060a..b6f62c7a4693b 100644 --- a/turbopack/crates/turbo-tasks-memory/src/aggregation/uppers.rs +++ b/turbopack/crates/turbo-tasks-memory/src/aggregation/uppers.rs @@ -52,7 +52,7 @@ pub fn on_added( let uppers = node.uppers(); let uppers_len = uppers.len(); let optimize = - (!already_optimizing_for_upper && uppers_len >= MAX_UPPERS && uppers_len.count_ones() == 1) + (!already_optimizing_for_upper && uppers_len >= MAX_UPPERS && uppers_len.is_power_of_two()) .then(|| (true, uppers.iter().cloned().collect::>())); let (add_change, followers) = match &mut *node { AggregationNode::Leaf { .. } => { diff --git a/turbopack/crates/turbo-tasks-memory/src/count_hash_set.rs b/turbopack/crates/turbo-tasks-memory/src/count_hash_set.rs index a860b0b94bf1f..b44782db7b214 100644 --- a/turbopack/crates/turbo-tasks-memory/src/count_hash_set.rs +++ b/turbopack/crates/turbo-tasks-memory/src/count_hash_set.rs @@ -173,13 +173,6 @@ impl CountHashSet { } } - pub fn get_count(&self, item: &T) -> isize { - match self.inner.get(item) { - Some(value) => *value, - None => 0, - } - } - /// Frees unused memory pub fn shrink_to_fit(&mut self) { self.inner.shrink_to_fit(); @@ -232,6 +225,7 @@ impl CountHashSet { self.add_clonable_count(item, 1) } + #[allow(dead_code)] /// Returns true when the value is no longer visible from outside pub fn remove_clonable_count(&mut self, item: &T, count: usize) -> bool { if count == 0 { diff --git a/turbopack/crates/turbo-tasks-memory/src/lib.rs b/turbopack/crates/turbo-tasks-memory/src/lib.rs index cb1f43b7fbdee..751727936e63e 100644 --- a/turbopack/crates/turbo-tasks-memory/src/lib.rs +++ b/turbopack/crates/turbo-tasks-memory/src/lib.rs @@ -1,5 +1,4 @@ #![feature(hash_extract_if)] -#![feature(option_get_or_insert_default)] #![feature(type_alias_impl_trait)] #![feature(box_patterns)] #![feature(int_roundings)] diff --git a/turbopack/crates/turbo-tasks-memory/src/task/aggregation.rs b/turbopack/crates/turbo-tasks-memory/src/task/aggregation.rs index 6841e50152b39..4863c4d599fbe 100644 --- a/turbopack/crates/turbo-tasks-memory/src/task/aggregation.rs +++ b/turbopack/crates/turbo-tasks-memory/src/task/aggregation.rs @@ -194,7 +194,7 @@ impl<'a> TaskAggregationContext<'a> { } #[cfg(debug_assertions)] -impl<'a> Drop for TaskAggregationContext<'a> { +impl Drop for TaskAggregationContext<'_> { fn drop(&mut self) { let tasks_to_schedule = self.dirty_tasks_to_schedule.get_mut(); if let Some(tasks_to_schedule) = tasks_to_schedule.as_ref() { @@ -211,8 +211,11 @@ impl<'a> Drop for TaskAggregationContext<'a> { } } -impl<'a> AggregationContext for TaskAggregationContext<'a> { - type Guard<'l> = TaskGuard<'l> where Self: 'l; +impl AggregationContext for TaskAggregationContext<'_> { + type Guard<'l> + = TaskGuard<'l> + where + Self: 'l; type Data = Aggregated; type DataChange = TaskChange; type NodeRef = TaskId; @@ -452,7 +455,7 @@ impl<'l> TaskGuard<'l> { } } -impl<'l> Deref for TaskGuard<'l> { +impl Deref for TaskGuard<'_> { type Target = AggregationNode< ::NodeRef, ::Data, @@ -468,7 +471,7 @@ impl<'l> Deref for TaskGuard<'l> { } } -impl<'l> DerefMut for TaskGuard<'l> { +impl DerefMut for TaskGuard<'_> { fn deref_mut(&mut self) -> &mut Self::Target { match self.guard { TaskMetaStateWriteGuard::Full(ref mut guard) => &mut guard.aggregation_node, @@ -483,7 +486,10 @@ impl<'l> AggregationNodeGuard for TaskGuard<'l> { type Data = Aggregated; type NodeRef = TaskId; type DataChange = TaskChange; - type ChildrenIter<'a> = impl Iterator + 'a where Self: 'a; + type ChildrenIter<'a> + = impl Iterator + 'a + where + Self: 'a; fn children(&self) -> Self::ChildrenIter<'_> { match self.guard { diff --git a/turbopack/crates/turbo-tasks-memory/src/task/meta_state.rs b/turbopack/crates/turbo-tasks-memory/src/task/meta_state.rs index bf4843f87484b..1f0eac8f10fce 100644 --- a/turbopack/crates/turbo-tasks-memory/src/task/meta_state.rs +++ b/turbopack/crates/turbo-tasks-memory/src/task/meta_state.rs @@ -80,7 +80,8 @@ impl TaskMetaState { } pub(super) type TaskMetaStateAsFull = for<'a> fn(&'a TaskMetaState) -> Option<&'a TaskState>; -pub(super) type TaskMetaStateAsPartial = for<'a> fn(&'a TaskMetaState) -> Option<&PartialTaskState>; +pub(super) type TaskMetaStateAsPartial = + for<'a> fn(&'a TaskMetaState) -> Option<&'a PartialTaskState>; pub(super) type TaskMetaStateAsUnloaded = for<'a> fn(&'a TaskMetaState) -> Option<&'a UnloadedTaskState>; pub(super) type TaskMetaStateAsFullMut = @@ -159,7 +160,7 @@ impl<'a> From> for TaskMetaStateWriteGuard<' } } -impl<'a> TaskMetaStateReadGuard<'a> { +impl TaskMetaStateReadGuard<'_> { pub(super) fn as_full(&mut self) -> Option<&TaskState> { match self { TaskMetaStateReadGuard::Full(state) => Some(&**state), diff --git a/turbopack/crates/turbo-tasks-memory/tests/task_statistics.rs b/turbopack/crates/turbo-tasks-memory/tests/task_statistics.rs index 8a3687f221333..69f7ea778fa52 100644 --- a/turbopack/crates/turbo-tasks-memory/tests/task_statistics.rs +++ b/turbopack/crates/turbo-tasks-memory/tests/task_statistics.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::{ future::{Future, IntoFuture}, diff --git a/turbopack/crates/turbo-tasks-testing/tests/all_in_one.rs b/turbopack/crates/turbo-tasks-testing/tests/all_in_one.rs index e8f53d592e3d5..2d2356e27820f 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/all_in_one.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/all_in_one.rs @@ -1,4 +1,6 @@ +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use anyhow::{anyhow, bail, Result}; use turbo_tasks::{RcStr, Value, ValueToString, Vc}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/basic.rs b/turbopack/crates/turbo-tasks-testing/tests/basic.rs index 84a56237e3193..7cddba2e2ce67 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/basic.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/basic.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; use turbo_tasks::Vc; diff --git a/turbopack/crates/turbo-tasks-testing/tests/call_types.rs b/turbopack/crates/turbo-tasks-testing/tests/call_types.rs index 227e99a0b84ad..bae5a6951bf38 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/call_types.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/call_types.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; use turbo_tasks::Vc; diff --git a/turbopack/crates/turbo-tasks-testing/tests/collectibles.rs b/turbopack/crates/turbo-tasks-testing/tests/collectibles.rs index d2f05a678a751..35ed02c4fe501 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/collectibles.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/collectibles.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::{collections::HashSet, time::Duration}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/debug.rs b/turbopack/crates/turbo-tasks-testing/tests/debug.rs index bb0b96ec36ef1..ef042973771ac 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/debug.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/debug.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::sync::Mutex; diff --git a/turbopack/crates/turbo-tasks-testing/tests/detached.rs b/turbopack/crates/turbo-tasks-testing/tests/detached.rs index 5011df99f7a77..be82faf33012c 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/detached.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/detached.rs @@ -1,4 +1,6 @@ +#![allow(clippy::needless_return)] // clippy bug causes false positive #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use tokio::{ sync::{watch, Notify}, diff --git a/turbopack/crates/turbo-tasks-testing/tests/dirty_in_progress.rs b/turbopack/crates/turbo-tasks-testing/tests/dirty_in_progress.rs index d0b5d21c35a05..c10bc18a27acf 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/dirty_in_progress.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/dirty_in_progress.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::time::Duration; diff --git a/turbopack/crates/turbo-tasks-testing/tests/emptied_cells.rs b/turbopack/crates/turbo-tasks-testing/tests/emptied_cells.rs index e2b1624eb4298..4b7b33da76857 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/emptied_cells.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/emptied_cells.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; use turbo_tasks::{State, Vc}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/generics.rs b/turbopack/crates/turbo-tasks-testing/tests/generics.rs index a0748364dac38..c4e5dfa76a06c 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/generics.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/generics.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::sync::{Arc, Mutex}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/local_cell.rs b/turbopack/crates/turbo-tasks-testing/tests/local_cell.rs index 009081fbe70ff..2fc3d29cc8991 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/local_cell.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/local_cell.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; use turbo_tasks::{ diff --git a/turbopack/crates/turbo-tasks-testing/tests/performance.rs b/turbopack/crates/turbo-tasks-testing/tests/performance.rs index 5dbd561bb285d..412b0b07988fa 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/performance.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/performance.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::time::Duration; diff --git a/turbopack/crates/turbo-tasks-testing/tests/read_ref_cell.rs b/turbopack/crates/turbo-tasks-testing/tests/read_ref_cell.rs index 90144fb942d38..2ae4a42556ce4 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/read_ref_cell.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/read_ref_cell.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // clippy bug causes false positive use std::sync::Mutex; diff --git a/turbopack/crates/turbo-tasks-testing/tests/recompute.rs b/turbopack/crates/turbo-tasks-testing/tests/recompute.rs index cf87bfb97e6ee..20782f007fbd5 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/recompute.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/recompute.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; use turbo_tasks::{State, Vc}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/recompute_collectibles.rs b/turbopack/crates/turbo-tasks-testing/tests/recompute_collectibles.rs index a91c0225ac193..1ae617e2b135b 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/recompute_collectibles.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/recompute_collectibles.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // clippy bug causes false positive use anyhow::{bail, Result}; use turbo_tasks::{emit, CollectiblesSource, RcStr, State, ValueToString, Vc}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/resolved_vc.rs b/turbopack/crates/turbo-tasks-testing/tests/resolved_vc.rs index 223375c2f1be0..a9ba3da1c5a58 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/resolved_vc.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/resolved_vc.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; use turbo_tasks::{ReadRef, ResolvedVc, Vc}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs b/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs index 7c59f372b460f..1db155ade0f02 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/scope_stress.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; use turbo_tasks::{run_once, Completion, TryJoinIterExt, Vc}; diff --git a/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell.rs b/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell.rs index 7d81569628b8c..89abcc7787a33 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell.rs @@ -1,4 +1,6 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::sync::Mutex; diff --git a/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell_mode.rs b/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell_mode.rs index 77b092fdf4e7c..6a7520c879802 100644 --- a/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell_mode.rs +++ b/turbopack/crates/turbo-tasks-testing/tests/trait_ref_cell_mode.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use anyhow::Result; use turbo_tasks::{IntoTraitRef, State, TraitRef, Upcast, Vc}; diff --git a/turbopack/crates/turbo-tasks/src/backend.rs b/turbopack/crates/turbo-tasks/src/backend.rs index b77c606270f82..2ee1f810109a1 100644 --- a/turbopack/crates/turbo-tasks/src/backend.rs +++ b/turbopack/crates/turbo-tasks/src/backend.rs @@ -193,7 +193,7 @@ mod ser { }, } - impl<'a> Serialize for FunctionAndArg<'a> { + impl Serialize for FunctionAndArg<'_> { fn serialize(&self, serializer: S) -> std::result::Result where S: Serializer, diff --git a/turbopack/crates/turbo-tasks/src/completion.rs b/turbopack/crates/turbo-tasks/src/completion.rs index 0347b72cc07af..0a2e6a50cc446 100644 --- a/turbopack/crates/turbo-tasks/src/completion.rs +++ b/turbopack/crates/turbo-tasks/src/completion.rs @@ -2,6 +2,7 @@ use anyhow::Result; use crate::{self as turbo_tasks, RawVc, TryJoinIterExt, Vc}; /// Just an empty type, but it's never equal to itself. +/// /// [`Vc`] can be used as return value instead of `()` /// to have a concrete reference that can be awaited. /// It will invalidate the awaiting task everytime the referenced diff --git a/turbopack/crates/turbo-tasks/src/debug/internal.rs b/turbopack/crates/turbo-tasks/src/debug/internal.rs index 6299dd36828c9..7ac07898aa72e 100644 --- a/turbopack/crates/turbo-tasks/src/debug/internal.rs +++ b/turbopack/crates/turbo-tasks/src/debug/internal.rs @@ -87,7 +87,7 @@ impl<'a> FormattingStruct<'a> { } } -impl<'a> std::fmt::Debug for FormattingStruct<'a> { +impl std::fmt::Debug for FormattingStruct<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { FormattingStruct::Named { name, fields } => { @@ -122,7 +122,7 @@ impl<'a> PassthroughDebug<'a> { } } -impl<'a> std::fmt::Debug for PassthroughDebug<'a> { +impl std::fmt::Debug for PassthroughDebug<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { f.write_str(self.0.as_ref()) } diff --git a/turbopack/crates/turbo-tasks/src/duration_span.rs b/turbopack/crates/turbo-tasks/src/duration_span.rs index 3e181ebbdb74f..8fc73546f81c0 100644 --- a/turbopack/crates/turbo-tasks/src/duration_span.rs +++ b/turbopack/crates/turbo-tasks/src/duration_span.rs @@ -25,8 +25,9 @@ impl Drop for DurationSpanGuard { } /// Creates a event-based span that traces a certain duration (lifetime of the -/// guard). It's not a real span, which means it can be used across threads. It -/// will trace a duration and not the time the cpu is doing actual work. This +/// guard). It's not a real span, which means it can be used across threads. +/// +/// It will trace a duration and not the time the cpu is doing actual work. This /// way it can be used to trace non-cpu-time or time that is spend in other /// processes. #[macro_export] diff --git a/turbopack/crates/turbo-tasks/src/graph/graph_store.rs b/turbopack/crates/turbo-tasks/src/graph/graph_store.rs index 08f61a1c19e77..8ae17b76996ac 100644 --- a/turbopack/crates/turbo-tasks/src/graph/graph_store.rs +++ b/turbopack/crates/turbo-tasks/src/graph/graph_store.rs @@ -43,7 +43,9 @@ impl GraphNode { } /// A [`GraphStore`] wrapper that skips nodes that have already been -/// visited. This is necessary to avoid repeated work when traversing non-tree +/// visited. +/// +/// This is necessary to avoid repeated work when traversing non-tree /// graphs (i.e. where a node can have more than one incoming edge). #[derive(Debug)] pub struct SkipDuplicates diff --git a/turbopack/crates/turbo-tasks/src/graph/graph_traversal.rs b/turbopack/crates/turbo-tasks/src/graph/graph_traversal.rs index 593368a088ad4..3fabff021eb9a 100644 --- a/turbopack/crates/turbo-tasks/src/graph/graph_traversal.rs +++ b/turbopack/crates/turbo-tasks/src/graph/graph_traversal.rs @@ -14,8 +14,9 @@ use super::{ pub struct VisitedNodes(pub HashSet); /// [`GraphTraversal`] is a utility type that can be used to traverse a graph of -/// nodes, where each node can have a variable number of outgoing edges. The -/// traversal is done in parallel, and the order of the nodes in the traversal +/// nodes, where each node can have a variable number of outgoing edges. +/// +/// The traversal is done in parallel, and the order of the nodes in the traversal /// result is determined by the [`GraphStore`] parameter. pub trait GraphTraversal: GraphStore + Sized { fn visit( diff --git a/turbopack/crates/turbo-tasks/src/lib.rs b/turbopack/crates/turbo-tasks/src/lib.rs index 558f37cf35d8f..e111b0e6fa007 100644 --- a/turbopack/crates/turbo-tasks/src/lib.rs +++ b/turbopack/crates/turbo-tasks/src/lib.rs @@ -29,8 +29,9 @@ #![deny(unsafe_op_in_unsafe_fn)] #![feature(result_flattening)] #![feature(error_generic_member_access)] -#![feature(new_uninit)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![feature(new_zeroed_alloc)] #![feature(type_alias_impl_trait)] #![feature(never_type)] #![feature(impl_trait_in_assoc_type)] @@ -131,6 +132,7 @@ pub use crate::rcstr::RcStr; /// /// ``` /// # #![feature(arbitrary_self_types)] +// # #![feature(arbitrary_self_types_pointers)] /// #[turbo_tasks::value(transparent, into = "shared")] /// struct Foo(Vec); /// ``` diff --git a/turbopack/crates/turbo-tasks/src/manager.rs b/turbopack/crates/turbo-tasks/src/manager.rs index 79f487d08021b..ebb063a91212a 100644 --- a/turbopack/crates/turbo-tasks/src/manager.rs +++ b/turbopack/crates/turbo-tasks/src/manager.rs @@ -1709,6 +1709,7 @@ pub fn mark_finished() { /// Marks the current task as stateful. This prevents the tasks from being /// dropped without persisting the state. +/// /// Returns a [`SerializationInvalidator`] that can be used to invalidate the /// serialization of the current task cells pub fn mark_stateful() -> SerializationInvalidator { diff --git a/turbopack/crates/turbo-tasks/src/once_map.rs b/turbopack/crates/turbo-tasks/src/once_map.rs index 22508785bb043..820b4320906fd 100644 --- a/turbopack/crates/turbo-tasks/src/once_map.rs +++ b/turbopack/crates/turbo-tasks/src/once_map.rs @@ -60,7 +60,7 @@ impl<'a, K: Hash + Eq + Ord + Send + Sync, V: Send + Sync> TemporarilyInserted<' } } -impl<'a, K: Hash + Eq + Ord + Send + Sync, V: Send + Sync> Drop for TemporarilyInserted<'a, K, V> { +impl Drop for TemporarilyInserted<'_, K, V> { fn drop(&mut self) { let static_key: &'static K = unsafe { std::mem::transmute(self.key) }; self.inner.remove(&static_key); @@ -123,17 +123,15 @@ struct SafeTemporarilyInserted< key: &'a K, } -impl<'a, K: Clone + Hash + Eq + Ord + Send + Sync, V: Send + Sync> - SafeTemporarilyInserted<'a, K, V> -{ +impl SafeTemporarilyInserted<'_, K, V> { fn entry(&self) -> Entry<'_, K, V> { // SAFETY: We remove the value again after this function is done self.inner.entry(self.key.clone()) } } -impl<'a, K: Clone + Hash + Eq + Ord + Send + Sync, V: Send + Sync> Drop - for SafeTemporarilyInserted<'a, K, V> +impl Drop + for SafeTemporarilyInserted<'_, K, V> { fn drop(&mut self) { self.inner.remove(self.key); diff --git a/turbopack/crates/turbo-tasks/src/persisted_graph.rs b/turbopack/crates/turbo-tasks/src/persisted_graph.rs index 85944eae78901..a9087f0aceae0 100644 --- a/turbopack/crates/turbo-tasks/src/persisted_graph.rs +++ b/turbopack/crates/turbo-tasks/src/persisted_graph.rs @@ -29,8 +29,10 @@ pub struct TaskData { /// A newtype struct that intercepts serde. This is required /// because for safety reasons, TaskCell<()> is not allowed to -/// be deserialized. We augment it with type data then write -/// it. This is inefficient on disk but could be alleviated later. +/// be deserialized. +/// +/// We augment it with type data then write it. This is inefficient +/// on disk but could be alleviated later. #[derive(Debug)] pub struct TaskCells(pub Vec<(CellId, TaskCell)>); diff --git a/turbopack/crates/turbo-tasks/src/state.rs b/turbopack/crates/turbo-tasks/src/state.rs index adf4dc0987745..e62b410aca236 100644 --- a/turbopack/crates/turbo-tasks/src/state.rs +++ b/turbopack/crates/turbo-tasks/src/state.rs @@ -68,7 +68,7 @@ pub struct StateRef<'a, T> { mutated: bool, } -impl<'a, T> Deref for StateRef<'a, T> { +impl Deref for StateRef<'_, T> { type Target = T; fn deref(&self) -> &Self::Target { @@ -76,14 +76,14 @@ impl<'a, T> Deref for StateRef<'a, T> { } } -impl<'a, T> DerefMut for StateRef<'a, T> { +impl DerefMut for StateRef<'_, T> { fn deref_mut(&mut self) -> &mut Self::Target { self.mutated = true; &mut self.inner.value } } -impl<'a, T> Drop for StateRef<'a, T> { +impl Drop for StateRef<'_, T> { fn drop(&mut self) { if self.mutated { for invalidator in take(&mut self.inner.invalidators) { diff --git a/turbopack/crates/turbo-tasks/src/trait_ref.rs b/turbopack/crates/turbo-tasks/src/trait_ref.rs index 5473254b0cf6e..6789c5cfaf221 100644 --- a/turbopack/crates/turbo-tasks/src/trait_ref.rs +++ b/turbopack/crates/turbo-tasks/src/trait_ref.rs @@ -11,7 +11,9 @@ use crate::{ }; /// Similar to a [`ReadRef`][crate::ReadRef], but contains a value trait -/// object instead. The only way to interact with a `TraitRef` is by passing +/// object instead. +/// +/// The only way to interact with a `TraitRef` is by passing /// it around or turning it back into a value trait vc by calling /// [`ReadRef::cell`][crate::ReadRef::cell]. /// diff --git a/turbopack/crates/turbopack-bench/src/lib.rs b/turbopack/crates/turbopack-bench/src/lib.rs index 4e3df12db039f..638031b7d4f55 100644 --- a/turbopack/crates/turbopack-bench/src/lib.rs +++ b/turbopack/crates/turbopack-bench/src/lib.rs @@ -302,7 +302,7 @@ fn bench_hmr_internal( value = m.add(&value, &duration); iter += 1; - if verbose && iter != iters && iter.count_ones() == 1 { + if verbose && iter != iters && iter.is_power_of_two() { eprint!( " [{:?} {:?}/{}{}]", duration, diff --git a/turbopack/crates/turbopack-bench/src/util/mod.rs b/turbopack/crates/turbopack-bench/src/util/mod.rs index cf9b317a96b81..a9437bdf13cd8 100644 --- a/turbopack/crates/turbopack-bench/src/util/mod.rs +++ b/turbopack/crates/turbopack-bench/src/util/mod.rs @@ -155,7 +155,7 @@ pub trait AsyncBencherExtension { TF: Future; } -impl<'a, 'b, A: AsyncExecutor> AsyncBencherExtension for AsyncBencher<'a, 'b, A, WallTime> { +impl AsyncBencherExtension for AsyncBencher<'_, '_, A, WallTime> { fn try_iter_custom(&mut self, routine: R) where R: Fn(u64, WallTime) -> F, diff --git a/turbopack/crates/turbopack-bench/src/util/npm.rs b/turbopack/crates/turbopack-bench/src/util/npm.rs index b6e37de3864f2..ce593d6d68ae2 100644 --- a/turbopack/crates/turbopack-bench/src/util/npm.rs +++ b/turbopack/crates/turbopack-bench/src/util/npm.rs @@ -24,7 +24,7 @@ impl<'a> NpmPackage<'a> { } } -impl<'a> std::fmt::Display for NpmPackage<'a> { +impl std::fmt::Display for NpmPackage<'_> { fn fmt(&self, fmt: &mut std::fmt::Formatter) -> std::fmt::Result { fmt.write_fmt(format_args!("{}@{}", self.name, self.version)) } diff --git a/turbopack/crates/turbopack-bench/src/util/page_guard.rs b/turbopack/crates/turbopack-bench/src/util/page_guard.rs index 5848d9085780e..c3202d5297f58 100644 --- a/turbopack/crates/turbopack-bench/src/util/page_guard.rs +++ b/turbopack/crates/turbopack-bench/src/util/page_guard.rs @@ -94,7 +94,7 @@ impl<'a> PageGuard<'a> { } } -impl<'a> Drop for PageGuard<'a> { +impl Drop for PageGuard<'_> { fn drop(&mut self) { // The page might have been closed already in `close_page`. if let Some(page) = self.page.take() { diff --git a/turbopack/crates/turbopack-bench/src/util/prepared_app.rs b/turbopack/crates/turbopack-bench/src/util/prepared_app.rs index 80a29817f0792..5c43b6b681f69 100644 --- a/turbopack/crates/turbopack-bench/src/util/prepared_app.rs +++ b/turbopack/crates/turbopack-bench/src/util/prepared_app.rs @@ -169,7 +169,7 @@ impl<'a> PreparedApp<'a> { } } -impl<'a> Drop for PreparedApp<'a> { +impl Drop for PreparedApp<'_> { fn drop(&mut self) { if let Some(mut server) = self.server.take() { stop_process(&mut server.0).expect("failed to stop process"); diff --git a/turbopack/crates/turbopack-browser/src/chunking_context.rs b/turbopack/crates/turbopack-browser/src/chunking_context.rs index 88139b824e250..db46d0e832c7b 100644 --- a/turbopack/crates/turbopack-browser/src/chunking_context.rs +++ b/turbopack/crates/turbopack-browser/src/chunking_context.rs @@ -89,6 +89,7 @@ impl BrowserChunkingContextBuilder { } /// A chunking context for development mode. +/// /// It uses readable filenames and module ids to improve development. /// It also uses a chunking heuristic that is incremental and cacheable. /// It splits "node_modules" separately as these are less likely to change diff --git a/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs b/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs index 1ba6f0332125b..4e7591890cbe5 100644 --- a/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs +++ b/turbopack/crates/turbopack-browser/src/ecmascript/list/update.rs @@ -39,7 +39,7 @@ enum ChunkUpdate { Deleted, } -impl<'a> ChunkListUpdate<'a> { +impl ChunkListUpdate<'_> { /// Returns `true` if this update is empty. fn is_empty(&self) -> bool { let ChunkListUpdate { chunks, merged } = self; diff --git a/turbopack/crates/turbopack-browser/src/ecmascript/update.rs b/turbopack/crates/turbopack-browser/src/ecmascript/update.rs index 42409015bf958..54da7d65a2b9b 100644 --- a/turbopack/crates/turbopack-browser/src/ecmascript/update.rs +++ b/turbopack/crates/turbopack-browser/src/ecmascript/update.rs @@ -5,6 +5,7 @@ use turbopack_core::{chunk::ModuleId, code_builder::Code}; use super::{content::EcmascriptDevChunkContent, version::EcmascriptDevChunkVersion}; +#[allow(clippy::large_enum_variant)] pub(super) enum EcmascriptChunkUpdate { None, Partial(EcmascriptChunkPartialUpdate), diff --git a/turbopack/crates/turbopack-browser/src/lib.rs b/turbopack/crates/turbopack-browser/src/lib.rs index 921f738aabb6a..5c2c989539331 100644 --- a/turbopack/crates/turbopack-browser/src/lib.rs +++ b/turbopack/crates/turbopack-browser/src/lib.rs @@ -1,6 +1,7 @@ #![feature(iter_intersperse)] #![feature(int_roundings)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub(crate) mod chunking_context; pub mod ecmascript; diff --git a/turbopack/crates/turbopack-cli-utils/src/issue.rs b/turbopack/crates/turbopack-cli-utils/src/issue.rs index 5a2f0367e475b..6aa2de385796c 100644 --- a/turbopack/crates/turbopack-cli-utils/src/issue.rs +++ b/turbopack/crates/turbopack-cli-utils/src/issue.rs @@ -301,8 +301,10 @@ impl SeenIssues { } /// Logs emitted issues to console logs, deduplicating issues between peeks of -/// the collected issues. The ConsoleUi can be shared and capture issues from -/// multiple sources, with deduplication operating across all issues. +/// the collected issues. +/// +/// The ConsoleUi can be shared and capture issues from multiple sources, with deduplication +/// operating across all issues. #[turbo_tasks::value(shared, serialization = "none", eq = "manual")] #[derive(Clone)] pub struct ConsoleUi { diff --git a/turbopack/crates/turbopack-cli-utils/src/lib.rs b/turbopack/crates/turbopack-cli-utils/src/lib.rs index 6c544788bb63b..53b16b2899a9c 100644 --- a/turbopack/crates/turbopack-cli-utils/src/lib.rs +++ b/turbopack/crates/turbopack-cli-utils/src/lib.rs @@ -3,6 +3,7 @@ #![feature(round_char_boundary)] #![feature(thread_id_value)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod issue; pub mod runtime_entry; diff --git a/turbopack/crates/turbopack-cli/src/lib.rs b/turbopack/crates/turbopack-cli/src/lib.rs index a2a5c4dd2c743..76c66cbde1a58 100644 --- a/turbopack/crates/turbopack-cli/src/lib.rs +++ b/turbopack/crates/turbopack-cli/src/lib.rs @@ -1,6 +1,7 @@ #![feature(future_join)] #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod arguments; pub mod build; diff --git a/turbopack/crates/turbopack-core/src/chunk/containment_tree.rs b/turbopack/crates/turbopack-core/src/chunk/containment_tree.rs index 3c4fa45fc1144..9bd2993ce2ef7 100644 --- a/turbopack/crates/turbopack-core/src/chunk/containment_tree.rs +++ b/turbopack/crates/turbopack-core/src/chunk/containment_tree.rs @@ -210,6 +210,7 @@ where #[cfg(test)] mod tests { + #![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use async_trait::async_trait; use super::*; @@ -272,6 +273,7 @@ mod tests { ] } ); + Ok(()) } } diff --git a/turbopack/crates/turbopack-core/src/error.rs b/turbopack/crates/turbopack-core/src/error.rs index b02ed166cebf0..2c06a84001089 100644 --- a/turbopack/crates/turbopack-core/src/error.rs +++ b/turbopack/crates/turbopack-core/src/error.rs @@ -4,7 +4,7 @@ use std::fmt::{Display, Formatter, Result}; /// Puts a summary first and details after that. pub struct PrettyPrintError<'a>(pub &'a anyhow::Error); -impl<'a> Display for PrettyPrintError<'a> { +impl Display for PrettyPrintError<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> Result { let mut i = 0; let mut has_details = false; @@ -50,7 +50,7 @@ impl<'a> Display for PrettyPrintError<'a> { /// Indents all lines after the first one. Puts a dash before the first line. struct WithDash<'a>(&'a str); -impl<'a> Display for WithDash<'a> { +impl Display for WithDash<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> Result { let mut lines = self.0.lines(); if let Some(line) = lines.next() { diff --git a/turbopack/crates/turbopack-core/src/lib.rs b/turbopack/crates/turbopack-core/src/lib.rs index 3a25df4a5f4d7..982f15b1d4a10 100644 --- a/turbopack/crates/turbopack-core/src/lib.rs +++ b/turbopack/crates/turbopack-core/src/lib.rs @@ -1,9 +1,9 @@ #![feature(async_closure)] #![feature(min_specialization)] -#![feature(option_get_or_insert_default)] #![feature(type_alias_impl_trait)] #![feature(assert_matches)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![feature(iter_intersperse)] pub mod asset; diff --git a/turbopack/crates/turbopack-core/src/proxied_asset.rs b/turbopack/crates/turbopack-core/src/proxied_asset.rs index d110a98c992ae..7fce9987a71f4 100644 --- a/turbopack/crates/turbopack-core/src/proxied_asset.rs +++ b/turbopack/crates/turbopack-core/src/proxied_asset.rs @@ -8,9 +8,10 @@ use crate::{ version::VersionedContent, }; -/// An [`Asset`] with an overwritten path. This is helpful to expose an asset at -/// a different path than it was originally set up to be, e.g. to expose layout -/// CSS chunks under the server FS instead of the output FS when rendering +/// An [`Asset`] with an overwritten path. +/// +/// This is helpful to expose an asset at a different path than it was originally set up to be, e.g. +/// to expose layout CSS chunks under the server FS instead of the output FS when rendering /// Next.js apps. #[turbo_tasks::value] pub struct ProxiedAsset { diff --git a/turbopack/crates/turbopack-core/src/reference_type.rs b/turbopack/crates/turbopack-core/src/reference_type.rs index 1108d9801cc0d..fcae9b04f8815 100644 --- a/turbopack/crates/turbopack-core/src/reference_type.rs +++ b/turbopack/crates/turbopack-core/src/reference_type.rs @@ -8,6 +8,7 @@ use crate::{module::Module, resolve::ModulePart}; /// Named references to inner assets. Modules can used them to allow to /// per-module aliases of some requests to already created module assets. +/// /// Name is usually in UPPER_CASE to make it clear that this is an inner asset. #[turbo_tasks::value(transparent)] pub struct InnerAssets(IndexMap>>); diff --git a/turbopack/crates/turbopack-core/src/resolve/alias_map.rs b/turbopack/crates/turbopack-core/src/resolve/alias_map.rs index 35ae8fc069e29..4e01abf792c3c 100644 --- a/turbopack/crates/turbopack-core/src/resolve/alias_map.rs +++ b/turbopack/crates/turbopack-core/src/resolve/alias_map.rs @@ -407,7 +407,7 @@ struct AliasMapIterItem<'a, T> { iterator: std::collections::btree_map::Iter<'a, AliasKey, T>, } -impl<'a, T> AliasMapIter<'a, T> { +impl AliasMapIter<'_, T> { fn advance_iter(&mut self) -> bool { let Some((prefix, map)) = self.iter.next() else { return false; @@ -615,7 +615,7 @@ where } /// Returns the wrapped value. - pub fn as_self(&'a self) -> &T::Output<'a> { + pub fn as_self(&self) -> &T::Output<'a> { match self { Self::Exact(v) => v, Self::Replaced(v) => v, @@ -747,7 +747,10 @@ mod test { } impl<'a> AliasTemplate for &'a str { - type Output<'b> = Pattern where Self: 'b; + type Output<'b> + = Pattern + where + Self: 'b; fn replace(&self, capture: &Pattern) -> Self::Output<'a> { capture.spread_into_star(self) diff --git a/turbopack/crates/turbopack-core/src/resolve/mod.rs b/turbopack/crates/turbopack-core/src/resolve/mod.rs index 7a3aa635a8b42..997adb27a2342 100644 --- a/turbopack/crates/turbopack-core/src/resolve/mod.rs +++ b/turbopack/crates/turbopack-core/src/resolve/mod.rs @@ -415,8 +415,10 @@ pub enum ResolveResultItem { Unresolveable, } -/// This represents the key for a request that leads to a certain results during -/// resolving. A primary factor is the actual request string, but there are +/// Represents the key for a request that leads to a certain results during +/// resolving. +/// +/// A primary factor is the actual request string, but there are /// other factors like exports conditions that can affect resolting and become /// part of the key (assuming the condition is unknown at compile time) #[derive(Clone, Debug, Default, Hash)] diff --git a/turbopack/crates/turbopack-core/src/resolve/pattern.rs b/turbopack/crates/turbopack-core/src/resolve/pattern.rs index df2b4623dd448..14297dcff4971 100644 --- a/turbopack/crates/turbopack-core/src/resolve/pattern.rs +++ b/turbopack/crates/turbopack-core/src/resolve/pattern.rs @@ -1182,7 +1182,7 @@ enum MatchResult<'a> { }, } -impl<'a> MatchResult<'a> { +impl MatchResult<'_> { /// Returns true if the whole pattern matches the whole string fn is_match(&self) -> bool { match self { diff --git a/turbopack/crates/turbopack-core/src/resolve/remap.rs b/turbopack/crates/turbopack-core/src/resolve/remap.rs index b1c6f1c7caff8..f03e4ca7bd2d8 100644 --- a/turbopack/crates/turbopack-core/src/resolve/remap.rs +++ b/turbopack/crates/turbopack-core/src/resolve/remap.rs @@ -71,7 +71,10 @@ pub enum ReplacedSubpathValue { } impl AliasTemplate for SubpathValue { - type Output<'a> = Result where Self: 'a; + type Output<'a> + = Result + where + Self: 'a; fn convert(&self) -> Result { Ok(match self { diff --git a/turbopack/crates/turbopack-core/src/source_map/mod.rs b/turbopack/crates/turbopack-core/src/source_map/mod.rs index 58321b86d4228..a8d99577571c4 100644 --- a/turbopack/crates/turbopack-core/src/source_map/mod.rs +++ b/turbopack/crates/turbopack-core/src/source_map/mod.rs @@ -37,9 +37,11 @@ pub trait GenerateSourceMap { } } -/// [SourceMap] enum implements the source map specification in 2 ways: A -/// "decoded" map which represents a source map as if it was came out of a JSON -/// decode, and a "sectioned" source map which is a tree of many [SourceMap] +/// Implements the source map specification as either a decoded or sectioned sourcemap. +/// +/// - A "decoded" map represents a source map as if it was came out of a JSON +/// decode. +/// - A "sectioned" source map is a tree of many [SourceMap] /// covering regions of an output file. /// /// The distinction between the source map spec's [sourcemap::Index] and our @@ -72,9 +74,10 @@ impl OptionSourceMap { #[derive(Clone, Debug)] pub struct Tokens(Vec); -/// A token represents a mapping in a source map. It may either be Synthetic, -/// meaning it was generated by some build tool and doesn't represent a location -/// in a user-authored source file, or it is Original, meaning it represents a +/// A token represents a mapping in a source map. +/// +/// It may either be Synthetic, meaning it was generated by some build tool and doesn't +/// represent a location in a user-authored source file, or it is Original, meaning it represents a /// real location in source file. #[turbo_tasks::value] #[derive(Clone, Debug)] @@ -129,7 +132,7 @@ impl Token { } } -impl<'a> From> for Token { +impl From> for Token { fn from(t: sourcemap::Token) -> Self { if t.has_source() { Token::Original(OriginalToken { diff --git a/turbopack/crates/turbopack-core/src/utils.rs b/turbopack/crates/turbopack-core/src/utils.rs index 6f3e5060cb801..7851e19553c17 100644 --- a/turbopack/crates/turbopack-core/src/utils.rs +++ b/turbopack/crates/turbopack-core/src/utils.rs @@ -10,7 +10,7 @@ struct _FutureRacePop<'a, T, F: Future + Unpin> { futures: &'a mut Vec, } -impl<'a, T, F: Future + Unpin> Future for _FutureRacePop<'a, T, F> { +impl + Unpin> Future for _FutureRacePop<'_, T, F> { type Output = Option; fn poll(mut self: Pin<&mut Self>, cx: &mut std::task::Context<'_>) -> Poll { diff --git a/turbopack/crates/turbopack-css/src/lib.rs b/turbopack/crates/turbopack-css/src/lib.rs index 45c5bb65a07f6..b15b96128ecbe 100644 --- a/turbopack/crates/turbopack-css/src/lib.rs +++ b/turbopack/crates/turbopack-css/src/lib.rs @@ -3,6 +3,7 @@ #![feature(iter_intersperse)] #![feature(int_roundings)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] mod asset; pub mod chunk; diff --git a/turbopack/crates/turbopack-css/src/process.rs b/turbopack/crates/turbopack-css/src/process.rs index 85f7ed2ec70b6..c5bd697ea318d 100644 --- a/turbopack/crates/turbopack-css/src/process.rs +++ b/turbopack/crates/turbopack-css/src/process.rs @@ -88,7 +88,7 @@ impl PartialEq for StyleSheetLike<'_, '_> { pub type CssOutput = (ToCssResult, Option); -impl<'i, 'o> StyleSheetLike<'i, 'o> { +impl StyleSheetLike<'_, '_> { pub fn to_static( &self, options: ParserOptions<'static, 'static>, diff --git a/turbopack/crates/turbopack-css/src/references/mod.rs b/turbopack/crates/turbopack-css/src/references/mod.rs index b7579b4b5061d..5ef37ad2b22b1 100644 --- a/turbopack/crates/turbopack-css/src/references/mod.rs +++ b/turbopack/crates/turbopack-css/src/references/mod.rs @@ -151,7 +151,7 @@ impl VisitMut for ModuleReferencesVisitor<'_> { } } -impl<'a> Visitor<'_> for ModuleReferencesVisitor<'a> { +impl Visitor<'_> for ModuleReferencesVisitor<'_> { type Error = Infallible; fn visit_types(&self) -> lightningcss::visitor::VisitTypes { diff --git a/turbopack/crates/turbopack-css/src/references/url.rs b/turbopack/crates/turbopack-css/src/references/url.rs index e59e92cb66163..7972626a8545f 100644 --- a/turbopack/crates/turbopack-css/src/references/url.rs +++ b/turbopack/crates/turbopack-css/src/references/url.rs @@ -182,7 +182,7 @@ impl VisitMut for AssetReferenceReplacer<'_> { } } -impl<'i> Visitor<'i> for AssetReferenceReplacer<'_> { +impl Visitor<'_> for AssetReferenceReplacer<'_> { type Error = Infallible; fn visit_types(&self) -> lightningcss::visitor::VisitTypes { diff --git a/turbopack/crates/turbopack-dev-server/src/lib.rs b/turbopack/crates/turbopack-dev-server/src/lib.rs index 41ccae1a02fb9..f3ec3d65f210f 100644 --- a/turbopack/crates/turbopack-dev-server/src/lib.rs +++ b/turbopack/crates/turbopack-dev-server/src/lib.rs @@ -4,6 +4,7 @@ #![feature(iter_intersperse)] #![feature(str_split_remainder)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod html; mod http; diff --git a/turbopack/crates/turbopack-dev-server/src/source/combined.rs b/turbopack/crates/turbopack-dev-server/src/source/combined.rs index f466d898b612f..56236001e17bd 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/combined.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/combined.rs @@ -9,6 +9,7 @@ use super::{ use crate::source::ContentSources; /// Combines multiple [ContentSource]s by trying all content sources in order. +/// /// The content source which responds with the most specific response (that is /// not a [ContentSourceContent::NotFound]) will be returned. #[turbo_tasks::value(shared)] diff --git a/turbopack/crates/turbopack-dev-server/src/source/conditional.rs b/turbopack/crates/turbopack-dev-server/src/source/conditional.rs index 182ca218f84f4..9734b4d96d92f 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/conditional.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/conditional.rs @@ -12,6 +12,7 @@ use crate::source::{ContentSourceContent, ContentSources}; /// Combines two [ContentSource]s like the [CombinedContentSource], but only /// allows to serve from the second source when the first source has /// successfully served something once. +/// /// This is a laziness optimization when the content of the second source can /// only be reached via references from the first source. /// diff --git a/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs b/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs index 2e29ee5df2117..f334b76d7586c 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/route_tree.rs @@ -33,6 +33,7 @@ impl BaseSegment { } /// This struct allows to cell a list of RouteTrees and merge them into one. +/// /// This can't be a single method `fn merge(Vec>)` as this would /// lead to creating new tasks over and over. A celled list leads to task reuse /// and faster operation. diff --git a/turbopack/crates/turbopack-dev-server/src/source/router.rs b/turbopack/crates/turbopack-dev-server/src/source/router.rs index d0fc8dcb91787..76d00233a014f 100644 --- a/turbopack/crates/turbopack-dev-server/src/source/router.rs +++ b/turbopack/crates/turbopack-dev-server/src/source/router.rs @@ -11,8 +11,9 @@ use super::{ }; use crate::source::{route_tree::MapGetContentSourceContent, ContentSources}; -/// Binds different ContentSources to different subpaths. The request path must -/// begin with the prefix, which will be stripped (along with the subpath) +/// Binds different ContentSources to different subpaths. +/// +/// The request path must begin with the prefix, which will be stripped (along with the subpath) /// before querying the ContentSource. A fallback ContentSource will serve all /// other subpaths, including if the request path does not include the prefix. #[turbo_tasks::value(shared)] diff --git a/turbopack/crates/turbopack-ecmascript-plugins/src/lib.rs b/turbopack/crates/turbopack-ecmascript-plugins/src/lib.rs index 98caae26182cb..25eb90d8f1477 100644 --- a/turbopack/crates/turbopack-ecmascript-plugins/src/lib.rs +++ b/turbopack/crates/turbopack-ecmascript-plugins/src/lib.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod transform; diff --git a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/swc_ecma_transform_plugins.rs b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/swc_ecma_transform_plugins.rs index f72bb4ec2ec3d..ed1a3063c24ef 100644 --- a/turbopack/crates/turbopack-ecmascript-plugins/src/transform/swc_ecma_transform_plugins.rs +++ b/turbopack/crates/turbopack-ecmascript-plugins/src/transform/swc_ecma_transform_plugins.rs @@ -8,6 +8,7 @@ use turbopack_ecmascript::{CustomTransformer, TransformContext}; /// A wrapper around an SWC's ecma transform wasm plugin module bytes, allowing /// it to operate with the turbo_tasks caching requirements. +/// /// Internally this contains a `CompiledPluginModuleBytes`, which points to the /// compiled, serialized wasmer::Module instead of raw file bytes to reduce the /// cost of the compilation. diff --git a/turbopack/crates/turbopack-ecmascript-runtime/src/lib.rs b/turbopack/crates/turbopack-ecmascript-runtime/src/lib.rs index b1ebef84c9aab..61a6892afe249 100644 --- a/turbopack/crates/turbopack-ecmascript-runtime/src/lib.rs +++ b/turbopack/crates/turbopack-ecmascript-runtime/src/lib.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub(crate) mod asset_context; pub(crate) mod browser_runtime; diff --git a/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs b/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs index 869552fd25fb5..2cad48363f344 100644 --- a/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs +++ b/turbopack/crates/turbopack-ecmascript/src/analyzer/graph.rs @@ -669,30 +669,27 @@ impl EvalContext { JsValue::array(arr) } - Expr::Object(obj) => { - return JsValue::object( - obj.props - .iter() - .map(|prop| match prop { - PropOrSpread::Spread(SpreadElement { expr, .. }) => { - ObjectPart::Spread(self.eval(expr)) - } - PropOrSpread::Prop(box Prop::KeyValue(KeyValueProp { - key, - box value, - })) => ObjectPart::KeyValue(self.eval_prop_name(key), self.eval(value)), - PropOrSpread::Prop(box Prop::Shorthand(ident)) => ObjectPart::KeyValue( - ident.sym.clone().into(), - self.eval(&Expr::Ident(ident.clone())), - ), - _ => ObjectPart::Spread(JsValue::unknown_empty( - true, - "unsupported object part", - )), - }) - .collect(), - ) - } + Expr::Object(obj) => JsValue::object( + obj.props + .iter() + .map(|prop| match prop { + PropOrSpread::Spread(SpreadElement { expr, .. }) => { + ObjectPart::Spread(self.eval(expr)) + } + PropOrSpread::Prop(box Prop::KeyValue(KeyValueProp { key, box value })) => { + ObjectPart::KeyValue(self.eval_prop_name(key), self.eval(value)) + } + PropOrSpread::Prop(box Prop::Shorthand(ident)) => ObjectPart::KeyValue( + ident.sym.clone().into(), + self.eval(&Expr::Ident(ident.clone())), + ), + _ => ObjectPart::Spread(JsValue::unknown_empty( + true, + "unsupported object part", + )), + }) + .collect(), + ), Expr::MetaProp(MetaPropExpr { kind: MetaPropKind::ImportMeta, @@ -2064,7 +2061,7 @@ impl VisitAstPath for Analyzer<'_> { } } -impl<'a> Analyzer<'a> { +impl Analyzer<'_> { fn add_conditional_if_effect_with_early_return( &mut self, test: &Expr, diff --git a/turbopack/crates/turbopack-ecmascript/src/analyzer/imports.rs b/turbopack/crates/turbopack-ecmascript/src/analyzer/imports.rs index fcbe51ca99d10..b98f4b020927f 100644 --- a/turbopack/crates/turbopack-ecmascript/src/analyzer/imports.rs +++ b/turbopack/crates/turbopack-ecmascript/src/analyzer/imports.rs @@ -291,7 +291,7 @@ struct Analyzer<'a> { comments: Option<&'a dyn Comments>, } -impl<'a> Analyzer<'a> { +impl Analyzer<'_> { fn ensure_reference( &mut self, span: Span, diff --git a/turbopack/crates/turbopack-ecmascript/src/analyzer/mod.rs b/turbopack/crates/turbopack-ecmascript/src/analyzer/mod.rs index 1498f2704ebdf..858b6ddceb567 100644 --- a/turbopack/crates/turbopack-ecmascript/src/analyzer/mod.rs +++ b/turbopack/crates/turbopack-ecmascript/src/analyzer/mod.rs @@ -2708,7 +2708,7 @@ impl JsValue { fn visit_async_until_settled_box<'a, F, R, E>( value: JsValue, visitor: &'a mut F, - ) -> PinnedAsyncUntilSettledBox + ) -> PinnedAsyncUntilSettledBox<'a, E> where R: 'a + Future> + Send, F: 'a + FnMut(JsValue) -> R + Send, @@ -2744,7 +2744,7 @@ impl JsValue { R: 'a + Future>, F: 'a + FnMut(JsValue) -> R, { - fn visit_async_box<'a, F, R, E>(value: JsValue, visitor: &'a mut F) -> PinnedAsyncBox + fn visit_async_box<'a, F, R, E>(value: JsValue, visitor: &'a mut F) -> PinnedAsyncBox<'a, E> where R: 'a + Future>, F: 'a + FnMut(JsValue) -> R, diff --git a/turbopack/crates/turbopack-ecmascript/src/chunk/data.rs b/turbopack/crates/turbopack-ecmascript/src/chunk/data.rs index cdb0c862bc207..1c2f22e6258e9 100644 --- a/turbopack/crates/turbopack-ecmascript/src/chunk/data.rs +++ b/turbopack/crates/turbopack-ecmascript/src/chunk/data.rs @@ -18,7 +18,7 @@ pub enum EcmascriptChunkData<'a> { }, } -impl<'a> EcmascriptChunkData<'a> { +impl EcmascriptChunkData<'_> { pub fn new(chunk_data: &ChunkData) -> EcmascriptChunkData { let ChunkData { path, diff --git a/turbopack/crates/turbopack-ecmascript/src/lib.rs b/turbopack/crates/turbopack-ecmascript/src/lib.rs index cd1e487df7273..2d63c7dedbcb7 100644 --- a/turbopack/crates/turbopack-ecmascript/src/lib.rs +++ b/turbopack/crates/turbopack-ecmascript/src/lib.rs @@ -5,6 +5,7 @@ #![feature(iter_intersperse)] #![feature(int_roundings)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![recursion_limit = "256"] pub mod analyzer; diff --git a/turbopack/crates/turbopack-ecmascript/src/manifest/chunk_asset.rs b/turbopack/crates/turbopack-ecmascript/src/manifest/chunk_asset.rs index 5aebe9d7716e6..7cf5dd0bb6612 100644 --- a/turbopack/crates/turbopack-ecmascript/src/manifest/chunk_asset.rs +++ b/turbopack/crates/turbopack-ecmascript/src/manifest/chunk_asset.rs @@ -20,9 +20,10 @@ fn modifier() -> Vc { } /// The manifest module is deferred until requested by the manifest loader -/// item when the dynamic `import()` expression is reached. Its responsibility -/// is to generate a Promise that will resolve only after all the necessary -/// chunks needed by the dynamic import are loaded by the client. +/// item when the dynamic `import()` expression is reached. +/// +/// Its responsibility is to generate a Promise that will resolve only after +/// all the necessary chunks needed by the dynamic import are loaded by the client. /// /// Splitting the dynamic import into a quickly generate-able manifest loader /// item and a slow-to-generate manifest chunk allows for faster incremental diff --git a/turbopack/crates/turbopack-ecmascript/src/manifest/loader_item.rs b/turbopack/crates/turbopack-ecmascript/src/manifest/loader_item.rs index 986d4d88c6116..24f91f74321ff 100644 --- a/turbopack/crates/turbopack-ecmascript/src/manifest/loader_item.rs +++ b/turbopack/crates/turbopack-ecmascript/src/manifest/loader_item.rs @@ -27,11 +27,13 @@ fn modifier() -> Vc { } /// The manifest loader item is shipped in the same chunk that uses the dynamic -/// `import()` expression. Its responsibility is to load the manifest chunk from -/// the server. The dynamic import has been rewritten to import this manifest -/// loader item, which will load the manifest chunk from the server, which -/// will load all the chunks needed by the dynamic import. Finally, we'll be -/// able to import the module we're trying to dynamically import. +/// `import()` expression. +/// +/// Its responsibility is to load the manifest chunk from the server. The +/// dynamic import has been rewritten to import this manifest loader item, +/// which will load the manifest chunk from the server, which will load all +/// the chunks needed by the dynamic import. Finally, we'll be able to import +/// the module we're trying to dynamically import. /// /// Splitting the dynamic import into a quickly generate-able manifest loader /// item and a slow-to-generate manifest chunk allows for faster incremental diff --git a/turbopack/crates/turbopack-ecmascript/src/path_visitor.rs b/turbopack/crates/turbopack-ecmascript/src/path_visitor.rs index c4e4b303fa8db..1a08cbab3051b 100644 --- a/turbopack/crates/turbopack-ecmascript/src/path_visitor.rs +++ b/turbopack/crates/turbopack-ecmascript/src/path_visitor.rs @@ -65,7 +65,7 @@ fn find_range<'a, 'b>( Some(&visitors[start..end]) } -impl<'a, 'b> ApplyVisitors<'a, 'b> { +impl<'a> ApplyVisitors<'a, '_> { /// `visitors` must have an non-empty [AstPath]. pub fn new(mut visitors: Vec<(&'a AstPath, &'a dyn VisitorFactory)>) -> Self { assert!(!visitors.is_empty()); diff --git a/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs b/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs index 69872667adff6..214710cc5f404 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/external_module.rs @@ -245,8 +245,9 @@ impl EcmascriptChunkItem for CachedExternalModuleChunkItem { } } -/// A module that only has an ident and no content nor references. It is used -/// to include a module's ident in the module graph before the module +/// A module that only has an ident and no content nor references. +/// +/// It is used to include a module's ident in the module graph before the module /// itself is resolved, as is the case with NextServerComponentModule's /// "client modules" and "client modules ssr". #[turbo_tasks::value] diff --git a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs index 7d227b8c32a49..5a165cd0b578f 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/mod.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/mod.rs @@ -2797,7 +2797,7 @@ fn for_each_ident_in_pat(pat: &Pat, f: &mut impl FnMut(RcStr)) { } } -impl<'a> VisitAstPath for ModuleReferencesVisitor<'a> { +impl VisitAstPath for ModuleReferencesVisitor<'_> { fn visit_export_all<'ast: 'r, 'r>( &mut self, export: &'ast ExportAll, diff --git a/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs b/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs index d671da38f504e..cfae5bc64c4b1 100644 --- a/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs +++ b/turbopack/crates/turbopack-ecmascript/src/references/unreachable.rs @@ -133,7 +133,7 @@ struct ExtractDeclarations<'a> { in_nested_block_scope: bool, } -impl<'a> VisitMut for ExtractDeclarations<'a> { +impl VisitMut for ExtractDeclarations<'_> { fn visit_mut_var_decl(&mut self, decl: &mut VarDecl) { let VarDecl { span, diff --git a/turbopack/crates/turbopack-ecmascript/src/swc_comments.rs b/turbopack/crates/turbopack-ecmascript/src/swc_comments.rs index 283f8e8a8176f..a02892f7e0b28 100644 --- a/turbopack/crates/turbopack-ecmascript/src/swc_comments.rs +++ b/turbopack/crates/turbopack-ecmascript/src/swc_comments.rs @@ -210,7 +210,7 @@ impl<'a> CowComments<'a> { } } -impl<'a> Comments for CowComments<'a> { +impl Comments for CowComments<'_> { fn add_leading( &self, _pos: swc_core::common::BytePos, diff --git a/turbopack/crates/turbopack-ecmascript/src/utils.rs b/turbopack/crates/turbopack-ecmascript/src/utils.rs index 6173ef15bedf3..9f08a8fdbee02 100644 --- a/turbopack/crates/turbopack-ecmascript/src/utils.rs +++ b/turbopack/crates/turbopack-ecmascript/src/utils.rs @@ -82,7 +82,7 @@ pub struct StringifyJs<'a, T>(pub &'a T) where T: ?Sized; -impl<'a, T> std::fmt::Display for StringifyJs<'a, T> +impl std::fmt::Display for StringifyJs<'_, T> where T: Serialize + ?Sized, { @@ -93,7 +93,7 @@ where f: &'a mut std::fmt::Formatter<'b>, } - impl<'a, 'b> std::io::Write for DisplayWriter<'a, 'b> { + impl std::io::Write for DisplayWriter<'_, '_> { fn write(&mut self, bytes: &[u8]) -> std::result::Result { self.f .write_str( diff --git a/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs b/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs index e2e1dc2dead92..fefcd468f411e 100644 --- a/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs +++ b/turbopack/crates/turbopack-ecmascript/src/webpack/references.rs @@ -67,7 +67,7 @@ struct ModuleReferencesVisitor<'a> { transforms: Vc, } -impl<'a> Visit for ModuleReferencesVisitor<'a> { +impl Visit for ModuleReferencesVisitor<'_> { fn visit_call_expr(&mut self, call: &CallExpr) { if let Some(member) = call.callee.as_expr().and_then(|e| e.as_member()) { if let (Some(obj), Some(prop)) = (member.obj.as_ident(), member.prop.as_ident()) { diff --git a/turbopack/crates/turbopack-env/src/lib.rs b/turbopack/crates/turbopack-env/src/lib.rs index fd5fc2e869a21..ddf90116cec95 100644 --- a/turbopack/crates/turbopack-env/src/lib.rs +++ b/turbopack/crates/turbopack-env/src/lib.rs @@ -12,6 +12,7 @@ #![feature(async_closure)] #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] mod asset; pub mod dotenv; diff --git a/turbopack/crates/turbopack-image/src/lib.rs b/turbopack/crates/turbopack-image/src/lib.rs index 16da8fd635043..28d157780cfc9 100644 --- a/turbopack/crates/turbopack-image/src/lib.rs +++ b/turbopack/crates/turbopack-image/src/lib.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod process; diff --git a/turbopack/crates/turbopack-json/src/lib.rs b/turbopack/crates/turbopack-json/src/lib.rs index a69199410bfc8..548733341b31b 100644 --- a/turbopack/crates/turbopack-json/src/lib.rs +++ b/turbopack/crates/turbopack-json/src/lib.rs @@ -7,6 +7,7 @@ #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use std::fmt::Write; diff --git a/turbopack/crates/turbopack-mdx/src/lib.rs b/turbopack/crates/turbopack-mdx/src/lib.rs index 7d1c741c47b8c..c829091fac8ef 100644 --- a/turbopack/crates/turbopack-mdx/src/lib.rs +++ b/turbopack/crates/turbopack-mdx/src/lib.rs @@ -1,5 +1,6 @@ #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] use anyhow::Result; use mdxjs::{compile, MdxParseOptions, Options}; diff --git a/turbopack/crates/turbopack-node/src/lib.rs b/turbopack/crates/turbopack-node/src/lib.rs index a325072c353f2..94b7dcad7aa0f 100644 --- a/turbopack/crates/turbopack-node/src/lib.rs +++ b/turbopack/crates/turbopack-node/src/lib.rs @@ -1,6 +1,7 @@ #![feature(async_closure)] #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] #![feature(extract_if)] use std::{collections::HashMap, iter::once, thread::available_parallelism}; diff --git a/turbopack/crates/turbopack-node/src/source_map/trace.rs b/turbopack/crates/turbopack-node/src/source_map/trace.rs index 3c858cddc86fc..2b855a8ae2d5a 100644 --- a/turbopack/crates/turbopack-node/src/source_map/trace.rs +++ b/turbopack/crates/turbopack-node/src/source_map/trace.rs @@ -67,7 +67,7 @@ impl<'a> StackFrame<'a> { } } -impl<'a> Display for StackFrame<'a> { +impl Display for StackFrame<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self.get_pos() { Some((l, c)) => match &self.name.as_deref() { diff --git a/turbopack/crates/turbopack-node/src/transforms/webpack.rs b/turbopack/crates/turbopack-node/src/transforms/webpack.rs index ebd1fce574d80..a3cfdc29afb97 100644 --- a/turbopack/crates/turbopack-node/src/transforms/webpack.rs +++ b/turbopack/crates/turbopack-node/src/transforms/webpack.rs @@ -343,7 +343,6 @@ pub enum InfoMessage { #[derive(Debug, Clone, TaskInput, Hash, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] - pub struct WebpackResolveOptions { alias_fields: Option>, condition_names: Option>, diff --git a/turbopack/crates/turbopack-nodejs/src/lib.rs b/turbopack/crates/turbopack-nodejs/src/lib.rs index 05fdf1b4ff2c0..5b6808a1e8522 100644 --- a/turbopack/crates/turbopack-nodejs/src/lib.rs +++ b/turbopack/crates/turbopack-nodejs/src/lib.rs @@ -1,5 +1,6 @@ #![feature(iter_intersperse)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub(crate) mod chunking_context; pub(crate) mod ecmascript; diff --git a/turbopack/crates/turbopack-resolve/src/ecmascript.rs b/turbopack/crates/turbopack-resolve/src/ecmascript.rs index a866fab81818d..0fe4eb30c82bc 100644 --- a/turbopack/crates/turbopack-resolve/src/ecmascript.rs +++ b/turbopack/crates/turbopack-resolve/src/ecmascript.rs @@ -14,10 +14,11 @@ use turbopack_core::{ resolve, ModuleResolveResult, ResolveResult, }, }; -/// Retrieves the [ResolutionConditions] of both the "into" package (allowing a -/// package to control how it can be imported) and the "in" package (controlling -/// how this package imports others) resolution options, so that they can be -/// manipulated together. +/// Retrieves the [ResolutionConditions] of the "into" and "in" package resolution options, so that +/// they can be manipulated together. +/// +/// - "into" allows a package to control how it can be imported +/// - "in" controls how this package imports others pub fn get_condition_maps( options: &mut ResolveOptions, ) -> impl Iterator { diff --git a/turbopack/crates/turbopack-resolve/src/lib.rs b/turbopack/crates/turbopack-resolve/src/lib.rs index 2eab414c0be00..0ce13576fa4b8 100644 --- a/turbopack/crates/turbopack-resolve/src/lib.rs +++ b/turbopack/crates/turbopack-resolve/src/lib.rs @@ -1,4 +1,5 @@ #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod ecmascript; pub mod node_native_binding; diff --git a/turbopack/crates/turbopack-static/src/lib.rs b/turbopack/crates/turbopack-static/src/lib.rs index b02640e36fad3..549d916ad846b 100644 --- a/turbopack/crates/turbopack-static/src/lib.rs +++ b/turbopack/crates/turbopack-static/src/lib.rs @@ -10,6 +10,7 @@ #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod fixed; pub mod output_asset; diff --git a/turbopack/crates/turbopack-test-utils/src/lib.rs b/turbopack/crates/turbopack-test-utils/src/lib.rs index 050f83fa2bbb0..15173f283b6e0 100644 --- a/turbopack/crates/turbopack-test-utils/src/lib.rs +++ b/turbopack/crates/turbopack-test-utils/src/lib.rs @@ -1,5 +1,6 @@ #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod jest; pub mod snapshot; diff --git a/turbopack/crates/turbopack-tests/tests/execution.rs b/turbopack/crates/turbopack-tests/tests/execution.rs index ead0cf681d503..d42d1633b5f41 100644 --- a/turbopack/crates/turbopack-tests/tests/execution.rs +++ b/turbopack/crates/turbopack-tests/tests/execution.rs @@ -1,5 +1,7 @@ #![cfg(test)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this mod util; diff --git a/turbopack/crates/turbopack-tests/tests/snapshot.rs b/turbopack/crates/turbopack-tests/tests/snapshot.rs index e7513fa953685..50ba83a7f424e 100644 --- a/turbopack/crates/turbopack-tests/tests/snapshot.rs +++ b/turbopack/crates/turbopack-tests/tests/snapshot.rs @@ -1,3 +1,4 @@ +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this #![cfg(test)] mod util; diff --git a/turbopack/crates/turbopack-trace-server/src/reader/nextjs.rs b/turbopack/crates/turbopack-trace-server/src/reader/nextjs.rs index 2903ffd18770f..365dba244b4f8 100644 --- a/turbopack/crates/turbopack-trace-server/src/reader/nextjs.rs +++ b/turbopack/crates/turbopack-trace-server/src/reader/nextjs.rs @@ -99,7 +99,6 @@ impl TraceFormat for NextJsFormat { #[derive(Debug, Deserialize)] #[serde(untagged)] - enum TagValue<'a> { String(Cow<'a, str>), Number(f64), @@ -107,7 +106,7 @@ enum TagValue<'a> { Array(Vec>), } -impl<'a> Display for TagValue<'a> { +impl Display for TagValue<'_> { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { TagValue::String(s) => write!(f, "{}", s), diff --git a/turbopack/crates/turbopack-trace-server/src/span_bottom_up_ref.rs b/turbopack/crates/turbopack-trace-server/src/span_bottom_up_ref.rs index 431a9858f0df3..fb61402cfa591 100644 --- a/turbopack/crates/turbopack-trace-server/src/span_bottom_up_ref.rs +++ b/turbopack/crates/turbopack-trace-server/src/span_bottom_up_ref.rs @@ -176,7 +176,7 @@ impl<'a> SpanBottomUpRef<'a> { } } -impl<'a> Debug for SpanBottomUpRef<'a> { +impl Debug for SpanBottomUpRef<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("SpanBottomUpRef") .field("group_name", &self.group_name()) diff --git a/turbopack/crates/turbopack-trace-server/src/span_graph_ref.rs b/turbopack/crates/turbopack-trace-server/src/span_graph_ref.rs index 03ce092894a54..b7e21e42059a9 100644 --- a/turbopack/crates/turbopack-trace-server/src/span_graph_ref.rs +++ b/turbopack/crates/turbopack-trace-server/src/span_graph_ref.rs @@ -301,7 +301,7 @@ pub fn event_map_to_list( .collect() } -impl<'a> Debug for SpanGraphRef<'a> { +impl Debug for SpanGraphRef<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("SpanGraphRef") .field("id", &self.id()) @@ -324,7 +324,7 @@ pub enum SpanGraphEventRef<'a> { Child { graph: SpanGraphRef<'a> }, } -impl<'a> SpanGraphEventRef<'a> { +impl SpanGraphEventRef<'_> { pub fn corrected_total_time(&self) -> u64 { match self { SpanGraphEventRef::SelfTime { duration } => *duration, diff --git a/turbopack/crates/turbopack-trace-server/src/span_ref.rs b/turbopack/crates/turbopack-trace-server/src/span_ref.rs index 7439ef9d128ff..408af87582e5c 100644 --- a/turbopack/crates/turbopack-trace-server/src/span_ref.rs +++ b/turbopack/crates/turbopack-trace-server/src/span_ref.rs @@ -403,7 +403,7 @@ impl<'a> SpanRef<'a> { } } -impl<'a> Debug for SpanRef<'a> { +impl Debug for SpanRef<'_> { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { f.debug_struct("SpanRef") .field("id", &self.id()) diff --git a/turbopack/crates/turbopack-trace-server/src/store_container.rs b/turbopack/crates/turbopack-trace-server/src/store_container.rs index ef5fc92979ddc..ce17b625b6397 100644 --- a/turbopack/crates/turbopack-trace-server/src/store_container.rs +++ b/turbopack/crates/turbopack-trace-server/src/store_container.rs @@ -56,13 +56,13 @@ pub struct StoreReadGuard<'a> { guard: RwLockReadGuard<'a, StoreWithGeneration>, } -impl<'a> StoreReadGuard<'a> { +impl StoreReadGuard<'_> { pub fn generation(&self) -> usize { self.guard.generation } } -impl<'a> Deref for StoreReadGuard<'a> { +impl Deref for StoreReadGuard<'_> { type Target = Store; fn deref(&self) -> &Self::Target { @@ -74,7 +74,7 @@ pub struct StoreWriteGuard<'a> { guard: RwLockWriteGuard<'a, StoreWithGeneration>, } -impl<'a> Deref for StoreWriteGuard<'a> { +impl Deref for StoreWriteGuard<'_> { type Target = Store; fn deref(&self) -> &Self::Target { @@ -82,7 +82,7 @@ impl<'a> Deref for StoreWriteGuard<'a> { } } -impl<'a> DerefMut for StoreWriteGuard<'a> { +impl DerefMut for StoreWriteGuard<'_> { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.guard.store } diff --git a/turbopack/crates/turbopack-trace-server/src/viewer.rs b/turbopack/crates/turbopack-trace-server/src/viewer.rs index 7e3271350ed27..c27e33ed1b37f 100644 --- a/turbopack/crates/turbopack-trace-server/src/viewer.rs +++ b/turbopack/crates/turbopack-trace-server/src/viewer.rs @@ -286,7 +286,7 @@ enum QueueItem<'a> { SpanBottomUpSpan(SpanRef<'a>), } -impl<'a> QueueItem<'a> { +impl QueueItem<'_> { fn value(&self, value_mode: ValueMode) -> u64 { match self { QueueItem::Span(span) => value_mode.value_from_span(span), @@ -1088,8 +1088,7 @@ fn add_child_item<'a>( let child_width = child.value(value_mode); let max_depth = child.max_depth(); let pixel1 = *current * view_rect.horizontal_pixels / view_rect.width; - let pixel2 = ((*current + child_width) * view_rect.horizontal_pixels + view_rect.width - 1) - / view_rect.width; + let pixel2 = ((*current + child_width) * view_rect.horizontal_pixels).div_ceil(view_rect.width); let start = *current; *current += child_width; diff --git a/turbopack/crates/turbopack-trace-utils/src/exit.rs b/turbopack/crates/turbopack-trace-utils/src/exit.rs index f9aeea066ed15..a9d42c4a56f79 100644 --- a/turbopack/crates/turbopack-trace-utils/src/exit.rs +++ b/turbopack/crates/turbopack-trace-utils/src/exit.rs @@ -145,6 +145,7 @@ impl ExitReceiver { #[cfg(test)] mod tests { + #![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::{ future::Future, pin::Pin, diff --git a/turbopack/crates/turbopack-trace-utils/src/lib.rs b/turbopack/crates/turbopack-trace-utils/src/lib.rs index 8b94c0e853ae9..984fc6b9778d9 100644 --- a/turbopack/crates/turbopack-trace-utils/src/lib.rs +++ b/turbopack/crates/turbopack-trace-utils/src/lib.rs @@ -3,6 +3,7 @@ #![feature(round_char_boundary)] #![feature(thread_id_value)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod exit; mod flavor; diff --git a/turbopack/crates/turbopack-trace-utils/src/tracing.rs b/turbopack/crates/turbopack-trace-utils/src/tracing.rs index 76e4ab159d297..482ef70553892 100644 --- a/turbopack/crates/turbopack-trace-utils/src/tracing.rs +++ b/turbopack/crates/turbopack-trace-utils/src/tracing.rs @@ -123,7 +123,7 @@ impl Display for TraceValue<'_> { } } -impl<'a> TraceValue<'a> { +impl TraceValue<'_> { pub fn as_u64(&self) -> Option { match self { TraceValue::UInt(u) => Some(*u), diff --git a/turbopack/crates/turbopack-wasm/src/lib.rs b/turbopack/crates/turbopack-wasm/src/lib.rs index e55c70764c871..83dcc9b89c0f1 100644 --- a/turbopack/crates/turbopack-wasm/src/lib.rs +++ b/turbopack/crates/turbopack-wasm/src/lib.rs @@ -7,6 +7,7 @@ #![feature(min_specialization)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub(crate) mod analysis; pub(crate) mod loader; diff --git a/turbopack/crates/turbopack/examples/turbopack.rs b/turbopack/crates/turbopack/examples/turbopack.rs index cda2879cb23dc..ea2910af93717 100644 --- a/turbopack/crates/turbopack/examples/turbopack.rs +++ b/turbopack/crates/turbopack/examples/turbopack.rs @@ -1,4 +1,5 @@ #![feature(trivial_bounds)] +#![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use std::{ env::current_dir, diff --git a/turbopack/crates/turbopack/src/lib.rs b/turbopack/crates/turbopack/src/lib.rs index 8672b15d3ea58..b9f0ade864b4f 100644 --- a/turbopack/crates/turbopack/src/lib.rs +++ b/turbopack/crates/turbopack/src/lib.rs @@ -2,10 +2,10 @@ #![feature(trivial_bounds)] #![feature(min_specialization)] #![feature(map_try_insert)] -#![feature(option_get_or_insert_default)] #![feature(hash_set_entry)] #![recursion_limit = "256"] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] pub mod evaluate_context; mod graph; diff --git a/turbopack/crates/turbopack/src/module_options/module_options_context.rs b/turbopack/crates/turbopack/src/module_options/module_options_context.rs index 8eab53e5c7670..2d6b19374101d 100644 --- a/turbopack/crates/turbopack/src/module_options/module_options_context.rs +++ b/turbopack/crates/turbopack/src/module_options/module_options_context.rs @@ -54,6 +54,7 @@ pub enum TypeofWindow { } /// Configuration options for the decorators transform. +/// /// This is not part of Typescript transform: while there are typescript /// specific transforms (legay decorators), there is an ecma decorator transform /// as well for the JS. diff --git a/turbopack/crates/turbopack/tests/node-file-trace.rs b/turbopack/crates/turbopack/tests/node-file-trace.rs index 4343a5534088d..7778b5419955f 100644 --- a/turbopack/crates/turbopack/tests/node-file-trace.rs +++ b/turbopack/crates/turbopack/tests/node-file-trace.rs @@ -1,5 +1,6 @@ #![allow(clippy::items_after_test_module)] #![feature(arbitrary_self_types)] +#![feature(arbitrary_self_types_pointers)] mod helpers; #[cfg(feature = "bench_against_node_nft")]