@@ -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
6568scopeToPackageName (ScopeTarget  pn) =  pn
6669scopeToPackageName (ScopeQualified  _ pn) =  pn
6770scopeToPackageName (ScopeAnySetupQualifier  pn) =  pn
71+ scopeToPackageName (ScopeAnyBuildDepQualifier  pn) =  pn
6872scopeToPackageName (ScopeAnyQualifier  pn) =  pn
6973
7074constraintScopeMatches  ::  ConstraintScope  ->  QPN  ->  Bool 
@@ -74,6 +78,12 @@ constraintScopeMatches (ScopeTarget pn) (Q (PackagePath ns q) pn') =
7478  in  namespaceMatches ns &&  q ==  QualToplevel  &&  pn ==  pn'
7579constraintScopeMatches (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'
7787constraintScopeMatches (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'
8393instance  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