@@ -129,16 +129,11 @@ parseRawTargetDirs root locals t =
129129 then Just name
130130 else Nothing
131131
132- data TargetType
133- = TTUnknown
134- | TTNonLocal
135- | TTLocalComp ! NamedComponent
136- | TTLocalAllComps ! (Set NamedComponent )
137-
138132data SimpleTarget
139133 = STUnknown
140134 | STNonLocal
141- | STLocal ! (Set NamedComponent )
135+ | STLocalComps ! (Set NamedComponent )
136+ | STLocalAll
142137 deriving (Show , Eq , Ord )
143138
144139resolveIdents :: Map PackageName Version -- ^ snapshot
@@ -180,7 +175,7 @@ resolveRawTarget :: Map PackageName Version -- ^ snapshot
180175 -> Map PackageName Version -- ^ extra deps
181176 -> Map PackageName LocalPackageView
182177 -> (RawInput , RawTarget NoIdents )
183- -> Either Text (PackageName , (RawInput , TargetType ))
178+ -> Either Text (PackageName , (RawInput , SimpleTarget ))
184179resolveRawTarget snap extras locals (ri, rt) =
185180 go rt
186181 where
@@ -191,7 +186,7 @@ resolveRawTarget snap extras locals (ri, rt) =
191186 case ucomp of
192187 ResolvedComponent comp
193188 | comp `Set.member` lpvComponents lpv ->
194- Right (name, (ri, TTLocalComp comp))
189+ Right (name, (ri, STLocalComps $ Set. singleton comp))
195190 | otherwise -> Left $ T. pack $ concat
196191 [ " Component "
197192 , show comp
@@ -206,7 +201,7 @@ resolveRawTarget snap extras locals (ri, rt) =
206201 , " does not exist in package "
207202 , T. pack $ packageNameString name
208203 ]
209- [x] -> Right (name, (ri, TTLocalComp x))
204+ [x] -> Right (name, (ri, STLocalComps $ Set. singleton x))
210205 matches -> Left $ T. concat
211206 [ " Ambiguous component name "
212207 , comp
@@ -222,7 +217,7 @@ resolveRawTarget snap extras locals (ri, rt) =
222217 in case filter (isCompNamed cname . snd ) allPairs of
223218 [] -> Left $ " Could not find a component named " `T.append` cname
224219 [(name, comp)] ->
225- Right (name, (ri, TTLocalComp comp))
220+ Right (name, (ri, STLocalComps $ Set. singleton comp))
226221 matches -> Left $ T. concat
227222 [ " Ambiugous component name "
228223 , cname
@@ -232,41 +227,33 @@ resolveRawTarget snap extras locals (ri, rt) =
232227
233228 go (RTPackage name) =
234229 case Map. lookup name locals of
235- Just lpv -> Right (name, (ri, TTLocalAllComps $ lpvComponents lpv ))
230+ Just _lpv -> Right (name, (ri, STLocalAll ))
236231 Nothing ->
237232 case Map. lookup name extras of
238- Just _ -> Right (name, (ri, TTNonLocal ))
233+ Just _ -> Right (name, (ri, STNonLocal ))
239234 Nothing ->
240235 case Map. lookup name snap of
241- Just _ -> Right (name, (ri, TTNonLocal ))
242- Nothing -> Right (name, (ri, TTUnknown ))
236+ Just _ -> Right (name, (ri, STNonLocal ))
237+ Nothing -> Right (name, (ri, STUnknown ))
243238
244239isCompNamed :: Text -> NamedComponent -> Bool
245240isCompNamed _ CLib = False
246241isCompNamed t1 (CExe t2) = t1 == t2
247242isCompNamed t1 (CTest t2) = t1 == t2
248243isCompNamed t1 (CBench t2) = t1 == t2
249244
250- simplifyTargets :: Bool -- ^ include tests
251- -> Bool -- ^ include benchmarks
252- -> [(PackageName , (RawInput , TargetType ))]
245+ simplifyTargets :: [(PackageName , (RawInput , SimpleTarget ))]
253246 -> ([Text ], Map PackageName SimpleTarget )
254- simplifyTargets includeTests includeBenches =
247+ simplifyTargets =
255248 mconcat . map go . Map. toList . Map. fromListWith (++) . fmap (second return )
256249 where
257- go :: (PackageName , [(RawInput , TargetType )])
250+ go :: (PackageName , [(RawInput , SimpleTarget )])
258251 -> ([Text ], Map PackageName SimpleTarget )
259252 go (_, [] ) = error " Stack.Build.Target.simplifyTargets: the impossible happened"
260- go (name, [(_, tt)]) = ([] , Map. singleton name $
261- case tt of
262- TTUnknown -> STUnknown
263- TTNonLocal -> STNonLocal
264- TTLocalComp comp -> STLocal $ Set. singleton comp
265- TTLocalAllComps comps -> STLocal $ Set. filter keepComp comps
266- )
253+ go (name, [(_, st)]) = ([] , Map. singleton name st)
267254 go (name, pairs) =
268255 case partitionEithers $ map (getLocalComp . snd ) pairs of
269- ([] , comps) -> ([] , Map. singleton name $ STLocal $ Set. fromList comps)
256+ ([] , comps) -> ([] , Map. singleton name $ STLocalComps $ Set. unions comps)
270257 _ ->
271258 let err = T. pack $ concat
272259 [ " Overlapping targets provided for package "
@@ -276,25 +263,18 @@ simplifyTargets includeTests includeBenches =
276263 ]
277264 in ([err], Map. empty)
278265
279- keepComp CLib = True
280- keepComp (CExe _) = True
281- keepComp (CTest _) = includeTests
282- keepComp (CBench _) = includeBenches
283-
284- getLocalComp (TTLocalComp comp) = Right comp
266+ getLocalComp (STLocalComps comps) = Right comps
285267 getLocalComp _ = Left ()
286268
287269parseTargets :: (MonadThrow m , MonadIO m )
288270 => Bool -- ^ using implicit global?
289- -> Bool -- ^ include tests
290- -> Bool -- ^ include benchmarks
291271 -> Map PackageName Version -- ^ snapshot
292272 -> Map PackageName Version -- ^ extra deps
293273 -> Map PackageName LocalPackageView
294274 -> Path Abs Dir -- ^ current directory
295275 -> [Text ] -- ^ command line targets
296276 -> m (Map PackageName Version , Map PackageName SimpleTarget )
297- parseTargets implicitGlobal includeTests includeBenches snap extras locals currDir textTargets' = do
277+ parseTargets implicitGlobal snap extras locals currDir textTargets' = do
298278 let textTargets =
299279 if null textTargets'
300280 then map (T. pack . packageNameString) $ Map. keys $ Map. filter (not . lpvExtraDep) locals
@@ -306,7 +286,7 @@ parseTargets implicitGlobal includeTests includeBenches snap extras locals currD
306286 map (resolveIdents snap extras locals) $ concat rawTargets
307287 (errs3, targetTypes) = partitionEithers $
308288 map (resolveRawTarget snap extras locals) rawTargets'
309- (errs4, targets) = simplifyTargets includeTests includeBenches targetTypes
289+ (errs4, targets) = simplifyTargets targetTypes
310290 errs = concat [errs1, errs2, errs3, errs4]
311291
312292 if null errs
0 commit comments