Skip to content

Commit 9deda35

Browse files
tklausergopherbot
authored andcommitted
cmd/cgo: use slices.ContainsFunc
Now that Go 1.22.6 is the minimum bootstrap toolchain (cf. CL 606156), the slices package (introduced in Go 1.21) can be used in packages built using the bootstrap toolchain. For golang#64751 Change-Id: Ib36f39016f57c5e110f78a85ca9c806d91356024 Reviewed-on: https://go-review.googlesource.com/c/go/+/612316 Reviewed-by: Dmitri Shuralyov <[email protected]> Reviewed-by: Dmitri Shuralyov <[email protected]> Auto-Submit: Tobias Klauser <[email protected]> Reviewed-by: Ian Lance Taylor <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]>
1 parent ad6ee21 commit 9deda35

File tree

1 file changed

+13
-21
lines changed

1 file changed

+13
-21
lines changed

src/cmd/cgo/gcc.go

+13-21
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"math"
2525
"os"
2626
"os/exec"
27+
"slices"
2728
"strconv"
2829
"strings"
2930
"unicode"
@@ -781,16 +782,13 @@ func (p *Package) mangleName(n *Name) {
781782
}
782783

783784
func (f *File) isMangledName(s string) bool {
784-
prefix := "_C"
785-
if strings.HasPrefix(s, prefix) {
786-
t := s[len(prefix):]
787-
for _, k := range nameKinds {
788-
if strings.HasPrefix(t, k+"_") {
789-
return true
790-
}
791-
}
785+
t, ok := strings.CutPrefix(s, "_C")
786+
if !ok {
787+
return false
792788
}
793-
return false
789+
return slices.ContainsFunc(nameKinds, func(k string) bool {
790+
return strings.HasPrefix(t, k+"_")
791+
})
794792
}
795793

796794
// rewriteCalls rewrites all calls that pass pointers to check that
@@ -1050,12 +1048,9 @@ func (p *Package) hasPointer(f *File, t ast.Expr, top bool) bool {
10501048
}
10511049
return p.hasPointer(f, t.Elt, top)
10521050
case *ast.StructType:
1053-
for _, field := range t.Fields.List {
1054-
if p.hasPointer(f, field.Type, top) {
1055-
return true
1056-
}
1057-
}
1058-
return false
1051+
return slices.ContainsFunc(t.Fields.List, func(field *ast.Field) bool {
1052+
return p.hasPointer(f, field.Type, top)
1053+
})
10591054
case *ast.StarExpr: // Pointer type.
10601055
if !top {
10611056
return true
@@ -3202,12 +3197,9 @@ func (c *typeConv) dwarfHasPointer(dt dwarf.Type, pos token.Pos) bool {
32023197
return c.dwarfHasPointer(dt.Type, pos)
32033198

32043199
case *dwarf.StructType:
3205-
for _, f := range dt.Field {
3206-
if c.dwarfHasPointer(f.Type, pos) {
3207-
return true
3208-
}
3209-
}
3210-
return false
3200+
return slices.ContainsFunc(dt.Field, func(f *dwarf.StructField) bool {
3201+
return c.dwarfHasPointer(f.Type, pos)
3202+
})
32113203

32123204
case *dwarf.TypedefType:
32133205
if dt.Name == "_GoString_" || dt.Name == "_GoBytes_" {

0 commit comments

Comments
 (0)