From 73e21661b413192c26a539141a44b0c25e8c2aa9 Mon Sep 17 00:00:00 2001 From: Sam Nolan Date: Tue, 19 Nov 2019 19:41:52 +1100 Subject: [PATCH] Fix failed parsing on multiple required arguments Fixes #25. --- src/Language/GraphQL/AST/Lexer.hs | 8 ++++---- tests/Language/GraphQL/AST/LexerSpec.hs | 4 ++-- tests/Language/GraphQL/AST/ParserSpec.hs | 6 ++++++ 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/Language/GraphQL/AST/Lexer.hs b/src/Language/GraphQL/AST/Lexer.hs index 97a334c..f4111a9 100644 --- a/src/Language/GraphQL/AST/Lexer.hs +++ b/src/Language/GraphQL/AST/Lexer.hs @@ -89,12 +89,12 @@ symbol :: T.Text -> Parser T.Text symbol = Lexer.symbol spaceConsumer -- | Parser for "!". -bang :: Parser Char -bang = char '!' +bang :: Parser T.Text +bang = symbol "!" -- | Parser for "$". -dollar :: Parser Char -dollar = char '$' +dollar :: Parser T.Text +dollar = symbol "$" -- | Parser for "@". at :: Parser Char diff --git a/tests/Language/GraphQL/AST/LexerSpec.hs b/tests/Language/GraphQL/AST/LexerSpec.hs index b1c280f..a0acb9f 100644 --- a/tests/Language/GraphQL/AST/LexerSpec.hs +++ b/tests/Language/GraphQL/AST/LexerSpec.hs @@ -71,8 +71,8 @@ spec = describe "Lexer" $ do parse float "" "-1.123e4567" `shouldParse` (-1.123e4567) it "lexes punctuation" $ do - parse bang "" "!" `shouldParse` '!' - parse dollar "" "$" `shouldParse` '$' + parse bang "" "!" `shouldParse` "!" + parse dollar "" "$" `shouldParse` "$" runBetween parens `shouldSucceedOn` "()" parse spread "" "..." `shouldParse` "..." parse colon "" ":" `shouldParse` ":" diff --git a/tests/Language/GraphQL/AST/ParserSpec.hs b/tests/Language/GraphQL/AST/ParserSpec.hs index 8473d73..3e20e8f 100644 --- a/tests/Language/GraphQL/AST/ParserSpec.hs +++ b/tests/Language/GraphQL/AST/ParserSpec.hs @@ -24,3 +24,9 @@ spec = describe "Parser" $ do parse document "" `shouldSucceedOn` [r|{ hello(text: "Argument") }|] + + it "accepts two required arguments" $ + parse document "" `shouldSucceedOn` [r| + mutation auth($username: String!, $password: String!){ + test + }|]