Skip to content

Commit a1fa0cc

Browse files
committed
refactor(parser): Use peek_token() to check token_kind and data together (#830)
1 parent 6aa62a5 commit a1fa0cc

File tree

1 file changed

+54
-32
lines changed
  • crates/apollo-parser/src/parser/grammar

1 file changed

+54
-32
lines changed

crates/apollo-parser/src/parser/grammar/object.rs

Lines changed: 54 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -19,33 +19,45 @@ use crate::T;
1919
pub(crate) fn object_type_definition(p: &mut Parser) {
2020
let _g = p.start_node(SyntaxKind::OBJECT_TYPE_DEFINITION);
2121

22-
if let Some(TokenKind::StringValue) = p.peek() {
23-
description::description(p);
22+
if let Some(token) = p.peek_token() {
23+
if token.kind() == TokenKind::StringValue {
24+
description::description(p);
25+
}
2426
}
2527

26-
if let Some("type") = p.peek_data() {
27-
p.bump(SyntaxKind::type_KW);
28+
if let Some(token) = p.peek_token() {
29+
if token.data() == "type" {
30+
p.bump(SyntaxKind::type_KW);
31+
}
2832
}
2933

30-
match p.peek() {
31-
Some(TokenKind::Name) => name::name(p),
32-
_ => p.err("expected a name"),
34+
if let Some(token) = p.peek_token() {
35+
match token.kind() {
36+
TokenKind::Name => name::name(p),
37+
_ => p.err("expected a name"),
38+
}
3339
}
3440

35-
if let Some(TokenKind::Name) = p.peek() {
36-
if p.peek_data().unwrap() == "implements" {
37-
implements_interfaces(p);
38-
} else {
39-
p.err("unexpected Name");
41+
if let Some(token) = p.peek_token() {
42+
if token.kind() == TokenKind::Name {
43+
if token.data() == "implements" {
44+
implements_interfaces(p);
45+
} else {
46+
p.err("unexpected Name");
47+
}
4048
}
4149
}
4250

43-
if let Some(T![@]) = p.peek() {
44-
directive::directives(p, Constness::Const);
51+
if let Some(token) = p.peek_token() {
52+
if token.kind() == T![@] {
53+
directive::directives(p, Constness::Const);
54+
}
4555
}
4656

47-
if let Some(T!['{']) = p.peek() {
48-
field::fields_definition(p);
57+
if let Some(token) = p.peek_token() {
58+
if token.kind() == T!['{'] {
59+
field::fields_definition(p);
60+
}
4961
}
5062
}
5163

@@ -64,24 +76,32 @@ pub(crate) fn object_type_extension(p: &mut Parser) {
6476
// FieldsDefinitions is provided. If none are present, we push an error.
6577
let mut meets_requirements = false;
6678

67-
match p.peek() {
68-
Some(TokenKind::Name) => name::name(p),
69-
_ => p.err("expected a Name"),
79+
if let Some(token) = p.peek_token() {
80+
match token.kind() {
81+
TokenKind::Name => name::name(p),
82+
_ => p.err("expected a Name"),
83+
}
7084
}
7185

72-
if let Some("implements") = p.peek_data() {
73-
meets_requirements = true;
74-
implements_interfaces(p);
86+
if let Some(token) = p.peek_token() {
87+
if token.data() == "implements" {
88+
meets_requirements = true;
89+
implements_interfaces(p);
90+
}
7591
}
7692

77-
if let Some(T![@]) = p.peek() {
78-
meets_requirements = true;
79-
directive::directives(p, Constness::Const)
93+
if let Some(token) = p.peek_token() {
94+
if token.kind() == T![@] {
95+
meets_requirements = true;
96+
directive::directives(p, Constness::Const);
97+
}
8098
}
8199

82-
if let Some(T!['{']) = p.peek() {
83-
meets_requirements = true;
84-
field::fields_definition(p)
100+
if let Some(token) = p.peek_token() {
101+
if token.kind() == T!['{'] {
102+
meets_requirements = true;
103+
field::fields_definition(p);
104+
}
85105
}
86106

87107
if !meets_requirements {
@@ -99,10 +119,12 @@ pub(crate) fn implements_interfaces(p: &mut Parser) {
99119
p.bump(SyntaxKind::implements_KW);
100120

101121
p.parse_separated_list(T![&], S![&], |p| {
102-
if let Some(TokenKind::Name) = p.peek() {
103-
ty::named_type(p);
104-
} else {
105-
p.err("expected an Interface name");
122+
if let Some(token) = p.peek_token() {
123+
if token.kind() == TokenKind::Name {
124+
ty::named_type(p);
125+
} else {
126+
p.err("expected an Interface name");
127+
}
106128
}
107129
});
108130
}

0 commit comments

Comments
 (0)