Skip to content

Commit 95c0cc2

Browse files
committed
Simplify removeUnnecessaryStructuralNodes
1 parent e5fdec9 commit 95c0cc2

File tree

1 file changed

+4
-9
lines changed

1 file changed

+4
-9
lines changed

src/ShellCheck/CFG.hs

+4-9
Original file line numberDiff line numberDiff line change
@@ -295,19 +295,19 @@ removeUnnecessaryStructuralNodes (nodes, edges, mapping, association) =
295295
regularEdges = filter isRegularEdge edges
296296
inDegree = counter $ map (\(from,to,_) -> from) regularEdges
297297
outDegree = counter $ map (\(from,to,_) -> to) regularEdges
298-
structuralNodes = S.fromList $ map fst $ filter isStructural nodes
298+
structuralNodes = S.fromList [node | (node, CFStructuralNode) <- nodes]
299299
candidateNodes = S.filter isLinear structuralNodes
300300
edgesToCollapse = S.fromList $ filter filterEdges regularEdges
301301

302302
remapping :: M.Map Node Node
303-
remapping = foldl' (\m (old, new) -> M.insert old new m) M.empty $ map orderEdge $ S.toList edgesToCollapse
304-
recursiveRemapping = M.fromList $ map (\c -> (c, recursiveLookup remapping c)) $ M.keys remapping
303+
remapping = M.fromList $ map orderEdge $ S.toList edgesToCollapse
304+
recursiveRemapping = M.mapWithKey (\c _ -> recursiveLookup remapping c) remapping
305305

306306
filterEdges (a,b,_) =
307307
a `S.member` candidateNodes && b `S.member` candidateNodes
308308

309309
orderEdge (a,b,_) = if a < b then (b,a) else (a,b)
310-
counter = foldl' (\map key -> M.insertWith (+) key 1 map) M.empty
310+
counter = M.fromListWith (+) . map (\key -> (key, 1))
311311
isRegularEdge (_, _, CFEFlow) = True
312312
isRegularEdge _ = False
313313

@@ -317,11 +317,6 @@ removeUnnecessaryStructuralNodes (nodes, edges, mapping, association) =
317317
Nothing -> node
318318
Just x -> recursiveLookup map x
319319

320-
isStructural (node, label) =
321-
case label of
322-
CFStructuralNode -> True
323-
_ -> False
324-
325320
isLinear node =
326321
M.findWithDefault 0 node inDegree == 1
327322
&& M.findWithDefault 0 node outDegree == 1

0 commit comments

Comments
 (0)