diff options
author | Phil Ellison <[email protected]> | 2019-08-10 16:40:48 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-08-25 10:55:55 +0100 |
commit | d00a285fa757307bbe0f8dac9e49ac247cf9dab1 (patch) | |
tree | 7ce56753d09f6b71c1a02b3c1b4078a2dd1e02f8 /crates/ra_hir/src/diagnostics.rs | |
parent | fdece911fe8e2f3c22760ea22038a6d00cb70dfa (diff) |
Initial implementation of Ok-wrapping
Diffstat (limited to 'crates/ra_hir/src/diagnostics.rs')
-rw-r--r-- | crates/ra_hir/src/diagnostics.rs | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/crates/ra_hir/src/diagnostics.rs b/crates/ra_hir/src/diagnostics.rs index 301109cb8..718345d75 100644 --- a/crates/ra_hir/src/diagnostics.rs +++ b/crates/ra_hir/src/diagnostics.rs | |||
@@ -143,3 +143,34 @@ impl AstDiagnostic for MissingFields { | |||
143 | ast::RecordFieldList::cast(node).unwrap() | 143 | ast::RecordFieldList::cast(node).unwrap() |
144 | } | 144 | } |
145 | } | 145 | } |
146 | |||
147 | #[derive(Debug)] | ||
148 | pub struct MissingOkInTailExpr { | ||
149 | pub file: HirFileId, | ||
150 | pub expr: AstPtr<ast::Expr>, | ||
151 | } | ||
152 | |||
153 | impl Diagnostic for MissingOkInTailExpr { | ||
154 | fn message(&self) -> String { | ||
155 | "wrap return expression in Ok".to_string() | ||
156 | } | ||
157 | fn file(&self) -> HirFileId { | ||
158 | self.file | ||
159 | } | ||
160 | fn syntax_node_ptr(&self) -> SyntaxNodePtr { | ||
161 | self.expr.into() | ||
162 | } | ||
163 | fn as_any(&self) -> &(dyn Any + Send + 'static) { | ||
164 | self | ||
165 | } | ||
166 | } | ||
167 | |||
168 | impl AstDiagnostic for MissingOkInTailExpr { | ||
169 | type AST = ast::Expr; | ||
170 | |||
171 | fn ast(&self, db: &impl HirDatabase) -> Self::AST { | ||
172 | let root = db.parse_or_expand(self.file()).unwrap(); | ||
173 | let node = self.syntax_node_ptr().to_node(&root); | ||
174 | ast::Expr::cast(node).unwrap() | ||
175 | } | ||
176 | } | ||