@@ -94,11 +94,10 @@ pub(crate) fn hover(
94
94
let sema = & hir:: Semantics :: new ( db) ;
95
95
let file = sema. parse ( file_id) . syntax ( ) . clone ( ) ;
96
96
97
- let offset = if !range. is_empty ( ) {
97
+ if !range. is_empty ( ) {
98
98
return hover_ranged ( & file, range, sema, config) ;
99
- } else {
100
- range. start ( )
101
- } ;
99
+ }
100
+ let offset = range. start ( ) ;
102
101
103
102
let original_token = pick_best_token ( file. token_at_offset ( offset) , |kind| match kind {
104
103
IDENT | INT_NUMBER | LIFETIME_IDENT | T ! [ self ] | T ! [ super ] | T ! [ crate ] => 3 ,
@@ -118,10 +117,11 @@ pub(crate) fn hover(
118
117
let descended = sema. descend_into_macros ( original_token. clone ( ) ) ;
119
118
120
119
// FIXME: Definition should include known lints and the like instead of having this special case here
121
- if let Some ( res ) = descended. iter ( ) . find_map ( |token| {
120
+ let hovered_lint = descended. iter ( ) . find_map ( |token| {
122
121
let attr = token. ancestors ( ) . find_map ( ast:: Attr :: cast) ?;
123
122
render:: try_for_lint ( & attr, token)
124
- } ) {
123
+ } ) ;
124
+ if let Some ( res) = hovered_lint {
125
125
return Some ( RangeInfo :: new ( original_token. text_range ( ) , res) ) ;
126
126
}
127
127
@@ -143,7 +143,9 @@ pub(crate) fn hover(
143
143
144
144
if result. is_none ( ) {
145
145
// fallbacks, show keywords or types
146
- if let Some ( res) = render:: keyword ( sema, config, & original_token) {
146
+
147
+ let res = descended. iter ( ) . find_map ( |token| render:: keyword ( sema, config, & token) ) ;
148
+ if let Some ( res) = res {
147
149
return Some ( RangeInfo :: new ( original_token. text_range ( ) , res) ) ;
148
150
}
149
151
let res = descended
@@ -199,6 +201,7 @@ fn hover_ranged(
199
201
sema : & Semantics < RootDatabase > ,
200
202
config : & HoverConfig ,
201
203
) -> Option < RangeInfo < HoverResult > > {
204
+ // FIXME: make this work in attributes
202
205
let expr_or_pat = file. covering_element ( range) . ancestors ( ) . find_map ( |it| {
203
206
match_ast ! {
204
207
match it {
0 commit comments