Skip to content

Commit f00bb60

Browse files
committed
fix Parsec UserConstraint
1 parent 22002b7 commit f00bb60

File tree

1 file changed

+22
-1
lines changed

1 file changed

+22
-1
lines changed

cabal-install/src/Distribution/Client/Targets.hs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)