1- use std:: borrow:: Cow ;
2-
31use rspack_cacheable:: cacheable;
42use rspack_error:: Diagnostic ;
53use rspack_paths:: ArcPathSet ;
@@ -8,16 +6,12 @@ use super::{BoxDependency, DependencyId};
86
97#[ cacheable]
108#[ 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 > ,
2115}
2216
2317impl FactorizeInfo {
@@ -28,16 +22,12 @@ impl FactorizeInfo {
2822 context_dependencies : ArcPathSet ,
2923 missing_dependencies : ArcPathSet ,
3024 ) -> 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,
4131 }
4232 }
4333
@@ -51,52 +41,37 @@ impl FactorizeInfo {
5141 }
5242 }
5343
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+
5454 pub fn is_success ( & self ) -> bool {
55- matches ! ( self , FactorizeInfo :: Success )
55+ self . diagnostics . is_empty ( )
5656 }
5757
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
6560 }
6661
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
7464 }
7565
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
8468 }
8569
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
9472 }
9573
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
10176 }
10277}
0 commit comments