diff options
author | Jonas Schievink <[email protected]> | 2020-12-15 14:37:49 +0000 |
---|---|---|
committer | Jonas Schievink <[email protected]> | 2020-12-15 14:37:49 +0000 |
commit | 479babf8740a4d3cf6fc03a5f4a2fca00d387501 (patch) | |
tree | 725dfad20b95344ad363b35860cf7e57067bb5e5 /crates/syntax/src | |
parent | c1cb5953820f26d4d0a614650bc8c50cbc5a3ce6 (diff) |
Reject visibilities on `macro_rules!`
Diffstat (limited to 'crates/syntax/src')
-rw-r--r-- | crates/syntax/src/validation.rs | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/crates/syntax/src/validation.rs b/crates/syntax/src/validation.rs index 6f45149bf..2ddaeb176 100644 --- a/crates/syntax/src/validation.rs +++ b/crates/syntax/src/validation.rs | |||
@@ -3,7 +3,9 @@ | |||
3 | mod block; | 3 | mod block; |
4 | 4 | ||
5 | use crate::{ | 5 | use crate::{ |
6 | algo, ast, match_ast, AstNode, SyntaxError, | 6 | algo, |
7 | ast::{self, VisibilityOwner}, | ||
8 | match_ast, AstNode, SyntaxError, | ||
7 | SyntaxKind::{CONST, FN, INT_NUMBER, TYPE_ALIAS}, | 9 | SyntaxKind::{CONST, FN, INT_NUMBER, TYPE_ALIAS}, |
8 | SyntaxNode, SyntaxToken, TextSize, T, | 10 | SyntaxNode, SyntaxToken, TextSize, T, |
9 | }; | 11 | }; |
@@ -99,6 +101,7 @@ pub(crate) fn validate(root: &SyntaxNode) -> Vec<SyntaxError> { | |||
99 | ast::RefType(it) => validate_trait_object_ref_ty(it, &mut errors), | 101 | ast::RefType(it) => validate_trait_object_ref_ty(it, &mut errors), |
100 | ast::PtrType(it) => validate_trait_object_ptr_ty(it, &mut errors), | 102 | ast::PtrType(it) => validate_trait_object_ptr_ty(it, &mut errors), |
101 | ast::FnPtrType(it) => validate_trait_object_fn_ptr_ret_ty(it, &mut errors), | 103 | ast::FnPtrType(it) => validate_trait_object_fn_ptr_ret_ty(it, &mut errors), |
104 | ast::MacroRules(it) => validate_macro_rules(it, &mut errors), | ||
102 | _ => (), | 105 | _ => (), |
103 | } | 106 | } |
104 | } | 107 | } |
@@ -350,3 +353,12 @@ fn validate_trait_object_ty(ty: ast::DynTraitType) -> Option<SyntaxError> { | |||
350 | } | 353 | } |
351 | None | 354 | None |
352 | } | 355 | } |
356 | |||
357 | fn validate_macro_rules(mac: ast::MacroRules, errors: &mut Vec<SyntaxError>) { | ||
358 | if let Some(vis) = mac.visibility() { | ||
359 | errors.push(SyntaxError::new( | ||
360 | "visibilities are not allowed on `macro_rules!` items", | ||
361 | vis.syntax().text_range(), | ||
362 | )); | ||
363 | } | ||
364 | } | ||