diff options
| author | Ophestra <cat@gensokyo.uk> | 2026-01-24 11:48:19 +0900 |
|---|---|---|
| committer | Ophestra <cat@gensokyo.uk> | 2026-01-24 12:23:35 +0900 |
| commit | d9ebaf20f8e71f043d2387a42d273dadc5d536b5 (patch) | |
| tree | de61fc80f30a876727413461bb1e99197e28c4ac /internal/rosa/rosa.go | |
| parent | acee0b36328883c4d66192c181652af9d82b7bf4 (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.go | 18 |
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 { |
