1
- use std:: borrow:: Cow ;
2
-
3
1
use rspack_cacheable:: cacheable;
4
2
use rspack_error:: Diagnostic ;
5
3
use rspack_paths:: ArcPathSet ;
@@ -8,16 +6,12 @@ use super::{BoxDependency, DependencyId};
8
6
9
7
#[ cacheable]
10
8
#[ derive( Debug , Clone , Default ) ]
11
- pub enum FactorizeInfo {
12
- #[ default]
13
- Success ,
14
- Failed {
15
- related_dep_ids : Vec < DependencyId > ,
16
- file_dependencies : ArcPathSet ,
17
- context_dependencies : ArcPathSet ,
18
- missing_dependencies : ArcPathSet ,
19
- diagnostics : Vec < Diagnostic > ,
20
- } ,
9
+ pub struct FactorizeInfo {
10
+ related_dep_ids : Vec < DependencyId > ,
11
+ file_dependencies : ArcPathSet ,
12
+ context_dependencies : ArcPathSet ,
13
+ missing_dependencies : ArcPathSet ,
14
+ diagnostics : Vec < Diagnostic > ,
21
15
}
22
16
23
17
impl FactorizeInfo {
@@ -28,16 +22,12 @@ impl FactorizeInfo {
28
22
context_dependencies : ArcPathSet ,
29
23
missing_dependencies : ArcPathSet ,
30
24
) -> Self {
31
- if diagnostics. is_empty ( ) {
32
- Self :: Success
33
- } else {
34
- Self :: Failed {
35
- related_dep_ids,
36
- file_dependencies,
37
- context_dependencies,
38
- missing_dependencies,
39
- diagnostics,
40
- }
25
+ Self {
26
+ related_dep_ids,
27
+ file_dependencies,
28
+ context_dependencies,
29
+ missing_dependencies,
30
+ diagnostics,
41
31
}
42
32
}
43
33
@@ -51,52 +41,37 @@ impl FactorizeInfo {
51
41
}
52
42
}
53
43
44
+ pub fn revoke ( dep : & mut BoxDependency ) -> Option < FactorizeInfo > {
45
+ if let Some ( d) = dep. as_context_dependency_mut ( ) {
46
+ Some ( std:: mem:: take ( d. factorize_info_mut ( ) ) )
47
+ } else if let Some ( d) = dep. as_module_dependency_mut ( ) {
48
+ Some ( std:: mem:: take ( d. factorize_info_mut ( ) ) )
49
+ } else {
50
+ None
51
+ }
52
+ }
53
+
54
54
pub fn is_success ( & self ) -> bool {
55
- matches ! ( self , FactorizeInfo :: Success )
55
+ self . diagnostics . is_empty ( )
56
56
}
57
57
58
- pub fn related_dep_ids ( & self ) -> Cow < ' _ , [ DependencyId ] > {
59
- match & self {
60
- Self :: Success => Cow :: Owned ( vec ! [ ] ) ,
61
- Self :: Failed {
62
- related_dep_ids, ..
63
- } => Cow :: Borrowed ( related_dep_ids) ,
64
- }
58
+ pub fn related_dep_ids ( & self ) -> & [ DependencyId ] {
59
+ & self . related_dep_ids
65
60
}
66
61
67
- pub fn file_dependencies ( & self ) -> Cow < ' _ , ArcPathSet > {
68
- match & self {
69
- Self :: Success => Cow :: Owned ( Default :: default ( ) ) ,
70
- Self :: Failed {
71
- file_dependencies, ..
72
- } => Cow :: Borrowed ( file_dependencies) ,
73
- }
62
+ pub fn file_dependencies ( & self ) -> & ArcPathSet {
63
+ & self . file_dependencies
74
64
}
75
65
76
- pub fn context_dependencies ( & self ) -> Cow < ' _ , ArcPathSet > {
77
- match & self {
78
- Self :: Success => Cow :: Owned ( Default :: default ( ) ) ,
79
- Self :: Failed {
80
- context_dependencies,
81
- ..
82
- } => Cow :: Borrowed ( context_dependencies) ,
83
- }
66
+ pub fn context_dependencies ( & self ) -> & ArcPathSet {
67
+ & self . context_dependencies
84
68
}
85
69
86
- pub fn missing_dependencies ( & self ) -> Cow < ' _ , ArcPathSet > {
87
- match & self {
88
- Self :: Success => Cow :: Owned ( Default :: default ( ) ) ,
89
- Self :: Failed {
90
- missing_dependencies,
91
- ..
92
- } => Cow :: Borrowed ( missing_dependencies) ,
93
- }
70
+ pub fn missing_dependencies ( & self ) -> & ArcPathSet {
71
+ & self . missing_dependencies
94
72
}
95
73
96
- pub fn diagnostics ( & self ) -> Cow < ' _ , [ Diagnostic ] > {
97
- match & self {
98
- Self :: Success => Cow :: Owned ( vec ! [ ] ) ,
99
- Self :: Failed { diagnostics, .. } => Cow :: Borrowed ( diagnostics) ,
100
- }
74
+ pub fn diagnostics ( & self ) -> & [ Diagnostic ] {
75
+ & self . diagnostics
101
76
}
102
77
}
0 commit comments