aboutsummaryrefslogtreecommitdiff
path: root/crates/syntax/src/validation
diff options
context:
space:
mode:
authorZac Pullar-Strecker <[email protected]>2020-08-24 10:19:53 +0100
committerZac Pullar-Strecker <[email protected]>2020-08-24 10:20:13 +0100
commit7bbca7a1b3f9293d2f5cc5745199bc5f8396f2f0 (patch)
treebdb47765991cb973b2cd5481a088fac636bd326c /crates/syntax/src/validation
parentca464650eeaca6195891199a93f4f76cf3e7e697 (diff)
parente65d48d1fb3d4d91d9dc1148a7a836ff5c9a3c87 (diff)
Merge remote-tracking branch 'upstream/master' into 503-hover-doc-links
Diffstat (limited to 'crates/syntax/src/validation')
-rw-r--r--crates/syntax/src/validation/block.rs22
1 files changed, 22 insertions, 0 deletions
diff --git a/crates/syntax/src/validation/block.rs b/crates/syntax/src/validation/block.rs
new file mode 100644
index 000000000..ad9901468
--- /dev/null
+++ b/crates/syntax/src/validation/block.rs
@@ -0,0 +1,22 @@
1//! Logic for validating block expressions i.e. `ast::BlockExpr`.
2
3use crate::{
4 ast::{self, AstNode, AttrsOwner},
5 SyntaxError,
6 SyntaxKind::*,
7};
8
9pub(crate) fn validate_block_expr(block: ast::BlockExpr, errors: &mut Vec<SyntaxError>) {
10 if let Some(parent) = block.syntax().parent() {
11 match parent.kind() {
12 FN | EXPR_STMT | BLOCK_EXPR => return,
13 _ => {}
14 }
15 }
16 errors.extend(block.attrs().map(|attr| {
17 SyntaxError::new(
18 "A block in this position cannot accept inner attributes",
19 attr.syntax().text_range(),
20 )
21 }))
22}