Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/syntax/src/tests/sourcegen_ast.rs')
| -rw-r--r-- | crates/syntax/src/tests/sourcegen_ast.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/syntax/src/tests/sourcegen_ast.rs b/crates/syntax/src/tests/sourcegen_ast.rs index dcd813bbe0..c66edadc3c 100644 --- a/crates/syntax/src/tests/sourcegen_ast.rs +++ b/crates/syntax/src/tests/sourcegen_ast.rs @@ -359,6 +359,10 @@ fn generate_syntax_kinds(grammar: KindsSrc<'_>) -> String { let full_keywords = full_keywords_values.iter().map(|kw| format_ident!("{}_KW", to_upper_snake_case(kw))); + let contextual_keywords_values = &grammar.contextual_keywords; + let contextual_keywords = + contextual_keywords_values.iter().map(|kw| format_ident!("{}_KW", to_upper_snake_case(kw))); + let all_keywords_values = grammar.keywords.iter().chain(grammar.contextual_keywords.iter()).collect::<Vec<_>>(); let all_keywords_idents = all_keywords_values.iter().map(|kw| format_ident!("{}", kw)); @@ -428,6 +432,14 @@ fn generate_syntax_kinds(grammar: KindsSrc<'_>) -> String { Some(kw) } + pub fn from_contextual_keyword(ident: &str) -> Option<SyntaxKind> { + let kw = match ident { + #(#contextual_keywords_values => #contextual_keywords,)* + _ => return None, + }; + Some(kw) + } + pub fn from_char(c: char) -> Option<SyntaxKind> { let tok = match c { #(#single_byte_tokens_values => #single_byte_tokens,)* |