Skip to content

Commit 7ea9461

Browse files
committed
feat: impl Iterator for errors
fixes #139 ast.errors() now return an `impl ExactSizeIterator` which allows us to iterate, but also check for the `len()`. It should allow us to use `is_empty()` as well eventually, if / when rust-lang/rust#35428 lands.
1 parent fcbf490 commit 7ea9461

File tree

13 files changed

+30
-31
lines changed

13 files changed

+30
-31
lines changed

crates/apollo-parser/README.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ fn main() {
6262
let parser = Parser::new(input);
6363
let ast = parser.parse();
6464

65-
// ast.errors() returns an errors slice encountered during lexing and parsing
66-
assert!(ast.errors().is_empty());
65+
// ast.errors() returns an iterator with the errors encountered during lexing and parsing
66+
assert_eq!(0, ast.errors().len());
6767

6868
// ast.document() get the Document, or root node, of the tree that you can
6969
// start iterating on.
@@ -97,7 +97,7 @@ fn main() {
9797
";
9898
let parser = Parser::new(input);
9999
let ast = parser.parse();
100-
assert!(ast.errors().is_empty());
100+
assert_eq!(0, ast.errors().len());
101101

102102
let doc = ast.document();
103103

@@ -130,7 +130,7 @@ fn main() {
130130

131131
let parser = Parser::new(input);
132132
let ast = parser.parse();
133-
assert!(&ast.errors().is_empty());
133+
assert_eq!(0, ast.errors().len());
134134

135135
let doc = ast.document();
136136

crates/apollo-parser/examples/unused_vars.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ fn are_variables_unused() {
1111
let parser = Parser::new(&src);
1212
let ast = parser.parse();
1313

14-
assert!(&ast.errors().is_empty());
14+
assert_eq!(0, ast.errors().len());
1515

1616
let doc = ast.document();
1717

crates/apollo-parser/src/ast/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
//! let parser = Parser::new(schema);
4343
//! let ast = parser.parse();
4444
//!
45-
//! assert!(ast.errors().is_empty());
45+
//! assert_eq!(0, ast.errors().len());
4646
//! let document = ast.document();
4747
//! for definition in document.definitions() {
4848
//! match definition {

crates/apollo-parser/src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use std::fmt;
1616
/// let parser = Parser::new(input);
1717
/// let ast = parser.parse();
1818
///
19-
/// assert!(ast.errors().is_empty());
19+
/// assert_eq!(0, ast.errors().len());
2020
///
2121
/// let doc = ast.document();
2222
/// ```

crates/apollo-parser/src/lexer/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,8 @@ impl Lexer {
5959
}
6060

6161
/// Get a reference to the lexer's tokens.
62-
pub(crate) fn errors(&self) -> &[Error] {
63-
self.errors.as_slice()
62+
pub(crate) fn errors<'e>(&'e self) -> impl ExactSizeIterator<Item = &'e Error> {
63+
self.errors.iter()
6464
}
6565
}
6666

crates/apollo-parser/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
//! let ast = parser.parse();
6363
//!
6464
//! // ast.errors() returns an errors slice encountered during lexing and parsing
65-
//! assert!(ast.errors().is_empty());
65+
//! assert_eq!(0, ast.errors().len());
6666
//!
6767
//! // ast.document() get the Document, or root node, of the tree that you can
6868
//! // start iterating on.
@@ -94,7 +94,7 @@
9494
//! ";
9595
//! let parser = Parser::new(input);
9696
//! let ast = parser.parse();
97-
//! assert!(ast.errors().is_empty());
97+
//! assert_eq!(0, ast.errors().len());
9898
//!
9999
//! let doc = ast.document();
100100
//!
@@ -125,7 +125,7 @@
125125
//!
126126
//! let parser = Parser::new(input);
127127
//! let ast = parser.parse();
128-
//! assert!(&ast.errors().is_empty());
128+
//! assert_eq!(0, ast.errors().len());
129129
//!
130130
//! let doc = ast.document();
131131
//!

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ type Business implements NamedEntity & ValuedEntity & CatEntity {
131131
}";
132132
let parser = Parser::new(input);
133133
let ast = parser.parse();
134-
assert!(ast.errors().is_empty());
134+
assert_eq!(0, ast.errors().len());
135135

136136
let doc = ast.document();
137137

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ mod test {
6868
";
6969
let parser = Parser::new(input);
7070
let ast = parser.parse();
71-
assert!(&ast.errors().is_empty());
71+
assert_eq!(0, ast.errors().len());
7272

7373
let doc = ast.document();
7474

@@ -129,7 +129,7 @@ query GraphQuery($graph_id: ID!, $variant: String) {
129129
";
130130
let parser = Parser::new(input);
131131
let ast = parser.parse();
132-
assert!(&ast.errors().is_empty());
132+
assert_eq!(0, ast.errors().len());
133133

134134
let doc = ast.document();
135135

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ mod test {
112112
let input = "union SearchResult = Photo | Person | Cat | Dog";
113113
let parser = Parser::new(input);
114114
let ast = parser.parse();
115-
assert!(ast.errors().is_empty());
115+
assert_eq!(0, ast.errors().len());
116116

117117
let doc = ast.document();
118118

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ query GraphQuery($graph_id: ID!, $variant: String) {
270270
";
271271
let parser = Parser::new(input);
272272
let ast = parser.parse();
273-
assert!(&ast.errors().is_empty());
273+
assert_eq!(0, ast.errors().len());
274274

275275
let doc = ast.document();
276276

0 commit comments

Comments
 (0)