diff --git a/turbopack/crates/turbopack-core/src/changed.rs b/turbopack/crates/turbopack-core/src/changed.rs index b26b7d0c651afe..7077ef7de777a4 100644 --- a/turbopack/crates/turbopack-core/src/changed.rs +++ b/turbopack/crates/turbopack-core/src/changed.rs @@ -1,7 +1,7 @@ use anyhow::Result; use turbo_tasks::{ Completion, Completions, ResolvedVc, TryJoinIterExt, Vc, - graph::{GraphTraversal, NonDeterministic}, + graph::{AdjacencyMap, GraphTraversal, NonDeterministic}, }; use crate::{ @@ -32,13 +32,13 @@ pub async fn get_referenced_modules( pub async fn any_content_changed_of_module( root: ResolvedVc>, ) -> Result> { - let completions = NonDeterministic::new() + let completions = AdjacencyMap::new() .skip_duplicates() .visit([root], get_referenced_modules) .await .completed()? .into_inner() - .into_iter() + .into_postorder_topological() .map(|m| content_changed(*ResolvedVc::upcast(m))) .map(|v| v.to_resolved()) .try_join() diff --git a/turbopack/crates/turbopack-css/src/asset.rs b/turbopack/crates/turbopack-css/src/asset.rs index c90f061c8de46c..a3df679862f2ae 100644 --- a/turbopack/crates/turbopack-css/src/asset.rs +++ b/turbopack/crates/turbopack-css/src/asset.rs @@ -330,7 +330,6 @@ impl CssChunkItem for CssModuleChunkItem { if let FinalCssResult::Ok { output_code, source_map, - .. } = &*result { Ok(CssChunkItemContent { diff --git a/turbopack/crates/turbopack-css/src/process.rs b/turbopack/crates/turbopack-css/src/process.rs index fa9e905be06114..6c83674a4c9f3c 100644 --- a/turbopack/crates/turbopack-css/src/process.rs +++ b/turbopack/crates/turbopack-css/src/process.rs @@ -2,7 +2,7 @@ use std::sync::{Arc, RwLock}; use anyhow::{Result, bail}; use lightningcss::{ - css_modules::{CssModuleExport, CssModuleExports, Pattern, Segment}, + css_modules::{CssModuleExport, Pattern, Segment}, stylesheet::{MinifyOptions, ParserOptions, PrinterOptions, StyleSheet, ToCssResult}, targets::{BrowserslistConfig, Features, Targets}, traits::ToCss, @@ -193,27 +193,18 @@ pub enum CssWithPlaceholderResult { NotFound, } -#[turbo_tasks::value(shared, serialization = "none", eq = "manual")] +#[turbo_tasks::value(shared, serialization = "none")] pub enum FinalCssResult { Ok { #[turbo_tasks(trace_ignore)] output_code: String, - #[turbo_tasks(trace_ignore)] - exports: Option, - source_map: ResolvedVc, }, Unparsable, NotFound, } -impl PartialEq for FinalCssResult { - fn eq(&self, _: &Self) -> bool { - false - } -} - #[turbo_tasks::function] pub async fn process_css_with_placeholder( parse_result: ResolvedVc, @@ -327,7 +318,6 @@ pub async fn finalize_css( Ok(FinalCssResult::Ok { output_code: result.code, - exports: result.exports, source_map: ResolvedVc::cell(srcmap), } .cell()) diff --git a/turbopack/crates/turbopack-css/src/references/import.rs b/turbopack/crates/turbopack-css/src/references/import.rs index f2433be9fbd456..a33430cb6f81f1 100644 --- a/turbopack/crates/turbopack-css/src/references/import.rs +++ b/turbopack/crates/turbopack-css/src/references/import.rs @@ -21,6 +21,7 @@ use crate::{ }; #[turbo_tasks::value(eq = "manual", serialization = "none", shared)] +#[derive(PartialEq)] pub enum ImportAttributes { LightningCss { #[turbo_tasks(trace_ignore)] @@ -32,11 +33,7 @@ pub enum ImportAttributes { }, } -impl PartialEq for ImportAttributes { - fn eq(&self, _: &Self) -> bool { - false - } -} +impl Eq for ImportAttributes {} impl ImportAttributes { pub fn new_from_lightningcss(prelude: &ImportRule<'static>) -> Self { diff --git a/turbopack/crates/turbopack-ecmascript/src/lib.rs b/turbopack/crates/turbopack-ecmascript/src/lib.rs index 49f70f47d8f585..431579812fc234 100644 --- a/turbopack/crates/turbopack-ecmascript/src/lib.rs +++ b/turbopack/crates/turbopack-ecmascript/src/lib.rs @@ -500,7 +500,8 @@ impl EcmascriptParsable for EcmascriptModuleAsset { if this.options.await?.keep_last_successful_parse { let real_result_value = real_result.await?; let result_value = if matches!(*real_result_value, ParseResult::Ok { .. }) { - this.last_successful_parse.set(real_result_value.clone()); + this.last_successful_parse + .set_unconditionally(real_result_value.clone()); real_result_value } else { let state_ref = this.last_successful_parse.get(); diff --git a/turbopack/crates/turbopack-ecmascript/src/parse.rs b/turbopack/crates/turbopack-ecmascript/src/parse.rs index 21f193bbd82c02..02071065021a69 100644 --- a/turbopack/crates/turbopack-ecmascript/src/parse.rs +++ b/turbopack/crates/turbopack-ecmascript/src/parse.rs @@ -51,7 +51,7 @@ use crate::{ transform::{EcmascriptInputTransforms, TransformContext}, }; -#[turbo_tasks::value(shared, serialization = "none", eq = "manual")] +#[turbo_tasks::value(shared, serialization = "none", eq = "manual", cell = "new")] #[allow(clippy::large_enum_variant)] pub enum ParseResult { // Note: Ok must not contain any Vc as it's snapshot by failsafe_parse @@ -73,15 +73,6 @@ pub enum ParseResult { NotFound, } -impl PartialEq for ParseResult { - fn eq(&self, other: &Self) -> bool { - match (self, other) { - (Self::Ok { .. }, Self::Ok { .. }) => false, - _ => core::mem::discriminant(self) == core::mem::discriminant(other), - } - } -} - /// `original_source_maps_complete` indicates whether the `original_source_maps` cover the whole /// map, i.e. whether every module that ended up in `mappings` had an original sourcemap. #[instrument(level = "info", name = "generate source map", skip_all)]