diff options
author | Aleksey Kladov <[email protected]> | 2019-07-19 16:22:00 +0100 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2019-07-19 16:22:00 +0100 |
commit | 5c594bcb48f01bdcf3068f72cefffda337a03533 (patch) | |
tree | bf584b2bf88a35ebe9e5c91392fecb23b4935c97 /crates/ra_syntax/src/ptr.rs | |
parent | 8718a47088585bdb411f37d1b7cd1244d7528eaa (diff) |
cleanup casts
Diffstat (limited to 'crates/ra_syntax/src/ptr.rs')
-rw-r--r-- | crates/ra_syntax/src/ptr.rs | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/crates/ra_syntax/src/ptr.rs b/crates/ra_syntax/src/ptr.rs index 25824722f..d1b30a2c9 100644 --- a/crates/ra_syntax/src/ptr.rs +++ b/crates/ra_syntax/src/ptr.rs | |||
@@ -61,12 +61,8 @@ impl<N: AstNode> AstPtr<N> { | |||
61 | self.raw | 61 | self.raw |
62 | } | 62 | } |
63 | 63 | ||
64 | // FIXME: extend AstNode to do this safely | 64 | pub fn cast<U: AstNode>(self) -> Option<AstPtr<U>> { |
65 | pub fn cast_checking_kind<U: AstNode>( | 65 | if !U::can_cast(self.raw.kind()) { |
66 | self, | ||
67 | cond: impl FnOnce(SyntaxKind) -> bool, | ||
68 | ) -> Option<AstPtr<U>> { | ||
69 | if !cond(self.raw.kind()) { | ||
70 | return None; | 66 | return None; |
71 | } | 67 | } |
72 | Some(AstPtr { raw: self.raw, _ty: PhantomData }) | 68 | Some(AstPtr { raw: self.raw, _ty: PhantomData }) |