Skip to content

Commit ebec7e4

Browse files
committed
fix order of chunk items in cycles
1 parent 6d93d65 commit ebec7e4

7 files changed

+64
-51
lines changed

turbopack/crates/turbopack-core/src/chunk/chunk_group.rs

+25-13
Original file line numberDiff line numberDiff line change
@@ -219,13 +219,13 @@ pub async fn chunk_group_content(
219219
if should_trace {
220220
result.traced_modules.insert(node.module);
221221
}
222-
return Ok(GraphTraversalAction::Skip);
222+
return Ok(GraphTraversalAction::Exclude);
223223
}
224224

225225
let Some(chunkable_module) =
226226
ResolvedVc::try_sidecast::<Box<dyn ChunkableModule>>(node.module)
227227
else {
228-
return Ok(GraphTraversalAction::Skip);
228+
return Ok(GraphTraversalAction::Exclude);
229229
};
230230

231231
let is_available = available_modules
@@ -234,10 +234,14 @@ pub async fn chunk_group_content(
234234

235235
let Some((_, edge)) = parent_info else {
236236
return Ok(if is_available {
237-
GraphTraversalAction::Skip
238-
} else {
239-
unsorted_chunkable_modules.insert(node.module, chunkable_module);
237+
GraphTraversalAction::Exclude
238+
} else if unsorted_chunkable_modules
239+
.try_insert(node.module, chunkable_module)
240+
.is_ok()
241+
{
240242
GraphTraversalAction::Continue
243+
} else {
244+
GraphTraversalAction::Exclude
241245
});
242246
};
243247

@@ -246,21 +250,29 @@ pub async fn chunk_group_content(
246250
| ChunkingType::ParallelInheritAsync
247251
| ChunkingType::Shared { .. } => {
248252
if is_available {
249-
GraphTraversalAction::Skip
250-
} else {
251-
unsorted_chunkable_modules.insert(node.module, chunkable_module);
253+
GraphTraversalAction::Exclude
254+
} else if unsorted_chunkable_modules
255+
.try_insert(node.module, chunkable_module)
256+
.is_ok()
257+
{
252258
GraphTraversalAction::Continue
259+
} else {
260+
GraphTraversalAction::Exclude
253261
}
254262
}
255263
ChunkingType::Async => {
256264
if can_split_async {
257265
result.async_modules.insert(chunkable_module);
258-
GraphTraversalAction::Skip
266+
GraphTraversalAction::Exclude
259267
} else if is_available {
260-
GraphTraversalAction::Skip
261-
} else {
262-
unsorted_chunkable_modules.insert(node.module, chunkable_module);
268+
GraphTraversalAction::Exclude
269+
} else if unsorted_chunkable_modules
270+
.try_insert(node.module, chunkable_module)
271+
.is_ok()
272+
{
263273
GraphTraversalAction::Continue
274+
} else {
275+
GraphTraversalAction::Exclude
264276
}
265277
}
266278
ChunkingType::Traced => {
@@ -269,7 +281,7 @@ pub async fn chunk_group_content(
269281
}
270282
ChunkingType::Isolated { .. } => {
271283
// TODO currently not implemented
272-
GraphTraversalAction::Skip
284+
GraphTraversalAction::Exclude
273285
}
274286
})
275287
},

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

+1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#![feature(arbitrary_self_types_pointers)]
66
#![feature(impl_trait_in_assoc_type)]
77
#![feature(iter_intersperse)]
8+
#![feature(map_try_insert)]
89

910
pub mod asset;
1011
pub mod changed;
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)