From dd6e5371ebddeaeecb3d1e2d3d6c8b3c9050bb05 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 10 Feb 2018 12:53:07 +0300 Subject: G: where clause --- grammar.ron | 1 + src/parser/grammar/type_params.rs | 2 ++ src/syntax_kinds.rs | 2 ++ .../data/parser/inline/0016_type_item_where_clause.txt | 17 +++++++++-------- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/grammar.ron b/grammar.ron index 8e265323b..c38bf654d 100644 --- a/grammar.ron +++ b/grammar.ron @@ -114,6 +114,7 @@ Grammar( "ALIAS", "VISIBILITY", "TYPE_PARAM_LIST", + "WHERE_CLAUSE", "LIFETIME_PARAM", "TYPE_PARAM", "ABI", diff --git a/src/parser/grammar/type_params.rs b/src/parser/grammar/type_params.rs index 73c3cf8b8..8f62a471c 100644 --- a/src/parser/grammar/type_params.rs +++ b/src/parser/grammar/type_params.rs @@ -70,9 +70,11 @@ pub(super) fn list(p: &mut Parser) { pub(super) fn where_clause(p: &mut Parser) { if p.at(WHERE_KW) { + let m = p.start(); p.bump(); p.expect(IDENT); p.expect(COLON); p.expect(IDENT); + m.complete(p, WHERE_CLAUSE); } } diff --git a/src/syntax_kinds.rs b/src/syntax_kinds.rs index 501b940bb..dc287f0f4 100644 --- a/src/syntax_kinds.rs +++ b/src/syntax_kinds.rs @@ -112,6 +112,7 @@ pub enum SyntaxKind { ALIAS, VISIBILITY, TYPE_PARAM_LIST, + WHERE_CLAUSE, LIFETIME_PARAM, TYPE_PARAM, ABI, @@ -234,6 +235,7 @@ impl SyntaxKind { ALIAS => &SyntaxInfo { name: "ALIAS" }, VISIBILITY => &SyntaxInfo { name: "VISIBILITY" }, TYPE_PARAM_LIST => &SyntaxInfo { name: "TYPE_PARAM_LIST" }, + WHERE_CLAUSE => &SyntaxInfo { name: "WHERE_CLAUSE" }, LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" }, TYPE_PARAM => &SyntaxInfo { name: "TYPE_PARAM" }, ABI => &SyntaxInfo { name: "ABI" }, diff --git a/tests/data/parser/inline/0016_type_item_where_clause.txt b/tests/data/parser/inline/0016_type_item_where_clause.txt index 28fcc7c0a..ddd335870 100644 --- a/tests/data/parser/inline/0016_type_item_where_clause.txt +++ b/tests/data/parser/inline/0016_type_item_where_clause.txt @@ -3,14 +3,15 @@ FILE@[0; 31) TYPE_KW@[0; 4) WHITESPACE@[4; 5) IDENT@[5; 8) "Foo" - WHITESPACE@[8; 9) - WHERE_KW@[9; 14) - WHITESPACE@[14; 15) - IDENT@[15; 18) "Foo" - COLON@[18; 19) - WHITESPACE@[19; 20) - IDENT@[20; 24) "Copy" - WHITESPACE@[24; 25) + WHERE_CLAUSE@[8; 25) + WHITESPACE@[8; 9) + WHERE_KW@[9; 14) + WHITESPACE@[14; 15) + IDENT@[15; 18) "Foo" + COLON@[18; 19) + WHITESPACE@[19; 20) + IDENT@[20; 24) "Copy" + WHITESPACE@[24; 25) EQ@[25; 26) WHITESPACE@[26; 27) L_PAREN@[27; 28) -- cgit v1.2.3