mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-28 17:53:56 +00:00
Merge #2513
2513: Report correct original range in goto_definition r=matklad a=matklad Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
This commit is contained in:
commit
897b550049
@ -19,25 +19,23 @@ pub(crate) fn goto_definition(
|
||||
position: FilePosition,
|
||||
) -> Option<RangeInfo<Vec<NavigationTarget>>> {
|
||||
let file = db.parse_or_expand(position.file_id.into())?;
|
||||
let token = file.token_at_offset(position.offset).filter(|it| !it.kind().is_trivia()).next()?;
|
||||
let token = descend_into_macros(db, position.file_id, token);
|
||||
let original_token =
|
||||
file.token_at_offset(position.offset).filter(|it| !it.kind().is_trivia()).next()?;
|
||||
let token = descend_into_macros(db, position.file_id, original_token.clone());
|
||||
|
||||
let res = match_ast! {
|
||||
let nav_targets = match_ast! {
|
||||
match (token.value.parent()) {
|
||||
ast::NameRef(name_ref) => {
|
||||
let navs = reference_definition(db, token.with_value(&name_ref)).to_vec();
|
||||
RangeInfo::new(name_ref.syntax().text_range(), navs.to_vec())
|
||||
reference_definition(db, token.with_value(&name_ref)).to_vec()
|
||||
},
|
||||
ast::Name(name) => {
|
||||
let navs = name_definition(db, token.with_value(&name))?;
|
||||
RangeInfo::new(name.syntax().text_range(), navs)
|
||||
|
||||
name_definition(db, token.with_value(&name))?
|
||||
},
|
||||
_ => return None,
|
||||
}
|
||||
};
|
||||
|
||||
Some(res)
|
||||
Some(RangeInfo::new(original_token.text_range(), nav_targets))
|
||||
}
|
||||
|
||||
#[derive(Debug)]
|
||||
|
@ -26,6 +26,8 @@ export class Config {
|
||||
public excludeGlobs = [];
|
||||
public useClientWatching = false;
|
||||
public featureFlags = {};
|
||||
// for internal use
|
||||
public withSysroot: null | boolean = null;
|
||||
public cargoWatchOptions: CargoWatchOptions = {
|
||||
enableOnStartup: 'ask',
|
||||
trace: 'off',
|
||||
@ -148,5 +150,8 @@ export class Config {
|
||||
if (config.has('featureFlags')) {
|
||||
this.featureFlags = config.get('featureFlags') || {};
|
||||
}
|
||||
if (config.has('withSysroot')) {
|
||||
this.withSysroot = config.get('withSysroot') || false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -57,7 +57,8 @@ export class Server {
|
||||
maxInlayHintLength: Server.config.maxInlayHintLength,
|
||||
excludeGlobs: Server.config.excludeGlobs,
|
||||
useClientWatching: Server.config.useClientWatching,
|
||||
featureFlags: Server.config.featureFlags
|
||||
featureFlags: Server.config.featureFlags,
|
||||
withSysroot: Server.config.withSysroot
|
||||
},
|
||||
traceOutputChannel
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user