Skip to content

Commit 0ed99f1

Browse files
authored
Turbopack: sort keys in individual to make order deterministic (#82891)
### What? To avoid invalidation due to changed ordering, sort the items.
1 parent 4b567eb commit 0ed99f1

File tree

1 file changed

+12
-4
lines changed

1 file changed

+12
-4
lines changed

turbopack/crates/turbopack-core/src/compile_time_info.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ impl From<serde_json::Value> for CompileTimeDefineValue {
154154
}
155155

156156
#[turbo_tasks::value]
157-
#[derive(Debug, Clone, Hash)]
157+
#[derive(Debug, Clone, Hash, PartialOrd, Ord)]
158158
pub enum DefinableNameSegment {
159159
Name(RcStr),
160160
TypeOf,
@@ -206,12 +206,16 @@ impl CompileTimeDefines {
206206

207207
#[turbo_tasks::function]
208208
pub fn individual(&self) -> Vc<CompileTimeDefinesIndividual> {
209-
Vc::cell(
209+
let mut map: FxIndexMap<Vec<DefinableNameSegment>, ResolvedVc<CompileTimeDefineValue>> =
210210
self.0
211211
.iter()
212212
.map(|(key, value)| (key.clone(), value.clone().resolved_cell()))
213-
.collect(),
214-
)
213+
.collect();
214+
215+
// Sort keys to make order as deterministic as possible
216+
map.sort_keys();
217+
218+
Vc::cell(map)
215219
}
216220
}
217221

@@ -303,6 +307,10 @@ impl FreeVarReferences {
303307
.insert(key.to_vec(), value.clone().resolved_cell());
304308
}
305309

310+
// Sort keys to make order as deterministic as possible
311+
result.sort_keys();
312+
result.iter_mut().for_each(|(_, inner)| inner.sort_keys());
313+
306314
Vc::cell(result)
307315
}
308316
}

0 commit comments

Comments
 (0)