Merge "Use Label (string) instead of Label (struct) to dedupe" into main
This commit is contained in:
@@ -194,14 +194,7 @@ func (ll *LabelList) Partition(predicate func(label Label) bool) (LabelList, Lab
|
||||
// UniqueSortedBazelLabels takes a []Label and deduplicates the labels, and returns
|
||||
// the slice in a sorted order.
|
||||
func UniqueSortedBazelLabels(originalLabels []Label) []Label {
|
||||
uniqueLabelsSet := make(map[Label]bool)
|
||||
for _, l := range originalLabels {
|
||||
uniqueLabelsSet[l] = true
|
||||
}
|
||||
var uniqueLabels []Label
|
||||
for l, _ := range uniqueLabelsSet {
|
||||
uniqueLabels = append(uniqueLabels, l)
|
||||
}
|
||||
uniqueLabels := FirstUniqueBazelLabels(originalLabels)
|
||||
sort.SliceStable(uniqueLabels, func(i, j int) bool {
|
||||
return uniqueLabels[i].Label < uniqueLabels[j].Label
|
||||
})
|
||||
@@ -210,13 +203,13 @@ func UniqueSortedBazelLabels(originalLabels []Label) []Label {
|
||||
|
||||
func FirstUniqueBazelLabels(originalLabels []Label) []Label {
|
||||
var labels []Label
|
||||
found := make(map[Label]bool, len(originalLabels))
|
||||
found := make(map[string]bool, len(originalLabels))
|
||||
for _, l := range originalLabels {
|
||||
if _, ok := found[l]; ok {
|
||||
if _, ok := found[l.Label]; ok {
|
||||
continue
|
||||
}
|
||||
labels = append(labels, l)
|
||||
found[l] = true
|
||||
found[l.Label] = true
|
||||
}
|
||||
return labels
|
||||
}
|
||||
|
@@ -33,8 +33,12 @@ func TestUniqueBazelLabels(t *testing.T) {
|
||||
{Label: "b"},
|
||||
{Label: "a"},
|
||||
{Label: "c"},
|
||||
// namespaces
|
||||
{Label: "//foo:bar", OriginalModuleName: "bar"}, // when referenced from foo namespace
|
||||
{Label: "//foo:bar", OriginalModuleName: "//foo:bar"}, // when reference from root namespace
|
||||
},
|
||||
expectedUniqueLabels: []Label{
|
||||
{Label: "//foo:bar", OriginalModuleName: "bar"},
|
||||
{Label: "a"},
|
||||
{Label: "b"},
|
||||
{Label: "c"},
|
||||
@@ -194,6 +198,9 @@ func TestFirstUniqueBazelLabelList(t *testing.T) {
|
||||
{Label: "b"},
|
||||
{Label: "a"},
|
||||
{Label: "c"},
|
||||
// namespaces
|
||||
{Label: "//foo:bar", OriginalModuleName: "bar"}, // when referenced from foo namespace
|
||||
{Label: "//foo:bar", OriginalModuleName: "//foo:bar"}, // when referenced from root namespace
|
||||
},
|
||||
Excludes: []Label{
|
||||
{Label: "x"},
|
||||
@@ -207,6 +214,7 @@ func TestFirstUniqueBazelLabelList(t *testing.T) {
|
||||
{Label: "a"},
|
||||
{Label: "b"},
|
||||
{Label: "c"},
|
||||
{Label: "//foo:bar", OriginalModuleName: "bar"},
|
||||
},
|
||||
Excludes: []Label{
|
||||
{Label: "x"},
|
||||
|
Reference in New Issue
Block a user