@@ -33,13 +33,13 @@ import Effect (Effect)
3333import Effect.Console (log , logShow )
3434import Effect.Unsafe (unsafePerformEffect )
3535import Node.Process (lookupEnv )
36- import Parsing (ParseError (..), Parser , ParserT , Position (..), consume , fail , initialPos , parseErrorMessage , parseErrorPosition , position , region , runParser )
36+ import Parsing (ParseError (..), ParseState (..), Parser , ParserT , Position (..), consume , fail , getParserT , initialPos , parseErrorMessage , parseErrorPosition , position , region , runParser )
3737import Parsing.Combinators (advance , between , chainl , chainl1 , chainr , chainr1 , choice , empty , endBy , endBy1 , lookAhead , many , many1 , many1Till , many1Till_ , manyIndex , manyTill , manyTill_ , notFollowedBy , optionMaybe , sepBy , sepBy1 , sepEndBy , sepEndBy1 , skipMany , skipMany1 , try , (<?>), (<??>), (<~?>))
3838import Parsing.Combinators.Array as Combinators.Array
3939import Parsing.Expr (Assoc (..), Operator (..), buildExprParser )
4040import Parsing.Language (haskellDef , haskellStyle , javaStyle )
4141import Parsing.String (anyChar , anyCodePoint , anyTill , char , eof , match , regex , rest , satisfy , string , takeN )
42- import Parsing.String.Basic (intDecimal , letter , noneOfCodePoints , number , oneOfCodePoints , whiteSpace )
42+ import Parsing.String.Basic (intDecimal , letter , noneOfCodePoints , number , oneOfCodePoints , skipSpaces , whiteSpace )
4343import Parsing.String.Replace (breakCap , replace , replaceT , splitCap , splitCapT )
4444import Parsing.Token (TokenParser , makeTokenParser , token , when )
4545import Parsing.Token as Token
@@ -685,6 +685,22 @@ main = do
685685 parseErrorTestPosition (string " a\n b\n c\n " *> eof) " a\n b\n c\n d\n " (Position { index: 6 , column: 1 , line: 4 })
686686 parseErrorTestPosition (string " \t a" *> eof) " \t ab" (Position { index: 2 , column: 10 , line: 1 })
687687
688+ assertEqual' " skipSpaces consumes if position advancement issue #200"
689+ { actual: runParser " " do
690+ skipSpaces
691+ ParseState _ _ c <- getParserT
692+ pure c
693+ , expected: Right true
694+ }
695+
696+ assertEqual' " skipSpaces doesn't consume if no position advancement issue #200"
697+ { actual: runParser " x" do
698+ skipSpaces
699+ ParseState _ _ c <- getParserT
700+ pure c
701+ , expected: Right false
702+ }
703+
688704 log " \n TESTS number\n "
689705
690706 -- assert' "Number.fromString" $ Just infinity == Data.Number.fromString "Infinity"
0 commit comments