Convert DepSet to a wrapper around a pointer
In preparation for converting DepSet to use unique.Handle, make DepSet
a struct that contains a pointer to an internal *depSet, and make all
the callers use DepSet instead of *DepSet.
Bug: 375276086
Test: depset_test.go
Flag: EXEMPT refactor
Change-Id: Ie498e698e03a6e470d75ede101672229e7b157cd
diff --git a/android/depset_test.go b/android/depset_test.go
index 376dffa..46c5b99 100644
--- a/android/depset_test.go
+++ b/android/depset_test.go
@@ -63,12 +63,12 @@
tests := []struct {
name string
- depSet func(t *testing.T, order DepSetOrder) *DepSet[Path]
+ depSet func(t *testing.T, order DepSetOrder) DepSet[Path]
postorder, preorder, topological []string
}{
{
name: "simple",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
return NewDepSet[Path](order, Paths{c, a, b}, nil)
},
postorder: []string{"c", "a", "b"},
@@ -77,7 +77,7 @@
},
{
name: "simpleNoDuplicates",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
return NewDepSet[Path](order, Paths{c, a, a, a, b}, nil)
},
postorder: []string{"c", "a", "b"},
@@ -86,9 +86,9 @@
},
{
name: "nesting",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
subset := NewDepSet[Path](order, Paths{c, a, e}, nil)
- return NewDepSet[Path](order, Paths{b, d}, []*DepSet[Path]{subset})
+ return NewDepSet[Path](order, Paths{b, d}, []DepSet[Path]{subset})
},
postorder: []string{"c", "a", "e", "b", "d"},
preorder: []string{"b", "d", "c", "a", "e"},
@@ -96,7 +96,7 @@
},
{
name: "builderReuse",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
assertEquals := func(t *testing.T, w, g Paths) {
t.Helper()
if !reflect.DeepEqual(w, g) {
@@ -122,7 +122,7 @@
},
{
name: "builderChaining",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
return NewDepSetBuilder[Path](order).Direct(b).Direct(d).
Transitive(NewDepSetBuilder[Path](order).Direct(c, a, e).Build()).Build()
},
@@ -132,7 +132,7 @@
},
{
name: "transitiveDepsHandledSeparately",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
subset := NewDepSetBuilder[Path](order).Direct(c, a, e).Build()
builder := NewDepSetBuilder[Path](order)
// The fact that we add the transitive subset between the Direct(b) and Direct(d)
@@ -148,7 +148,7 @@
},
{
name: "nestingNoDuplicates",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
subset := NewDepSetBuilder[Path](order).Direct(c, a, e).Build()
return NewDepSetBuilder[Path](order).Direct(b, d, e).Transitive(subset).Build()
},
@@ -158,7 +158,7 @@
},
{
name: "chain",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
c := NewDepSetBuilder[Path](order).Direct(c).Build()
b := NewDepSetBuilder[Path](order).Direct(b).Transitive(c).Build()
a := NewDepSetBuilder[Path](order).Direct(a).Transitive(b).Build()
@@ -171,7 +171,7 @@
},
{
name: "diamond",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
d := NewDepSetBuilder[Path](order).Direct(d).Build()
c := NewDepSetBuilder[Path](order).Direct(c).Transitive(d).Build()
b := NewDepSetBuilder[Path](order).Direct(b).Transitive(d).Build()
@@ -185,7 +185,7 @@
},
{
name: "extendedDiamond",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
d := NewDepSetBuilder[Path](order).Direct(d).Build()
e := NewDepSetBuilder[Path](order).Direct(e).Build()
b := NewDepSetBuilder[Path](order).Direct(b).Transitive(d).Transitive(e).Build()
@@ -199,7 +199,7 @@
},
{
name: "extendedDiamondRightArm",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
d := NewDepSetBuilder[Path](order).Direct(d).Build()
e := NewDepSetBuilder[Path](order).Direct(e).Build()
b := NewDepSetBuilder[Path](order).Direct(b).Transitive(d).Transitive(e).Build()
@@ -214,7 +214,7 @@
},
{
name: "orderConflict",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
child1 := NewDepSetBuilder[Path](order).Direct(a, b).Build()
child2 := NewDepSetBuilder[Path](order).Direct(b, a).Build()
parent := NewDepSetBuilder[Path](order).Transitive(child1).Transitive(child2).Build()
@@ -226,7 +226,7 @@
},
{
name: "orderConflictNested",
- depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
a := NewDepSetBuilder[Path](order).Direct(a).Build()
b := NewDepSetBuilder[Path](order).Direct(b).Build()
child1 := NewDepSetBuilder[Path](order).Transitive(a).Transitive(b).Build()
@@ -238,6 +238,18 @@
preorder: []string{"a", "b"},
topological: []string{"b", "a"},
},
+ {
+ name: "zeroDepSet",
+ depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
+ a := NewDepSetBuilder[Path](order).Build()
+ var b DepSet[Path]
+ c := NewDepSetBuilder[Path](order).Direct(c).Transitive(a, b).Build()
+ return c
+ },
+ postorder: []string{"c"},
+ preorder: []string{"c"},
+ topological: []string{"c"},
+ },
}
for _, tt := range tests {
@@ -277,7 +289,7 @@
}
}
}()
- NewDepSet(order1, nil, []*DepSet[Path]{NewDepSet[Path](order2, nil, nil)})
+ NewDepSet(order1, nil, []DepSet[Path]{NewDepSet[Path](order2, Paths{PathForTesting("a")}, nil)})
t.Fatal("expected panic")
}