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.
This commit is contained in:
James Bardin 2020-01-07 15:45:28 -05:00
parent 32ae3b5452
commit 26a4de803f
4 changed files with 23 additions and 26 deletions

View File

@ -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
}

View File

@ -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)

View File

@ -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]

View File

@ -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])
}