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 // simple convenience helper for converting a dag.Set to a []Vertex
func AsVertexList(s Set) []Vertex { func AsVertexList(s Set) []Vertex {
rawList := s.List() vertexList := make([]Vertex, 0, len(s))
vertexList := make([]Vertex, len(rawList)) for _, raw := range s {
for i, raw := range rawList { vertexList = append(vertexList, raw.(Vertex))
vertexList[i] = raw.(Vertex)
} }
return vertexList return vertexList
} }

View File

@ -47,10 +47,9 @@ func (g *Graph) DirectedGraph() Grapher {
// Vertices returns the list of all the vertices in the graph. // Vertices returns the list of all the vertices in the graph.
func (g *Graph) Vertices() []Vertex { func (g *Graph) Vertices() []Vertex {
list := g.vertices.List() result := make([]Vertex, 0, len(g.vertices))
result := make([]Vertex, len(list)) for _, v := range g.vertices {
for i, v := range list { result = append(result, v.(Vertex))
result[i] = v.(Vertex)
} }
return result return result
@ -58,10 +57,9 @@ func (g *Graph) Vertices() []Vertex {
// Edges returns the list of all the edges in the graph. // Edges returns the list of all the edges in the graph.
func (g *Graph) Edges() []Edge { func (g *Graph) Edges() []Edge {
list := g.edges.List() result := make([]Edge, 0, len(g.edges))
result := make([]Edge, len(list)) for _, v := range g.edges {
for i, v := range list { result = append(result, v.(Edge))
result[i] = v.(Edge)
} }
return result return result
@ -120,10 +118,10 @@ func (g *Graph) Remove(v Vertex) Vertex {
g.debug.Remove(v) g.debug.Remove(v)
// Delete the edges to non-existent things // 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)) g.RemoveEdge(BasicEdge(v, target))
} }
for _, source := range g.UpEdges(v).List() { for _, source := range g.UpEdges(v) {
g.RemoveEdge(BasicEdge(source, 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 // Add our new vertex, then copy all the edges
g.Add(replacement) g.Add(replacement)
for _, target := range g.DownEdges(original).List() { for _, target := range g.DownEdges(original) {
g.Connect(BasicEdge(replacement, target)) g.Connect(BasicEdge(replacement, target))
} }
for _, source := range g.UpEdges(original).List() { for _, source := range g.UpEdges(original) {
g.Connect(BasicEdge(source, replacement)) g.Connect(BasicEdge(source, replacement))
} }
@ -254,7 +252,7 @@ func (g *Graph) StringWithNodeTypes() string {
// Alphabetize dependencies // Alphabetize dependencies
deps := make([]string, 0, targets.Len()) deps := make([]string, 0, targets.Len())
targetNodes := make(map[string]Vertex) targetNodes := make(map[string]Vertex)
for _, target := range targets.List() { for _, target := range targets {
dep := VertexName(target) dep := VertexName(target)
deps = append(deps, dep) deps = append(deps, dep)
targetNodes[dep] = target targetNodes[dep] = target
@ -295,7 +293,7 @@ func (g *Graph) String() string {
// Alphabetize dependencies // Alphabetize dependencies
deps := make([]string, 0, targets.Len()) deps := make([]string, 0, targets.Len())
for _, target := range targets.List() { for _, target := range targets {
deps = append(deps, VertexName(target)) deps = append(deps, VertexName(target))
} }
sort.Strings(deps) sort.Strings(deps)

View File

@ -24,7 +24,7 @@ func stronglyConnected(acct *sccAcct, g *Graph, v Vertex) int {
index := acct.visit(v) index := acct.visit(v)
minIdx := index minIdx := index
for _, raw := range g.DownEdges(v).List() { for _, raw := range g.DownEdges(v) {
target := raw.(Vertex) target := raw.(Vertex)
targetIdx := acct.VertexIndex[target] targetIdx := acct.VertexIndex[target]

View File

@ -174,7 +174,7 @@ func (w *Walker) Update(g *AcyclicGraph) {
oldVerts := w.vertices.Difference(v) oldVerts := w.vertices.Difference(v)
// Add the new vertices // Add the new vertices
for _, raw := range newVerts.List() { for _, raw := range newVerts {
v := raw.(Vertex) v := raw.(Vertex)
// Add to the waitgroup so our walk is not done until everything finishes // 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 // Remove the old vertices
for _, raw := range oldVerts.List() { for _, raw := range oldVerts {
v := raw.(Vertex) v := raw.(Vertex)
// Get the vertex info so we can cancel it // Get the vertex info so we can cancel it
@ -219,7 +219,7 @@ func (w *Walker) Update(g *AcyclicGraph) {
// Add the new edges // Add the new edges
changedDeps := make(Set) changedDeps := make(Set)
for _, raw := range newEdges.List() { for _, raw := range newEdges {
edge := raw.(Edge) edge := raw.(Edge)
waiter, dep := w.edgeParts(edge) waiter, dep := w.edgeParts(edge)
@ -249,8 +249,8 @@ func (w *Walker) Update(g *AcyclicGraph) {
w.edges.Add(raw) w.edges.Add(raw)
} }
// Process reoved edges // Process removed edges
for _, raw := range oldEdges.List() { for _, raw := range oldEdges {
edge := raw.(Edge) edge := raw.(Edge)
waiter, dep := w.edgeParts(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 // For each vertex with changed dependencies, we need to kick off
// a new waiter and notify the vertex of the changes. // a new waiter and notify the vertex of the changes.
for _, raw := range changedDeps.List() { for _, raw := range changedDeps {
v := raw.(Vertex) v := raw.(Vertex)
info, ok := w.vertexMap[v] info, ok := w.vertexMap[v]
if !ok { 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 // Start all the new vertices. We do this at the end so that all
// the edge waiters and changes are setup above. // the edge waiters and changes are setup above.
for _, raw := range newVerts.List() { for _, raw := range newVerts {
v := raw.(Vertex) v := raw.(Vertex)
go w.walkVertex(v, w.vertexMap[v]) go w.walkVertex(v, w.vertexMap[v])
} }