Skip to content

Commit 3e92421

Browse files
committed
Better implement genmain.Overlay behaviors
1 parent 8f7625a commit 3e92421

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

gir/cmd/gir-generate/genmain/genmain.go

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,20 +122,18 @@ type Data struct {
122122
// Overlay joins the given list of data into a single Data. The last Data in the
123123
// list will be used for generation.
124124
func Overlay(data ...Data) Data {
125-
overlay := data[:len(data)-1]
126125
last := data[len(data)-1]
126+
if last.ExternOverrides == nil {
127+
last.ExternOverrides = make(map[string]gir.Repositories)
128+
}
127129

128-
for _, datum := range overlay {
129-
if last.ExternOverrides == nil {
130-
last.ExternOverrides = make(map[string]gir.Repositories)
131-
}
132-
133-
last.KnownPackages = append(last.KnownPackages, datum.Packages...)
130+
for _, datum := range slices.Backward(data[:len(data)-1]) {
131+
last.KnownPackages = slices.Concat(datum.Packages, last.KnownPackages)
134132
last.ExternOverrides[datum.Module] = MustLoadPackages(datum.Packages)
135-
last.Preprocessors = append(last.Preprocessors, datum.Preprocessors...)
136-
last.Filters = append(last.Filters, datum.Filters...)
137-
last.ProcessConverters = append(last.ProcessConverters, datum.ProcessConverters...)
138-
last.DynamicLinkNamespaces = append(last.DynamicLinkNamespaces, datum.DynamicLinkNamespaces...)
133+
last.Preprocessors = slices.Concat(datum.Preprocessors, last.Preprocessors)
134+
last.Filters = slices.Concat(datum.Filters, last.Filters)
135+
last.ProcessConverters = slices.Concat(datum.ProcessConverters, last.ProcessConverters)
136+
last.DynamicLinkNamespaces = slices.Concat(datum.DynamicLinkNamespaces, last.DynamicLinkNamespaces)
139137
}
140138

141139
last.KnownPackages = slices.CompactFunc(last.KnownPackages, func(a, b Package) bool {

0 commit comments

Comments
 (0)