diff options
| author | bors <bors@rust-lang.org> | 2024-07-29 14:07:33 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-07-29 14:07:33 +0000 |
| commit | 722f79d374cdf97fdeaf14aaa3e8dde10db07140 (patch) | |
| tree | c178adf20881030ce0a8cebaad2bf0903ebda643 /src/tools/rust-analyzer/crates/project-model | |
| parent | 51130d8222c3228a9576e3e114a0016510a9da0f (diff) | |
| parent | 5ac8b79ca8087fa86185ba2c472ee5e0ceae6e5c (diff) | |
Auto merge of #17707 - Veykril:proc-macro-err-cleanup, r=Veykril
feat: Use spans for builtin and declarative macro expansion errors This should generally improve some error reporting for macro expansion errors. Especially for `compile_error!` within proc-macros
Diffstat (limited to 'src/tools/rust-analyzer/crates/project-model')
| -rw-r--r-- | src/tools/rust-analyzer/crates/project-model/src/workspace.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs index bfbdf038357..31d1c77fd07 100644 --- a/src/tools/rust-analyzer/crates/project-model/src/workspace.rs +++ b/src/tools/rust-analyzer/crates/project-model/src/workspace.rs @@ -934,7 +934,10 @@ fn project_json_to_crate_graph( if *is_proc_macro { if let Some(path) = proc_macro_dylib_path.clone() { let node = Ok(( - display_name.as_ref().map(|it| it.canonical_name().as_str().to_owned()), + display_name + .as_ref() + .map(|it| it.canonical_name().as_str().to_owned()) + .unwrap_or_else(|| format!("crate{}", idx.0)), path, )); proc_macros.insert(crate_graph_crate_id, node); @@ -1355,8 +1358,8 @@ fn add_target_crate_root( ); if let TargetKind::Lib { is_proc_macro: true } = kind { let proc_macro = match build_data.as_ref().map(|it| it.proc_macro_dylib_path.as_ref()) { - Some(it) => it.cloned().map(|path| Ok((Some(cargo_name.to_owned()), path))), - None => Some(Err("crate has not yet been built".to_owned())), + Some(it) => it.cloned().map(|path| Ok((cargo_name.to_owned(), path))), + None => Some(Err("proc-macro crate is missing its build data".to_owned())), }; if let Some(proc_macro) = proc_macro { proc_macros.insert(crate_id, proc_macro); |
