aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/rosa/rosa.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2026-01-24 11:48:19 +0900
committerOphestra <cat@gensokyo.uk>2026-01-24 12:23:35 +0900
commitd9ebaf20f8e71f043d2387a42d273dadc5d536b5 (patch)
treede61fc80f30a876727413461bb1e99197e28c4ac /internal/rosa/rosa.go
parentacee0b36328883c4d66192c181652af9d82b7bf4 (diff)
internal/rosa: stage3 special case helper
This makes it cleaner to specify non-stage3 and stage3-exclusive dependencies. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'internal/rosa/rosa.go')
-rw-r--r--internal/rosa/rosa.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/internal/rosa/rosa.go b/internal/rosa/rosa.go
index 06f73c67..c3b6a3ed 100644
--- a/internal/rosa/rosa.go
+++ b/internal/rosa/rosa.go
@@ -116,6 +116,24 @@ const (
Std
)
+// stage3Concat concatenates s and values. If the current toolchain is
+// toolchainStage3, stage3Concat returns s as is.
+func stage3Concat[S ~[]E, E any](t Toolchain, s S, values ...E) S {
+ if t == toolchainStage3 {
+ return s
+ }
+ return slices.Concat(s, values)
+}
+
+// stage3ExclConcat concatenates s and values. If the current toolchain is not
+// toolchainStage3, stage3ExclConcat returns s as is.
+func stage3ExclConcat[S ~[]E, E any](t Toolchain, s S, values ...E) S {
+ if t == toolchainStage3 {
+ return slices.Concat(s, values)
+ }
+ return s
+}
+
// lastIndexFunc is like [strings.LastIndexFunc] but for [slices].
func lastIndexFunc[S ~[]E, E any](s S, f func(E) bool) (i int) {
if i = slices.IndexFunc(s, f); i < 0 {