aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2019-09-09 23:03:00 +0100
committerAleksey Kladov <[email protected]>2019-09-09 23:03:00 +0100
commitd8aa9a1d81529cdc39e8353f2915c3c4d04ac263 (patch)
treee0c25226d8a13b3ff2a13d1100315e8455ea98bd
parente2b378ef7e0ed82b0f0c874f98032a368fd5f30f (diff)
introduce bump as a better-checked alternative to bump_any
-rw-r--r--crates/ra_parser/src/grammar.rs4
-rw-r--r--crates/ra_parser/src/parser.rs6
2 files changed, 8 insertions, 2 deletions
diff --git a/crates/ra_parser/src/grammar.rs b/crates/ra_parser/src/grammar.rs
index 89f4b63ec..4e6f2f558 100644
--- a/crates/ra_parser/src/grammar.rs
+++ b/crates/ra_parser/src/grammar.rs
@@ -126,7 +126,7 @@ pub(crate) mod fragments {
126 126
127 while !p.at(EOF) { 127 while !p.at(EOF) {
128 if p.at(T![;]) { 128 if p.at(T![;]) {
129 p.bump_any(); 129 p.bump(T![;]);
130 continue; 130 continue;
131 } 131 }
132 132
@@ -179,7 +179,7 @@ fn opt_visibility(p: &mut Parser) -> bool {
179 match p.current() { 179 match p.current() {
180 T![pub] => { 180 T![pub] => {
181 let m = p.start(); 181 let m = p.start();
182 p.bump_any(); 182 p.bump(T![pub]);
183 if p.at(T!['(']) { 183 if p.at(T!['(']) {
184 match p.nth(1) { 184 match p.nth(1) {
185 // test crate_visibility 185 // test crate_visibility
diff --git a/crates/ra_parser/src/parser.rs b/crates/ra_parser/src/parser.rs
index ccacaacad..d8567e84b 100644
--- a/crates/ra_parser/src/parser.rs
+++ b/crates/ra_parser/src/parser.rs
@@ -170,6 +170,12 @@ impl<'t> Parser<'t> {
170 } 170 }
171 } 171 }
172 172
173 /// Advances the parser by one token, asserting that it is exactly the expected token
174 pub(crate) fn bump(&mut self, expected: SyntaxKind) {
175 debug_assert!(self.nth(0) == expected);
176 self.bump_any()
177 }
178
173 /// Advances the parser by one token, remapping its kind. 179 /// Advances the parser by one token, remapping its kind.
174 /// This is useful to create contextual keywords from 180 /// This is useful to create contextual keywords from
175 /// identifiers. For example, the lexer creates an `union` 181 /// identifiers. For example, the lexer creates an `union`