@@ -7,20 +7,23 @@ use crate::{db::ExpandDatabase, tt, ExpandError, ExpandResult};
7
7
8
8
#[ derive( Debug , Clone , Copy , Eq , PartialEq , Hash ) ]
9
9
pub struct ProcMacroExpander {
10
- proc_macro_id : Option < ProcMacroId > ,
10
+ proc_macro_id : ProcMacroId ,
11
11
}
12
12
13
+ const DUMMY_ID : u32 = !0 ;
14
+
13
15
impl ProcMacroExpander {
14
16
pub fn new ( proc_macro_id : ProcMacroId ) -> Self {
15
- Self { proc_macro_id : Some ( proc_macro_id) }
17
+ assert_ne ! ( proc_macro_id. 0 , DUMMY_ID ) ;
18
+ Self { proc_macro_id }
16
19
}
17
20
18
21
pub fn dummy ( ) -> Self {
19
- Self { proc_macro_id : None }
22
+ Self { proc_macro_id : ProcMacroId ( DUMMY_ID ) }
20
23
}
21
24
22
25
pub fn is_dummy ( & self ) -> bool {
23
- self . proc_macro_id . is_none ( )
26
+ self . proc_macro_id . 0 == DUMMY_ID
24
27
}
25
28
26
29
pub fn expand (
@@ -32,7 +35,10 @@ impl ProcMacroExpander {
32
35
attr_arg : Option < & tt:: Subtree > ,
33
36
) -> ExpandResult < tt:: Subtree > {
34
37
match self . proc_macro_id {
35
- Some ( id) => {
38
+ ProcMacroId ( DUMMY_ID ) => {
39
+ ExpandResult :: new ( tt:: Subtree :: empty ( ) , ExpandError :: UnresolvedProcMacro ( def_crate) )
40
+ }
41
+ ProcMacroId ( id) => {
36
42
let proc_macros = db. proc_macros ( ) ;
37
43
let proc_macros = match proc_macros. get ( & def_crate) {
38
44
Some ( Ok ( proc_macros) ) => proc_macros,
@@ -44,13 +50,13 @@ impl ProcMacroExpander {
44
50
) ;
45
51
}
46
52
} ;
47
- let proc_macro = match proc_macros. get ( id. 0 as usize ) {
53
+ let proc_macro = match proc_macros. get ( id as usize ) {
48
54
Some ( proc_macro) => proc_macro,
49
55
None => {
50
56
never ! (
51
57
"Proc macro index out of bounds: the length is {} but the index is {}" ,
52
58
proc_macros. len( ) ,
53
- id. 0
59
+ id
54
60
) ;
55
61
return ExpandResult :: new (
56
62
tt:: Subtree :: empty ( ) ,
@@ -81,9 +87,6 @@ impl ProcMacroExpander {
81
87
} ,
82
88
}
83
89
}
84
- None => {
85
- ExpandResult :: new ( tt:: Subtree :: empty ( ) , ExpandError :: UnresolvedProcMacro ( def_crate) )
86
- }
87
90
}
88
91
}
89
92
}
0 commit comments