Auto merge of #14960 - jneem:group-delim-span, r=Veykril
Add span to group.
This appears to fix #14959, but I've never contributed to rust-analyzer before and there were some things that confused me:
- I had to add the `fn byte_range` method to get it to build. This was added to rust in [April](https://github.com/rust-lang/rust/pull/109002), so I don't understand why it wasn't needed until now
- When testing, I ran into the fact that rust recently updated its `METADATA_VERSION`, so I had to test this with nightly-2023-05-20. But then I noticed that rust has its own copy of `rust-analyzer`, and the metadata version bump has already been [handled there](60e95e76d0
). So I guess I don't really understand the relationship between the code there and the code here.
This commit is contained in:
commit
489eeab978
@ -97,7 +97,7 @@ fn from_token_tree(
|
|||||||
match tree {
|
match tree {
|
||||||
bridge::TokenTree::Group(group) => {
|
bridge::TokenTree::Group(group) => {
|
||||||
let group = Group {
|
let group = Group {
|
||||||
delimiter: delim_to_internal(group.delimiter),
|
delimiter: delim_to_internal(group.delimiter, group.span),
|
||||||
token_trees: match group.stream {
|
token_trees: match group.stream {
|
||||||
Some(stream) => stream.into_iter().collect(),
|
Some(stream) => stream.into_iter().collect(),
|
||||||
None => Vec::new(),
|
None => Vec::new(),
|
||||||
@ -221,14 +221,14 @@ fn into_trees(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delim_to_internal(d: proc_macro::Delimiter) -> tt::Delimiter {
|
fn delim_to_internal(d: proc_macro::Delimiter, span: bridge::DelimSpan<Span>) -> tt::Delimiter {
|
||||||
let kind = match d {
|
let kind = match d {
|
||||||
proc_macro::Delimiter::Parenthesis => tt::DelimiterKind::Parenthesis,
|
proc_macro::Delimiter::Parenthesis => tt::DelimiterKind::Parenthesis,
|
||||||
proc_macro::Delimiter::Brace => tt::DelimiterKind::Brace,
|
proc_macro::Delimiter::Brace => tt::DelimiterKind::Brace,
|
||||||
proc_macro::Delimiter::Bracket => tt::DelimiterKind::Bracket,
|
proc_macro::Delimiter::Bracket => tt::DelimiterKind::Bracket,
|
||||||
proc_macro::Delimiter::None => tt::DelimiterKind::Invisible,
|
proc_macro::Delimiter::None => tt::DelimiterKind::Invisible,
|
||||||
};
|
};
|
||||||
tt::Delimiter { open: tt::TokenId::unspecified(), close: tt::TokenId::unspecified(), kind }
|
tt::Delimiter { open: span.open, close: span.close, kind }
|
||||||
}
|
}
|
||||||
|
|
||||||
fn delim_to_external(d: tt::Delimiter) -> proc_macro::Delimiter {
|
fn delim_to_external(d: tt::Delimiter) -> proc_macro::Delimiter {
|
||||||
|
@ -17,9 +17,15 @@ impl flags::Diagnostics {
|
|||||||
pub fn run(self) -> anyhow::Result<()> {
|
pub fn run(self) -> anyhow::Result<()> {
|
||||||
let mut cargo_config = CargoConfig::default();
|
let mut cargo_config = CargoConfig::default();
|
||||||
cargo_config.sysroot = Some(RustLibSource::Discover);
|
cargo_config.sysroot = Some(RustLibSource::Discover);
|
||||||
|
let with_proc_macro_server = if let Some(p) = &self.proc_macro_srv {
|
||||||
|
let path = vfs::AbsPathBuf::assert(std::env::current_dir()?.join(&p));
|
||||||
|
ProcMacroServerChoice::Explicit(path)
|
||||||
|
} else {
|
||||||
|
ProcMacroServerChoice::Sysroot
|
||||||
|
};
|
||||||
let load_cargo_config = LoadCargoConfig {
|
let load_cargo_config = LoadCargoConfig {
|
||||||
load_out_dirs_from_check: !self.disable_build_scripts,
|
load_out_dirs_from_check: !self.disable_build_scripts,
|
||||||
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
|
with_proc_macro_server,
|
||||||
prefill_caches: false,
|
prefill_caches: false,
|
||||||
};
|
};
|
||||||
let (host, _vfs, _proc_macro) =
|
let (host, _vfs, _proc_macro) =
|
||||||
|
@ -92,6 +92,8 @@
|
|||||||
optional --disable-build-scripts
|
optional --disable-build-scripts
|
||||||
/// Don't use expand proc macros.
|
/// Don't use expand proc macros.
|
||||||
optional --disable-proc-macros
|
optional --disable-proc-macros
|
||||||
|
/// Run a custom proc-macro-srv binary.
|
||||||
|
optional --proc-macro-srv path: PathBuf
|
||||||
}
|
}
|
||||||
|
|
||||||
cmd ssr {
|
cmd ssr {
|
||||||
@ -189,6 +191,7 @@ pub struct Diagnostics {
|
|||||||
|
|
||||||
pub disable_build_scripts: bool,
|
pub disable_build_scripts: bool,
|
||||||
pub disable_proc_macros: bool,
|
pub disable_proc_macros: bool,
|
||||||
|
pub proc_macro_srv: Option<PathBuf>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
Loading…
Reference in New Issue
Block a user