@@ -705,7 +705,7 @@ instance Parsec UserConstraint where
705705 where
706706 parseConstraintScope :: forall m . CabalParsing m => m UserConstraintScope
707707 parseConstraintScope = do
708- mstage <- P. optional (parsec <* P. char ' :' )
708+ mstage <- P. optional (P. try ( parsec <* P. char ' :' ) )
709709 pn <- parsec
710710 c <- P. choice
711711 [ P. char ' .' *> withDot pn
@@ -725,3 +725,24 @@ instance Parsec UserConstraint where
725725 UserQualified (UserQualSetup pn)
726726 <$ P. string " setup."
727727 <*> parsec
728+
729+ -- >>> eitherParsec "foo > 1.2.3.4" :: Either String UserConstraint
730+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserQualified UserQualToplevel (PackageName "foo"))) (PackagePropertyVersion (LaterVersion (mkVersion [1,2,3,4]))))
731+ --
732+ -- >>> eitherParsec "foo ^>= 1.2.3.4" :: Either String UserConstraint
733+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserQualified UserQualToplevel (PackageName "foo"))) (PackagePropertyVersion (MajorBoundVersion (mkVersion [1,2,3,4]))))
734+ --
735+ -- >>> eitherParsec "foo:setup.bar > 1.2.3.4" :: Either String UserConstraint
736+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserQualified (UserQualSetup (PackageName "foo")) (PackageName "bar"))) (PackagePropertyVersion (LaterVersion (mkVersion [1,2,3,4]))))
737+ --
738+ -- >>> eitherParsec "setup.any source" :: Either String UserConstraint
739+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnySetupQualifier (PackageName "any"))) PackagePropertySource)
740+ --
741+ -- >>> eitherParsec "build:rts source" :: Either String UserConstraint
742+ -- Right (UserConstraintX (UserConstraintScope (Just Build) (UserQualified UserQualToplevel (PackageName "rts"))) PackagePropertySource)
743+ --
744+ -- >>> eitherParsec "setup.any installed" :: Either String UserConstraint
745+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnySetupQualifier (PackageName "any"))) PackagePropertyInstalled)
746+ --
747+ -- >>> eitherParsec "build:ghc-internal installed" :: Either String UserConstraint
748+ -- Right (UserConstraintX (UserConstraintScope (Just Build) (UserQualified UserQualToplevel (PackageName "ghc-internal"))) PackagePropertyInstalled)
0 commit comments