@@ -627,6 +627,8 @@ data UserConstraintQualifier
627627 UserQualified UserQualifier PackageName
628628 | -- | Scope that applies to the package when it has a setup qualifier.
629629 UserAnySetupQualifier PackageName
630+ | -- | Scope that applies to the package when it has a setup qualifier.
631+ UserAnyExeQualifier PackageName
630632 | -- | Scope that applies to the package when it has any qualifier.
631633 UserAnyQualifier PackageName
632634 deriving (Eq , Show , Generic )
@@ -644,6 +646,8 @@ fromUserConstraintScope (UserConstraintScope mstage (UserQualified q pn)) =
644646 ConstraintScope mstage (ScopeQualified (fromUserQualifier q) pn)
645647fromUserConstraintScope (UserConstraintScope mstage (UserAnySetupQualifier pn)) =
646648 ConstraintScope mstage (ScopeAnySetupQualifier pn)
649+ fromUserConstraintScope (UserConstraintScope mstage (UserAnyExeQualifier pn)) =
650+ ConstraintScope mstage (ScopeAnyExeQualifier pn)
647651fromUserConstraintScope (UserConstraintScope mstage (UserAnyQualifier pn)) =
648652 ConstraintScope mstage (ScopeAnyQualifier pn)
649653
@@ -668,6 +672,7 @@ userConstraintPackageName (UserConstraintX (UserConstraintScope _stage qualifier
668672 scopePN (UserQualified _ pn) = pn
669673 scopePN (UserAnyQualifier pn) = pn
670674 scopePN (UserAnySetupQualifier pn) = pn
675+ scopePN (UserAnyExeQualifier pn) = pn
671676
672677userToPackageConstraint :: UserConstraint -> PackageConstraint
673678userToPackageConstraint (UserConstraintX scope prop) =
@@ -718,6 +723,7 @@ instance Parsec UserConstraint where
718723 withDot pn
719724 | pn == mkPackageName " any" = UserAnyQualifier <$> parsec
720725 | pn == mkPackageName " setup" = UserAnySetupQualifier <$> parsec
726+ | pn == mkPackageName " exe" = UserAnyExeQualifier <$> parsec
721727 | otherwise = P. unexpected $ " constraint scope: " ++ unPackageName pn
722728
723729 withColon :: PackageName -> m UserConstraintQualifier
@@ -732,17 +738,29 @@ instance Parsec UserConstraint where
732738-- >>> eitherParsec "foo ^>= 1.2.3.4" :: Either String UserConstraint
733739-- Right (UserConstraintX (UserConstraintScope Nothing (UserQualified UserQualToplevel (PackageName "foo"))) (PackagePropertyVersion (MajorBoundVersion (mkVersion [1,2,3,4]))))
734740--
741+ -- >>> eitherParsec "any.bar > 1.2.3.4" :: Either String UserConstraint
742+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnyQualifier (PackageName "bar"))) (PackagePropertyVersion (LaterVersion (mkVersion [1,2,3,4]))))
743+ --
744+ -- >>> eitherParsec "setup.bar > 1.2.3.4" :: Either String UserConstraint
745+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnySetupQualifier (PackageName "bar"))) (PackagePropertyVersion (LaterVersion (mkVersion [1,2,3,4]))))
746+ --
747+ -- >>> eitherParsec "exe.bar > 1.2.3.4" :: Either String UserConstraint
748+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnyExeQualifier (PackageName "bar"))) (PackagePropertyVersion (LaterVersion (mkVersion [1,2,3,4]))))
749+ --
735750-- >>> eitherParsec "foo:setup.bar > 1.2.3.4" :: Either String UserConstraint
736751-- Right (UserConstraintX (UserConstraintScope Nothing (UserQualified (UserQualSetup (PackageName "foo")) (PackageName "bar"))) (PackagePropertyVersion (LaterVersion (mkVersion [1,2,3,4]))))
737752--
738- -- >>> eitherParsec "setup.any source " :: Either String UserConstraint
739- -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnySetupQualifier ( PackageName "any") )) PackagePropertySource )
740- --
753+ -- >>> eitherParsec "foo:exe:bar.abc > 1.2.3.4 " :: Either String UserConstraint
754+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserQualified (UserQualExe ( PackageName "foo") (PackageName "bar" )) (PackageName "abc"))) (PackagePropertyVersion (LaterVersion (mkVersion [1,2,3,4]))) )
755+ ----
741756-- >>> eitherParsec "build:rts source" :: Either String UserConstraint
742757-- Right (UserConstraintX (UserConstraintScope (Just Build) (UserQualified UserQualToplevel (PackageName "rts"))) PackagePropertySource)
743758--
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)
759+ -- >>> eitherParsec "build:any.rts source" :: Either String UserConstraint
760+ -- Right (UserConstraintX (UserConstraintScope (Just Build) (UserAnyQualifier (PackageName "rts"))) PackagePropertySource)
761+ --
762+ -- >>> eitherParsec "setup.ghc-internal installed" :: Either String UserConstraint
763+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnySetupQualifier (PackageName "ghc-internal"))) PackagePropertyInstalled)
764+ --
765+ -- >>> eitherParsec "setup.ghc-internal installed" :: Either String UserConstraint
766+ -- Right (UserConstraintX (UserConstraintScope Nothing (UserAnySetupQualifier (PackageName "ghc-internal"))) PackagePropertyInstalled)
0 commit comments