diff --git a/bazel/properties.go b/bazel/properties.go index 702c31c4d..bb0eafc7b 100644 --- a/bazel/properties.go +++ b/bazel/properties.go @@ -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 } diff --git a/bazel/properties_test.go b/bazel/properties_test.go index c98ae0ea2..751cb8b30 100644 --- a/bazel/properties_test.go +++ b/bazel/properties_test.go @@ -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"},