From 26a4de803fee3bf79719210a88a479b21c6ccd17 Mon Sep 17 00:00:00 2001 From: James Bardin Date: Tue, 7 Jan 2020 15:45:28 -0500 Subject: [PATCH] remove uses of Set.List Since the set can be iterated over directly, we no longer need to copy the values into a new slice. --- dag/dag.go | 7 +++---- dag/graph.go | 26 ++++++++++++-------------- dag/tarjan.go | 2 +- dag/walk.go | 14 +++++++------- 4 files changed, 23 insertions(+), 26 deletions(-) diff --git a/dag/dag.go b/dag/dag.go index 705f041d47..ea78d2c3cd 100644 --- a/dag/dag.go +++ b/dag/dag.go @@ -175,10 +175,9 @@ func (g *AcyclicGraph) Walk(cb WalkFunc) tfdiags.Diagnostics { // simple convenience helper for converting a dag.Set to a []Vertex func AsVertexList(s Set) []Vertex { - rawList := s.List() - vertexList := make([]Vertex, len(rawList)) - for i, raw := range rawList { - vertexList[i] = raw.(Vertex) + vertexList := make([]Vertex, 0, len(s)) + for _, raw := range s { + vertexList = append(vertexList, raw.(Vertex)) } return vertexList } diff --git a/dag/graph.go b/dag/graph.go index 1b50524b49..35ea443240 100644 --- a/dag/graph.go +++ b/dag/graph.go @@ -47,10 +47,9 @@ func (g *Graph) DirectedGraph() Grapher { // Vertices returns the list of all the vertices in the graph. func (g *Graph) Vertices() []Vertex { - list := g.vertices.List() - result := make([]Vertex, len(list)) - for i, v := range list { - result[i] = v.(Vertex) + result := make([]Vertex, 0, len(g.vertices)) + for _, v := range g.vertices { + result = append(result, v.(Vertex)) } return result @@ -58,10 +57,9 @@ func (g *Graph) Vertices() []Vertex { // Edges returns the list of all the edges in the graph. func (g *Graph) Edges() []Edge { - list := g.edges.List() - result := make([]Edge, len(list)) - for i, v := range list { - result[i] = v.(Edge) + result := make([]Edge, 0, len(g.edges)) + for _, v := range g.edges { + result = append(result, v.(Edge)) } return result @@ -120,10 +118,10 @@ func (g *Graph) Remove(v Vertex) Vertex { g.debug.Remove(v) // Delete the edges to non-existent things - for _, target := range g.DownEdges(v).List() { + for _, target := range g.DownEdges(v) { g.RemoveEdge(BasicEdge(v, target)) } - for _, source := range g.UpEdges(v).List() { + for _, source := range g.UpEdges(v) { g.RemoveEdge(BasicEdge(source, v)) } @@ -148,10 +146,10 @@ func (g *Graph) Replace(original, replacement Vertex) bool { // Add our new vertex, then copy all the edges g.Add(replacement) - for _, target := range g.DownEdges(original).List() { + for _, target := range g.DownEdges(original) { g.Connect(BasicEdge(replacement, target)) } - for _, source := range g.UpEdges(original).List() { + for _, source := range g.UpEdges(original) { g.Connect(BasicEdge(source, replacement)) } @@ -254,7 +252,7 @@ func (g *Graph) StringWithNodeTypes() string { // Alphabetize dependencies deps := make([]string, 0, targets.Len()) targetNodes := make(map[string]Vertex) - for _, target := range targets.List() { + for _, target := range targets { dep := VertexName(target) deps = append(deps, dep) targetNodes[dep] = target @@ -295,7 +293,7 @@ func (g *Graph) String() string { // Alphabetize dependencies deps := make([]string, 0, targets.Len()) - for _, target := range targets.List() { + for _, target := range targets { deps = append(deps, VertexName(target)) } sort.Strings(deps) diff --git a/dag/tarjan.go b/dag/tarjan.go index 9d8b25ce2c..330abd589f 100644 --- a/dag/tarjan.go +++ b/dag/tarjan.go @@ -24,7 +24,7 @@ func stronglyConnected(acct *sccAcct, g *Graph, v Vertex) int { index := acct.visit(v) minIdx := index - for _, raw := range g.DownEdges(v).List() { + for _, raw := range g.DownEdges(v) { target := raw.(Vertex) targetIdx := acct.VertexIndex[target] diff --git a/dag/walk.go b/dag/walk.go index 4fd41ed86d..8fb60f23a3 100644 --- a/dag/walk.go +++ b/dag/walk.go @@ -174,7 +174,7 @@ func (w *Walker) Update(g *AcyclicGraph) { oldVerts := w.vertices.Difference(v) // Add the new vertices - for _, raw := range newVerts.List() { + for _, raw := range newVerts { v := raw.(Vertex) // Add to the waitgroup so our walk is not done until everything finishes @@ -196,7 +196,7 @@ func (w *Walker) Update(g *AcyclicGraph) { } // Remove the old vertices - for _, raw := range oldVerts.List() { + for _, raw := range oldVerts { v := raw.(Vertex) // Get the vertex info so we can cancel it @@ -219,7 +219,7 @@ func (w *Walker) Update(g *AcyclicGraph) { // Add the new edges changedDeps := make(Set) - for _, raw := range newEdges.List() { + for _, raw := range newEdges { edge := raw.(Edge) waiter, dep := w.edgeParts(edge) @@ -249,8 +249,8 @@ func (w *Walker) Update(g *AcyclicGraph) { w.edges.Add(raw) } - // Process reoved edges - for _, raw := range oldEdges.List() { + // Process removed edges + for _, raw := range oldEdges { edge := raw.(Edge) waiter, dep := w.edgeParts(edge) @@ -275,7 +275,7 @@ func (w *Walker) Update(g *AcyclicGraph) { // For each vertex with changed dependencies, we need to kick off // a new waiter and notify the vertex of the changes. - for _, raw := range changedDeps.List() { + for _, raw := range changedDeps { v := raw.(Vertex) info, ok := w.vertexMap[v] if !ok { @@ -320,7 +320,7 @@ func (w *Walker) Update(g *AcyclicGraph) { // Start all the new vertices. We do this at the end so that all // the edge waiters and changes are setup above. - for _, raw := range newVerts.List() { + for _, raw := range newVerts { v := raw.(Vertex) go w.walkVertex(v, w.vertexMap[v]) }