@@ -22,7 +22,7 @@ use std::fmt::{Display, Write as _};
22
22
use std:: ops:: { Add , Neg , Not , Sub } ;
23
23
24
24
/// A helper type to build suggestion correctly handling parentheses.
25
- #[ derive( Clone , PartialEq ) ]
25
+ #[ derive( Clone , Debug , PartialEq ) ]
26
26
pub enum Sugg < ' a > {
27
27
/// An expression that never needs parentheses such as `1337` or `[0; 42]`.
28
28
NonParen ( Cow < ' a , str > ) ,
@@ -177,11 +177,11 @@ impl<'a> Sugg<'a> {
177
177
pub fn ast ( cx : & EarlyContext < ' _ > , expr : & ast:: Expr , default : & ' a str ) -> Self {
178
178
use rustc_ast:: ast:: RangeLimits ;
179
179
180
- let get_whole_snippet = || {
181
- if expr . span . from_expansion ( ) {
182
- snippet_with_macro_callsite ( cx, expr . span , default)
180
+ let snippet_without_expansion = |cx , span : Span , default | {
181
+ if span. from_expansion ( ) {
182
+ snippet_with_macro_callsite ( cx, span, default)
183
183
} else {
184
- snippet ( cx, expr . span , default)
184
+ snippet ( cx, span, default)
185
185
}
186
186
} ;
187
187
@@ -192,7 +192,7 @@ impl<'a> Sugg<'a> {
192
192
| ast:: ExprKind :: If ( ..)
193
193
| ast:: ExprKind :: Let ( ..)
194
194
| ast:: ExprKind :: Unary ( ..)
195
- | ast:: ExprKind :: Match ( ..) => Sugg :: MaybeParen ( get_whole_snippet ( ) ) ,
195
+ | ast:: ExprKind :: Match ( ..) => Sugg :: MaybeParen ( snippet_without_expansion ( cx , expr . span , default ) ) ,
196
196
ast:: ExprKind :: Async ( ..)
197
197
| ast:: ExprKind :: Block ( ..)
198
198
| ast:: ExprKind :: Break ( ..)
@@ -221,41 +221,45 @@ impl<'a> Sugg<'a> {
221
221
| ast:: ExprKind :: Array ( ..)
222
222
| ast:: ExprKind :: While ( ..)
223
223
| ast:: ExprKind :: Await ( ..)
224
- | ast:: ExprKind :: Err => Sugg :: NonParen ( get_whole_snippet ( ) ) ,
224
+ | ast:: ExprKind :: Err => Sugg :: NonParen ( snippet_without_expansion ( cx , expr . span , default ) ) ,
225
225
ast:: ExprKind :: Range ( ref lhs, ref rhs, RangeLimits :: HalfOpen ) => Sugg :: BinOp (
226
226
AssocOp :: DotDot ,
227
- lhs. as_ref ( ) . map_or ( "" . into ( ) , |lhs| snippet ( cx, lhs. span , default) ) ,
228
- rhs. as_ref ( ) . map_or ( "" . into ( ) , |rhs| snippet ( cx, rhs. span , default) ) ,
227
+ lhs. as_ref ( )
228
+ . map_or ( "" . into ( ) , |lhs| snippet_without_expansion ( cx, lhs. span , default) ) ,
229
+ rhs. as_ref ( )
230
+ . map_or ( "" . into ( ) , |rhs| snippet_without_expansion ( cx, rhs. span , default) ) ,
229
231
) ,
230
232
ast:: ExprKind :: Range ( ref lhs, ref rhs, RangeLimits :: Closed ) => Sugg :: BinOp (
231
233
AssocOp :: DotDotEq ,
232
- lhs. as_ref ( ) . map_or ( "" . into ( ) , |lhs| snippet ( cx, lhs. span , default) ) ,
233
- rhs. as_ref ( ) . map_or ( "" . into ( ) , |rhs| snippet ( cx, rhs. span , default) ) ,
234
+ lhs. as_ref ( )
235
+ . map_or ( "" . into ( ) , |lhs| snippet_without_expansion ( cx, lhs. span , default) ) ,
236
+ rhs. as_ref ( )
237
+ . map_or ( "" . into ( ) , |rhs| snippet_without_expansion ( cx, rhs. span , default) ) ,
234
238
) ,
235
239
ast:: ExprKind :: Assign ( ref lhs, ref rhs, _) => Sugg :: BinOp (
236
240
AssocOp :: Assign ,
237
- snippet ( cx, lhs. span , default) ,
238
- snippet ( cx, rhs. span , default) ,
241
+ snippet_without_expansion ( cx, lhs. span , default) ,
242
+ snippet_without_expansion ( cx, rhs. span , default) ,
239
243
) ,
240
244
ast:: ExprKind :: AssignOp ( op, ref lhs, ref rhs) => Sugg :: BinOp (
241
245
astbinop2assignop ( op) ,
242
- snippet ( cx, lhs. span , default) ,
243
- snippet ( cx, rhs. span , default) ,
246
+ snippet_without_expansion ( cx, lhs. span , default) ,
247
+ snippet_without_expansion ( cx, rhs. span , default) ,
244
248
) ,
245
249
ast:: ExprKind :: Binary ( op, ref lhs, ref rhs) => Sugg :: BinOp (
246
250
AssocOp :: from_ast_binop ( op. node ) ,
247
- snippet ( cx, lhs. span , default) ,
248
- snippet ( cx, rhs. span , default) ,
251
+ snippet_without_expansion ( cx, lhs. span , default) ,
252
+ snippet_without_expansion ( cx, rhs. span , default) ,
249
253
) ,
250
254
ast:: ExprKind :: Cast ( ref lhs, ref ty) => Sugg :: BinOp (
251
255
AssocOp :: As ,
252
- snippet ( cx, lhs. span , default) ,
253
- snippet ( cx, ty. span , default) ,
256
+ snippet_without_expansion ( cx, lhs. span , default) ,
257
+ snippet_without_expansion ( cx, ty. span , default) ,
254
258
) ,
255
259
ast:: ExprKind :: Type ( ref lhs, ref ty) => Sugg :: BinOp (
256
260
AssocOp :: Colon ,
257
- snippet ( cx, lhs. span , default) ,
258
- snippet ( cx, ty. span , default) ,
261
+ snippet_without_expansion ( cx, lhs. span , default) ,
262
+ snippet_without_expansion ( cx, ty. span , default) ,
259
263
) ,
260
264
}
261
265
}
0 commit comments