File tree 3 files changed +18
-19
lines changed
3 files changed +18
-19
lines changed Original file line number Diff line number Diff line change @@ -257,6 +257,7 @@ pub trait ProcMacroExpander: fmt::Debug + Send + Sync + RefUnwindSafe {
257
257
) -> Result < Subtree , ProcMacroExpansionError > ;
258
258
}
259
259
260
+ #[ derive( Debug ) ]
260
261
pub enum ProcMacroExpansionError {
261
262
Panic ( String ) ,
262
263
/// Things like "proc macro server was killed by OOM".
Original file line number Diff line number Diff line change @@ -161,8 +161,8 @@ impl IdentClass {
161
161
ast:: AwaitExpr ( await_expr) => OperatorClass :: classify_await( sema, & await_expr) . map( IdentClass :: Operator ) ,
162
162
ast:: BinExpr ( bin_expr) => OperatorClass :: classify_bin( sema, & bin_expr) . map( IdentClass :: Operator ) ,
163
163
ast:: IndexExpr ( index_expr) => OperatorClass :: classify_index( sema, & index_expr) . map( IdentClass :: Operator ) ,
164
- ast:: PrefixExpr ( prefix_expr) => OperatorClass :: classify_prefix( sema, & prefix_expr) . map( IdentClass :: Operator ) ,
165
- ast:: TryExpr ( try_expr) => OperatorClass :: classify_try( sema, & try_expr) . map( IdentClass :: Operator ) ,
164
+ ast:: PrefixExpr ( prefix_expr) => OperatorClass :: classify_prefix( sema, & prefix_expr) . map( IdentClass :: Operator ) ,
165
+ ast:: TryExpr ( try_expr) => OperatorClass :: classify_try( sema, & try_expr) . map( IdentClass :: Operator ) ,
166
166
_ => None ,
167
167
}
168
168
}
Original file line number Diff line number Diff line change @@ -180,26 +180,24 @@ fn hover_simple(
180
180
descended ( )
181
181
. filter_map ( |token| {
182
182
let node = token. parent ( ) ?;
183
- let class = IdentClass :: classify_token ( sema, token) ?;
184
- if let IdentClass :: Operator ( OperatorClass :: Await ( _) ) = class {
183
+ match IdentClass :: classify_node ( sema, & node) ? {
185
184
// It's better for us to fall back to the keyword hover here,
186
185
// rendering poll is very confusing
187
- return None ;
186
+ IdentClass :: Operator ( OperatorClass :: Await ( _) ) => None ,
187
+
188
+ IdentClass :: NameRefClass ( NameRefClass :: ExternCrateShorthand {
189
+ decl,
190
+ ..
191
+ } ) => Some ( vec ! [ ( Definition :: ExternCrateDecl ( decl) , node) ] ) ,
192
+
193
+ class => Some (
194
+ class
195
+ . definitions ( )
196
+ . into_iter ( )
197
+ . zip ( iter:: repeat ( node) )
198
+ . collect :: < Vec < _ > > ( ) ,
199
+ ) ,
188
200
}
189
- if let IdentClass :: NameRefClass ( NameRefClass :: ExternCrateShorthand {
190
- decl,
191
- ..
192
- } ) = class
193
- {
194
- return Some ( vec ! [ ( Definition :: ExternCrateDecl ( decl) , node) ] ) ;
195
- }
196
- Some (
197
- class
198
- . definitions ( )
199
- . into_iter ( )
200
- . zip ( iter:: once ( node) . cycle ( ) )
201
- . collect :: < Vec < _ > > ( ) ,
202
- )
203
201
} )
204
202
. flatten ( )
205
203
. unique_by ( |& ( def, _) | def)
You can’t perform that action at this time.
0 commit comments