@@ -130,6 +130,7 @@ impl Printer {
130
130
enum State {
131
131
Start ,
132
132
Dollar ,
133
+ DollarCrate ,
133
134
DollarIdent ,
134
135
DollarIdentColon ,
135
136
DollarParen ,
@@ -152,7 +153,9 @@ impl Printer {
152
153
for tt in stream {
153
154
let token = Token :: from ( tt) ;
154
155
let ( needs_space, next_state) = match ( & state, & token) {
155
- ( Dollar , Token :: Ident ( _) ) => ( false , if matcher { DollarIdent } else { Other } ) ,
156
+ ( Dollar , Token :: Ident ( _) ) if matcher => ( false , DollarIdent ) ,
157
+ ( Dollar , Token :: Ident ( ident) ) if ident == "crate" => ( false , DollarCrate ) ,
158
+ ( Dollar , Token :: Ident ( _) ) => ( false , Other ) ,
156
159
( DollarIdent , Token :: Punct ( ':' , Spacing :: Alone ) ) => ( false , DollarIdentColon ) ,
157
160
( DollarIdentColon , Token :: Ident ( _) ) => ( false , Other ) ,
158
161
( DollarParen , Token :: Punct ( '+' | '*' | '?' , Spacing :: Alone ) ) => ( false , Other ) ,
@@ -180,7 +183,9 @@ impl Printer {
180
183
( _, Token :: Literal ( _) ) => ( state != Dot , Ident ) ,
181
184
( _, Token :: Punct ( ',' | ';' , _) ) => ( false , Other ) ,
182
185
( _, Token :: Punct ( '.' , _) ) if !matcher => ( state != Ident && state != Delim , Dot ) ,
183
- ( _, Token :: Punct ( ':' , Spacing :: Joint ) ) => ( state != Ident , Colon ) ,
186
+ ( _, Token :: Punct ( ':' , Spacing :: Joint ) ) => {
187
+ ( state != Ident && state != DollarCrate , Colon )
188
+ }
184
189
( _, Token :: Punct ( '$' , _) ) => ( true , Dollar ) ,
185
190
( _, Token :: Punct ( '#' , _) ) => ( true , Pound ) ,
186
191
( _, _) => ( true , Other ) ,
0 commit comments