Skip to content

Commit

Permalink
Reject invalid TypeCondition expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
David Snabel-Caunt committed Aug 5, 2020
1 parent 8493364 commit 0c95240
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Sources/SwiftGraphQl/Parser.swift
Expand Up @@ -121,7 +121,7 @@ struct GraphQlDocumentParser {
static let fragmentSpread = match(StreamToken.ellipsis) <~ name ~ directives ^^ { (name, directives) in
Selection.fragmentSpread(name, directives)
}
static let typeCondition = match(StreamToken.on) <~ type
static let typeCondition = match(StreamToken.on) <~ namedType
// inlineFragment must come before fragmentSpread because "... on" is more specific than "... Foo"
static let selection = fieldAsSelection | inlineFragment() | fragmentSpread
static let selectionSet: () -> StreamTokenParser<[Selection]> = { match(StreamToken.leftCurly) <~ selection+ ~> match(StreamToken.rightCurly) }
Expand Down
16 changes: 16 additions & 0 deletions Tests/SwiftGraphQlTests/ParserTests.swift
Expand Up @@ -239,6 +239,22 @@ final class ParserTests: XCTestCase, ParserHelpers {
StreamToken.exclamation],
val: Type.required(Type.named("Test")))
}
func testTypeCondition() {
// on Test
assertParsed(GraphQlDocumentParser.typeCondition,
input: [
StreamToken.on,
StreamToken.name("Test")],
val: Type.named("Test"))

// on [Test]
assertNotParsed(GraphQlDocumentParser.typeCondition,
input: [
StreamToken.on,
StreamToken.leftBracket,
StreamToken.name("Test"),
StreamToken.rightBracket])
}
func testVariable() {
// $var
assertParsed(GraphQlDocumentParser.variable,
Expand Down

0 comments on commit 0c95240

Please sign in to comment.