aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/github.com/vektah/gqlparser/parser/parser.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/vektah/gqlparser/parser/parser.go')
-rw-r--r--vendor/github.com/vektah/gqlparser/parser/parser.go24
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/github.com/vektah/gqlparser/parser/parser.go b/vendor/github.com/vektah/gqlparser/parser/parser.go
index f3648cb3..96e98402 100644
--- a/vendor/github.com/vektah/gqlparser/parser/parser.go
+++ b/vendor/github.com/vektah/gqlparser/parser/parser.go
@@ -82,6 +82,10 @@ func (p *parser) expect(kind lexer.Type) lexer.Token {
}
func (p *parser) skip(kind lexer.Type) bool {
+ if p.err != nil {
+ return false
+ }
+
tok := p.peek()
if tok.Kind != kind {
@@ -110,3 +114,23 @@ func (p *parser) many(start lexer.Type, end lexer.Type, cb func()) {
}
p.next()
}
+
+func (p *parser) some(start lexer.Type, end lexer.Type, cb func()) {
+ hasDef := p.skip(start)
+ if !hasDef {
+ return
+ }
+
+ called := false
+ for p.peek().Kind != end && p.err == nil {
+ called = true
+ cb()
+ }
+
+ if !called {
+ p.error(p.peek(), "expected at least one definition, found %s", p.peek().Kind.String())
+ return
+ }
+
+ p.next()
+}