Don't expose impl details of SyntaxPtr
This commit is contained in:
@@ -3,7 +3,7 @@
|
||||
use std::any::Any;
|
||||
|
||||
use hir_expand::{db::AstDatabase, name::Name, HirFileId, InFile};
|
||||
use ra_syntax::{ast, AstNode, AstPtr, SyntaxNodePtr};
|
||||
use ra_syntax::{ast, AstNode, AstPtr, SyntaxNodePtr, TextRange};
|
||||
use stdx::format_to;
|
||||
|
||||
pub use hir_def::{diagnostics::UnresolvedModule, expr::MatchArm};
|
||||
@@ -13,6 +13,7 @@ pub use hir_expand::diagnostics::{AstDiagnostic, Diagnostic, DiagnosticSink};
|
||||
pub struct NoSuchField {
|
||||
pub file: HirFileId,
|
||||
pub field: AstPtr<ast::RecordField>,
|
||||
pub highlight_range: TextRange,
|
||||
}
|
||||
|
||||
impl Diagnostic for NoSuchField {
|
||||
@@ -20,6 +21,10 @@ impl Diagnostic for NoSuchField {
|
||||
"no such field".to_string()
|
||||
}
|
||||
|
||||
fn highlight_range(&self) -> TextRange {
|
||||
self.highlight_range
|
||||
}
|
||||
|
||||
fn source(&self) -> InFile<SyntaxNodePtr> {
|
||||
InFile { file_id: self.file, value: self.field.clone().into() }
|
||||
}
|
||||
@@ -33,6 +38,7 @@ impl Diagnostic for NoSuchField {
|
||||
pub struct MissingFields {
|
||||
pub file: HirFileId,
|
||||
pub field_list: AstPtr<ast::RecordFieldList>,
|
||||
pub highlight_range: TextRange,
|
||||
pub missed_fields: Vec<Name>,
|
||||
}
|
||||
|
||||
@@ -44,6 +50,10 @@ impl Diagnostic for MissingFields {
|
||||
}
|
||||
buf
|
||||
}
|
||||
fn highlight_range(&self) -> TextRange {
|
||||
self.highlight_range
|
||||
}
|
||||
|
||||
fn source(&self) -> InFile<SyntaxNodePtr> {
|
||||
InFile { file_id: self.file, value: self.field_list.clone().into() }
|
||||
}
|
||||
@@ -66,6 +76,7 @@ impl AstDiagnostic for MissingFields {
|
||||
pub struct MissingPatFields {
|
||||
pub file: HirFileId,
|
||||
pub field_list: AstPtr<ast::RecordFieldPatList>,
|
||||
pub highlight_range: TextRange,
|
||||
pub missed_fields: Vec<Name>,
|
||||
}
|
||||
|
||||
@@ -77,6 +88,9 @@ impl Diagnostic for MissingPatFields {
|
||||
}
|
||||
buf
|
||||
}
|
||||
fn highlight_range(&self) -> TextRange {
|
||||
self.highlight_range
|
||||
}
|
||||
fn source(&self) -> InFile<SyntaxNodePtr> {
|
||||
InFile { file_id: self.file, value: self.field_list.clone().into() }
|
||||
}
|
||||
@@ -90,12 +104,16 @@ pub struct MissingMatchArms {
|
||||
pub file: HirFileId,
|
||||
pub match_expr: AstPtr<ast::Expr>,
|
||||
pub arms: AstPtr<ast::MatchArmList>,
|
||||
pub highlight_range: TextRange,
|
||||
}
|
||||
|
||||
impl Diagnostic for MissingMatchArms {
|
||||
fn message(&self) -> String {
|
||||
String::from("Missing match arm")
|
||||
}
|
||||
fn highlight_range(&self) -> TextRange {
|
||||
self.highlight_range
|
||||
}
|
||||
fn source(&self) -> InFile<SyntaxNodePtr> {
|
||||
InFile { file_id: self.file, value: self.match_expr.clone().into() }
|
||||
}
|
||||
@@ -108,12 +126,16 @@ impl Diagnostic for MissingMatchArms {
|
||||
pub struct MissingOkInTailExpr {
|
||||
pub file: HirFileId,
|
||||
pub expr: AstPtr<ast::Expr>,
|
||||
pub highlight_range: TextRange,
|
||||
}
|
||||
|
||||
impl Diagnostic for MissingOkInTailExpr {
|
||||
fn message(&self) -> String {
|
||||
"wrap return expression in Ok".to_string()
|
||||
}
|
||||
fn highlight_range(&self) -> TextRange {
|
||||
self.highlight_range
|
||||
}
|
||||
fn source(&self) -> InFile<SyntaxNodePtr> {
|
||||
InFile { file_id: self.file, value: self.expr.clone().into() }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user