mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
fix: Smaller spans for unresolved field and method diagnostics
This commit is contained in:
parent
9e82ab54e8
commit
b1a8f83a0c
7 changed files with 99 additions and 18 deletions
|
@ -90,7 +90,7 @@ use stdx::never;
|
|||
use syntax::{
|
||||
algo::find_node_at_range,
|
||||
ast::{self, AstNode},
|
||||
SyntaxNode, SyntaxNodePtr, TextRange,
|
||||
AstPtr, SyntaxNode, SyntaxNodePtr, TextRange,
|
||||
};
|
||||
|
||||
// FIXME: Make this an enum
|
||||
|
@ -584,3 +584,16 @@ fn adjusted_display_range<N: AstNode>(
|
|||
.unwrap_or(range),
|
||||
}
|
||||
}
|
||||
|
||||
// FIXME Replace the one above with this one?
|
||||
fn adjusted_display_range_new<N: AstNode>(
|
||||
ctx: &DiagnosticsContext<'_>,
|
||||
diag_ptr: InFile<AstPtr<N>>,
|
||||
adj: &dyn Fn(N) -> Option<TextRange>,
|
||||
) -> FileRange {
|
||||
let source_file = ctx.sema.parse_or_expand(diag_ptr.file_id);
|
||||
let node = diag_ptr.value.to_node(&source_file);
|
||||
diag_ptr
|
||||
.with_value(adj(node).unwrap_or_else(|| diag_ptr.value.text_range()))
|
||||
.original_node_file_range_rooted(ctx.sema.db)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue