Skip to content

Commit 8aadca3

Browse files
committed
Add ScopeAnyBuildDepQualifier
1 parent 062f69e commit 8aadca3

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

cabal-install-solver/src/Distribution/Solver/Types/PackageConstraint.hs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,9 @@ data ConstraintScope
4949
-- | The package with the specified name when it has a
5050
-- setup qualifier.
5151
| ScopeAnySetupQualifier PackageName
52+
-- | The package with the specified name when it is a build-time
53+
-- dependency. E.g. a Setup script or a build-depends.
54+
| ScopeAnyBuildDepQualifier PackageName
5255
-- | The package with the specified name regardless of
5356
-- qualifier.
5457
| ScopeAnyQualifier PackageName
@@ -65,6 +68,7 @@ scopeToPackageName :: ConstraintScope -> PackageName
6568
scopeToPackageName (ScopeTarget pn) = pn
6669
scopeToPackageName (ScopeQualified _ pn) = pn
6770
scopeToPackageName (ScopeAnySetupQualifier pn) = pn
71+
scopeToPackageName (ScopeAnyBuildDepQualifier pn) = pn
6872
scopeToPackageName (ScopeAnyQualifier pn) = pn
6973

7074
constraintScopeMatches :: ConstraintScope -> QPN -> Bool
@@ -74,6 +78,12 @@ constraintScopeMatches (ScopeTarget pn) (Q (PackagePath ns q) pn') =
7478
in namespaceMatches ns && q == QualToplevel && pn == pn'
7579
constraintScopeMatches (ScopeQualified q pn) (Q (PackagePath _ q') pn') =
7680
q == q' && pn == pn'
81+
constraintScopeMatches (ScopeAnyBuildDepQualifier pn) (Q pp pn') =
82+
let setup (PackagePath _ (QualSetup _)) = True
83+
setup _ = False
84+
build (PackagePath _ (QualExe _ _)) = True
85+
build _ = False
86+
in (setup pp || build pp) && pn == pn'
7787
constraintScopeMatches (ScopeAnySetupQualifier pn) (Q pp pn') =
7888
let setup (PackagePath _ (QualSetup _)) = True
7989
setup _ = False
@@ -83,6 +93,7 @@ constraintScopeMatches (ScopeAnyQualifier pn) (Q _ pn') = pn == pn'
8393
instance Pretty ConstraintScope where
8494
pretty (ScopeTarget pn) = pretty pn <<>> Disp.text "." <<>> pretty pn
8595
pretty (ScopeQualified q pn) = dispQualifier q <<>> pretty pn
96+
pretty (ScopeAnyBuildDepQualifier pn) = Disp.text "build." <<>> pretty pn
8697
pretty (ScopeAnySetupQualifier pn) = Disp.text "setup." <<>> pretty pn
8798
pretty (ScopeAnyQualifier pn) = Disp.text "any." <<>> pretty pn
8899

0 commit comments

Comments
 (0)