"math"
"os"
"os/exec"
+ "slices"
"strconv"
"strings"
"unicode"
}
func (f *File) isMangledName(s string) bool {
- prefix := "_C"
- if strings.HasPrefix(s, prefix) {
- t := s[len(prefix):]
- for _, k := range nameKinds {
- if strings.HasPrefix(t, k+"_") {
- return true
- }
- }
+ t, ok := strings.CutPrefix(s, "_C")
+ if !ok {
+ return false
}
- return false
+ return slices.ContainsFunc(nameKinds, func(k string) bool {
+ return strings.HasPrefix(t, k+"_")
+ })
}
// rewriteCalls rewrites all calls that pass pointers to check that
}
return p.hasPointer(f, t.Elt, top)
case *ast.StructType:
- for _, field := range t.Fields.List {
- if p.hasPointer(f, field.Type, top) {
- return true
- }
- }
- return false
+ return slices.ContainsFunc(t.Fields.List, func(field *ast.Field) bool {
+ return p.hasPointer(f, field.Type, top)
+ })
case *ast.StarExpr: // Pointer type.
if !top {
return true
return c.dwarfHasPointer(dt.Type, pos)
case *dwarf.StructType:
- for _, f := range dt.Field {
- if c.dwarfHasPointer(f.Type, pos) {
- return true
- }
- }
- return false
+ return slices.ContainsFunc(dt.Field, func(f *dwarf.StructField) bool {
+ return c.dwarfHasPointer(f.Type, pos)
+ })
case *dwarf.TypedefType:
if dt.Name == "_GoString_" || dt.Name == "_GoBytes_" {