Skip to content

Commit ef467b4

Browse files
authored
refactor: use newtype for alias artifact (#12754)
1 parent 476c9a0 commit ef467b4

File tree

9 files changed

+328
-14
lines changed

9 files changed

+328
-14
lines changed
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
use std::ops::{Deref, DerefMut};
2+
3+
use rspack_collections::IdentifierSet;
4+
5+
#[derive(Debug, Default, Clone)]
6+
pub struct AsyncModulesArtifact(IdentifierSet);
7+
8+
impl Deref for AsyncModulesArtifact {
9+
type Target = IdentifierSet;
10+
11+
fn deref(&self) -> &Self::Target {
12+
&self.0
13+
}
14+
}
15+
16+
impl DerefMut for AsyncModulesArtifact {
17+
fn deref_mut(&mut self) -> &mut Self::Target {
18+
&mut self.0
19+
}
20+
}
21+
22+
impl From<IdentifierSet> for AsyncModulesArtifact {
23+
fn from(value: IdentifierSet) -> Self {
24+
Self(value)
25+
}
26+
}
27+
28+
impl From<AsyncModulesArtifact> for IdentifierSet {
29+
fn from(value: AsyncModulesArtifact) -> Self {
30+
value.0
31+
}
32+
}
33+
34+
impl FromIterator<<IdentifierSet as IntoIterator>::Item> for AsyncModulesArtifact {
35+
fn from_iter<T: IntoIterator<Item = <IdentifierSet as IntoIterator>::Item>>(iter: T) -> Self {
36+
Self(IdentifierSet::from_iter(iter))
37+
}
38+
}
39+
40+
impl IntoIterator for AsyncModulesArtifact {
41+
type Item = <IdentifierSet as IntoIterator>::Item;
42+
type IntoIter = <IdentifierSet as IntoIterator>::IntoIter;
43+
44+
fn into_iter(self) -> Self::IntoIter {
45+
self.0.into_iter()
46+
}
47+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
use std::ops::{Deref, DerefMut};
2+
3+
use rspack_collections::UkeyMap;
4+
5+
use crate::{ChunkUkey, RuntimeGlobals};
6+
7+
#[derive(Debug, Default, Clone)]
8+
pub struct CgcRuntimeRequirementsArtifact(UkeyMap<ChunkUkey, RuntimeGlobals>);
9+
10+
impl Deref for CgcRuntimeRequirementsArtifact {
11+
type Target = UkeyMap<ChunkUkey, RuntimeGlobals>;
12+
13+
fn deref(&self) -> &Self::Target {
14+
&self.0
15+
}
16+
}
17+
18+
impl DerefMut for CgcRuntimeRequirementsArtifact {
19+
fn deref_mut(&mut self) -> &mut Self::Target {
20+
&mut self.0
21+
}
22+
}
23+
24+
impl From<UkeyMap<ChunkUkey, RuntimeGlobals>> for CgcRuntimeRequirementsArtifact {
25+
fn from(value: UkeyMap<ChunkUkey, RuntimeGlobals>) -> Self {
26+
Self(value)
27+
}
28+
}
29+
30+
impl From<CgcRuntimeRequirementsArtifact> for UkeyMap<ChunkUkey, RuntimeGlobals> {
31+
fn from(value: CgcRuntimeRequirementsArtifact) -> Self {
32+
value.0
33+
}
34+
}
35+
36+
impl FromIterator<<UkeyMap<ChunkUkey, RuntimeGlobals> as IntoIterator>::Item>
37+
for CgcRuntimeRequirementsArtifact
38+
{
39+
fn from_iter<
40+
T: IntoIterator<Item = <UkeyMap<ChunkUkey, RuntimeGlobals> as IntoIterator>::Item>,
41+
>(
42+
iter: T,
43+
) -> Self {
44+
Self(UkeyMap::from_iter(iter))
45+
}
46+
}
47+
48+
impl IntoIterator for CgcRuntimeRequirementsArtifact {
49+
type Item = <UkeyMap<ChunkUkey, RuntimeGlobals> as IntoIterator>::Item;
50+
type IntoIter = <UkeyMap<ChunkUkey, RuntimeGlobals> as IntoIterator>::IntoIter;
51+
52+
fn into_iter(self) -> Self::IntoIter {
53+
self.0.into_iter()
54+
}
55+
}
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
use std::ops::{Deref, DerefMut};
2+
3+
use rspack_collections::UkeyMap;
4+
5+
use crate::{ChunkRenderResult, ChunkUkey};
6+
7+
#[derive(Debug, Default, Clone)]
8+
pub struct ChunkRenderArtifact(UkeyMap<ChunkUkey, ChunkRenderResult>);
9+
10+
impl Deref for ChunkRenderArtifact {
11+
type Target = UkeyMap<ChunkUkey, ChunkRenderResult>;
12+
13+
fn deref(&self) -> &Self::Target {
14+
&self.0
15+
}
16+
}
17+
18+
impl DerefMut for ChunkRenderArtifact {
19+
fn deref_mut(&mut self) -> &mut Self::Target {
20+
&mut self.0
21+
}
22+
}
23+
24+
impl From<UkeyMap<ChunkUkey, ChunkRenderResult>> for ChunkRenderArtifact {
25+
fn from(value: UkeyMap<ChunkUkey, ChunkRenderResult>) -> Self {
26+
Self(value)
27+
}
28+
}
29+
30+
impl From<ChunkRenderArtifact> for UkeyMap<ChunkUkey, ChunkRenderResult> {
31+
fn from(value: ChunkRenderArtifact) -> Self {
32+
value.0
33+
}
34+
}
35+
36+
impl FromIterator<<UkeyMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::Item>
37+
for ChunkRenderArtifact
38+
{
39+
fn from_iter<
40+
T: IntoIterator<Item = <UkeyMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::Item>,
41+
>(
42+
iter: T,
43+
) -> Self {
44+
Self(UkeyMap::from_iter(iter))
45+
}
46+
}
47+
48+
impl IntoIterator for ChunkRenderArtifact {
49+
type Item = <UkeyMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::Item;
50+
type IntoIter = <UkeyMap<ChunkUkey, ChunkRenderResult> as IntoIterator>::IntoIter;
51+
52+
fn into_iter(self) -> Self::IntoIter {
53+
self.0.into_iter()
54+
}
55+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
use std::ops::{Deref, DerefMut};
2+
3+
use rspack_collections::IdentifierMap;
4+
use rspack_error::Diagnostic;
5+
6+
#[derive(Debug, Default, Clone)]
7+
pub struct DependenciesDiagnosticsArtifact(IdentifierMap<Vec<Diagnostic>>);
8+
9+
impl DependenciesDiagnosticsArtifact {
10+
pub fn into_values(self) -> impl Iterator<Item = Vec<Diagnostic>> {
11+
self.0.into_values()
12+
}
13+
}
14+
15+
impl Deref for DependenciesDiagnosticsArtifact {
16+
type Target = IdentifierMap<Vec<Diagnostic>>;
17+
18+
fn deref(&self) -> &Self::Target {
19+
&self.0
20+
}
21+
}
22+
23+
impl DerefMut for DependenciesDiagnosticsArtifact {
24+
fn deref_mut(&mut self) -> &mut Self::Target {
25+
&mut self.0
26+
}
27+
}
28+
29+
impl From<IdentifierMap<Vec<Diagnostic>>> for DependenciesDiagnosticsArtifact {
30+
fn from(value: IdentifierMap<Vec<Diagnostic>>) -> Self {
31+
Self(value)
32+
}
33+
}
34+
35+
impl From<DependenciesDiagnosticsArtifact> for IdentifierMap<Vec<Diagnostic>> {
36+
fn from(value: DependenciesDiagnosticsArtifact) -> Self {
37+
value.0
38+
}
39+
}
40+
41+
impl FromIterator<<IdentifierMap<Vec<Diagnostic>> as IntoIterator>::Item>
42+
for DependenciesDiagnosticsArtifact
43+
{
44+
fn from_iter<T: IntoIterator<Item = <IdentifierMap<Vec<Diagnostic>> as IntoIterator>::Item>>(
45+
iter: T,
46+
) -> Self {
47+
Self(IdentifierMap::from_iter(iter))
48+
}
49+
}
50+
51+
impl IntoIterator for DependenciesDiagnosticsArtifact {
52+
type Item = <IdentifierMap<Vec<Diagnostic>> as IntoIterator>::Item;
53+
type IntoIter = <IdentifierMap<Vec<Diagnostic>> as IntoIterator>::IntoIter;
54+
55+
fn into_iter(self) -> Self::IntoIter {
56+
self.0.into_iter()
57+
}
58+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
use std::ops::{Deref, DerefMut};
2+
3+
use rspack_collections::IdentifierSet;
4+
5+
#[derive(Debug, Default, Clone)]
6+
pub struct ImportedByDeferModulesArtifact(IdentifierSet);
7+
8+
impl Deref for ImportedByDeferModulesArtifact {
9+
type Target = IdentifierSet;
10+
11+
fn deref(&self) -> &Self::Target {
12+
&self.0
13+
}
14+
}
15+
16+
impl DerefMut for ImportedByDeferModulesArtifact {
17+
fn deref_mut(&mut self) -> &mut Self::Target {
18+
&mut self.0
19+
}
20+
}
21+
22+
impl From<IdentifierSet> for ImportedByDeferModulesArtifact {
23+
fn from(value: IdentifierSet) -> Self {
24+
Self(value)
25+
}
26+
}
27+
28+
impl From<ImportedByDeferModulesArtifact> for IdentifierSet {
29+
fn from(value: ImportedByDeferModulesArtifact) -> Self {
30+
value.0
31+
}
32+
}
33+
34+
impl FromIterator<<IdentifierSet as IntoIterator>::Item> for ImportedByDeferModulesArtifact {
35+
fn from_iter<T: IntoIterator<Item = <IdentifierSet as IntoIterator>::Item>>(iter: T) -> Self {
36+
Self(IdentifierSet::from_iter(iter))
37+
}
38+
}
39+
40+
impl IntoIterator for ImportedByDeferModulesArtifact {
41+
type Item = <IdentifierSet as IntoIterator>::Item;
42+
type IntoIter = <IdentifierSet as IntoIterator>::IntoIter;
43+
44+
fn into_iter(self) -> Self::IntoIter {
45+
self.0.into_iter()
46+
}
47+
}
Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,31 @@
1-
use rspack_collections::{IdentifierMap, IdentifierSet, UkeyMap};
2-
use rspack_error::Diagnostic;
3-
4-
use crate::{ChunkRenderResult, ChunkUkey, ModuleId, RuntimeGlobals};
5-
1+
mod async_modules_artifact;
2+
mod cgc_runtime_requirements_artifact;
63
mod cgm_hash_artifact;
74
mod cgm_runtime_requirement_artifact;
85
mod chunk_hashes_artifact;
96
mod chunk_ids_artifact;
7+
mod chunk_render_artifact;
108
mod chunk_render_cache_artifact;
119
mod code_generation_results;
10+
mod dependencies_diagnostics_artifact;
11+
mod imported_by_defer_modules_artifact;
1212
mod module_graph_cache_artifact;
13+
mod module_ids_artifact;
1314
mod module_static_cache_artifact;
1415
mod side_effects_do_optimize_artifact;
1516

17+
pub use async_modules_artifact::AsyncModulesArtifact;
18+
pub use cgc_runtime_requirements_artifact::CgcRuntimeRequirementsArtifact;
1619
pub use cgm_hash_artifact::*;
1720
pub use cgm_runtime_requirement_artifact::*;
1821
pub use chunk_hashes_artifact::*;
1922
pub use chunk_ids_artifact::*;
23+
pub use chunk_render_artifact::ChunkRenderArtifact;
2024
pub use chunk_render_cache_artifact::ChunkRenderCacheArtifact;
2125
pub use code_generation_results::*;
26+
pub use dependencies_diagnostics_artifact::DependenciesDiagnosticsArtifact;
27+
pub use imported_by_defer_modules_artifact::ImportedByDeferModulesArtifact;
2228
pub use module_graph_cache_artifact::*;
29+
pub use module_ids_artifact::ModuleIdsArtifact;
2330
pub use module_static_cache_artifact::*;
2431
pub use side_effects_do_optimize_artifact::*;
25-
26-
pub type AsyncModulesArtifact = IdentifierSet;
27-
pub type ImportedByDeferModulesArtifact = IdentifierSet;
28-
pub type DependenciesDiagnosticsArtifact = IdentifierMap<Vec<Diagnostic>>;
29-
pub type ModuleIdsArtifact = IdentifierMap<ModuleId>;
30-
pub type CgcRuntimeRequirementsArtifact = UkeyMap<ChunkUkey, RuntimeGlobals>;
31-
pub type ChunkRenderArtifact = UkeyMap<ChunkUkey, ChunkRenderResult>;
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
use std::ops::{Deref, DerefMut};
2+
3+
use rspack_collections::IdentifierMap;
4+
5+
use crate::ModuleId;
6+
7+
#[derive(Debug, Default, Clone)]
8+
pub struct ModuleIdsArtifact(IdentifierMap<ModuleId>);
9+
10+
impl Deref for ModuleIdsArtifact {
11+
type Target = IdentifierMap<ModuleId>;
12+
13+
fn deref(&self) -> &Self::Target {
14+
&self.0
15+
}
16+
}
17+
18+
impl DerefMut for ModuleIdsArtifact {
19+
fn deref_mut(&mut self) -> &mut Self::Target {
20+
&mut self.0
21+
}
22+
}
23+
24+
impl From<IdentifierMap<ModuleId>> for ModuleIdsArtifact {
25+
fn from(value: IdentifierMap<ModuleId>) -> Self {
26+
Self(value)
27+
}
28+
}
29+
30+
impl From<ModuleIdsArtifact> for IdentifierMap<ModuleId> {
31+
fn from(value: ModuleIdsArtifact) -> Self {
32+
value.0
33+
}
34+
}
35+
36+
impl FromIterator<<IdentifierMap<ModuleId> as IntoIterator>::Item> for ModuleIdsArtifact {
37+
fn from_iter<T: IntoIterator<Item = <IdentifierMap<ModuleId> as IntoIterator>::Item>>(
38+
iter: T,
39+
) -> Self {
40+
Self(IdentifierMap::from_iter(iter))
41+
}
42+
}
43+
44+
impl IntoIterator for ModuleIdsArtifact {
45+
type Item = <IdentifierMap<ModuleId> as IntoIterator>::Item;
46+
type IntoIter = <IdentifierMap<ModuleId> as IntoIterator>::IntoIter;
47+
48+
fn into_iter(self) -> Self::IntoIter {
49+
self.0.into_iter()
50+
}
51+
}

crates/rspack_core/src/compilation/create_chunk_assets/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ impl Compilation {
100100
})
101101
.await;
102102

103-
let mut chunk_render_results: UkeyMap<ChunkUkey, ChunkRenderResult> = Default::default();
103+
let mut chunk_render_results = ChunkRenderArtifact::default();
104104
for result in results {
105105
let item = result.to_rspack_result()?;
106106
let (key, value) = item?;

crates/rspack_core/src/compilation/finish_modules/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,8 @@ impl Compilation {
161161
.collect::<Vec<_>>();
162162
(*module_identifier, diagnostics)
163163
})
164-
.collect();
164+
.collect::<rspack_collections::IdentifierMap<Vec<Diagnostic>>>()
165+
.into();
165166
let all_modules_diagnostics = if has_mutations {
166167
dependencies_diagnostics_artifact.extend(dependencies_diagnostics);
167168
dependencies_diagnostics_artifact.clone()

0 commit comments

Comments
 (0)