Skip to content

Commit f1aa040

Browse files
committed
parse_macro_expansion_error almost never contains values so Option it
1 parent 490994f commit f1aa040

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

src/tools/rust-analyzer/crates/hir-expand/src/db.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -129,11 +129,10 @@ pub trait ExpandDatabase: SourceDatabase {
129129
/// user wrote in the file that defines the proc-macro.
130130
fn proc_macro_span(&self, fun: AstId<ast::Fn>) -> Span;
131131
/// Firewall query that returns the errors from the `parse_macro_expansion` query.
132-
// FIXME: Option<Arc<...>>
133132
fn parse_macro_expansion_error(
134133
&self,
135134
macro_call: MacroCallId,
136-
) -> ExpandResult<Arc<[SyntaxError]>>;
135+
) -> Option<Arc<ExpandResult<Arc<[SyntaxError]>>>>;
137136
}
138137

139138
/// This expands the given macro call, but with different arguments. This is
@@ -358,8 +357,14 @@ fn parse_macro_expansion(
358357
fn parse_macro_expansion_error(
359358
db: &dyn ExpandDatabase,
360359
macro_call_id: MacroCallId,
361-
) -> ExpandResult<Arc<[SyntaxError]>> {
362-
db.parse_macro_expansion(MacroFileId { macro_call_id }).map(|it| it.0.errors().into())
360+
) -> Option<Arc<ExpandResult<Arc<[SyntaxError]>>>> {
361+
let e: ExpandResult<Arc<[SyntaxError]>> =
362+
db.parse_macro_expansion(MacroFileId { macro_call_id }).map(|it| Arc::from(it.0.errors()));
363+
if e.value.is_empty() && e.err.is_none() {
364+
None
365+
} else {
366+
Some(Arc::new(e))
367+
}
363368
}
364369

365370
pub(crate) fn parse_with_map(

src/tools/rust-analyzer/crates/hir/src/lib.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -831,13 +831,15 @@ fn macro_call_diagnostics(
831831
macro_call_id: MacroCallId,
832832
acc: &mut Vec<AnyDiagnostic>,
833833
) {
834-
let ValueResult { value: parse_errors, err } = db.parse_macro_expansion_error(macro_call_id);
835-
834+
let Some(e) = db.parse_macro_expansion_error(macro_call_id) else {
835+
return;
836+
};
837+
let ValueResult { value: parse_errors, err } = &*e;
836838
if let Some(err) = err {
837839
let loc = db.lookup_intern_macro_call(macro_call_id);
838840
let (node, precise_location, macro_name, kind) = precise_macro_call_location(&loc.kind, db);
839841
let diag = match err {
840-
hir_expand::ExpandError::UnresolvedProcMacro(krate) => {
842+
&hir_expand::ExpandError::UnresolvedProcMacro(krate) => {
841843
UnresolvedProcMacro { node, precise_location, macro_name, kind, krate }.into()
842844
}
843845
err => MacroError { node, precise_location, message: err.to_string() }.into(),

src/tools/rust-analyzer/crates/ide-diagnostics/src/tests.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,6 @@ pub(crate) fn check_diagnostics_with_config(config: DiagnosticsConfig, ra_fixtur
246246
}
247247
}
248248
if expected != actual {
249-
dbg!(&actual);
250249
let fneg = expected
251250
.iter()
252251
.filter(|x| !actual.contains(x))

0 commit comments

Comments
 (0)