@@ -24,6 +24,7 @@ import (
24
24
"math"
25
25
"os"
26
26
"os/exec"
27
+ "slices"
27
28
"strconv"
28
29
"strings"
29
30
"unicode"
@@ -781,16 +782,13 @@ func (p *Package) mangleName(n *Name) {
781
782
}
782
783
783
784
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
792
788
}
793
- return false
789
+ return slices .ContainsFunc (nameKinds , func (k string ) bool {
790
+ return strings .HasPrefix (t , k + "_" )
791
+ })
794
792
}
795
793
796
794
// 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 {
1050
1048
}
1051
1049
return p .hasPointer (f , t .Elt , top )
1052
1050
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
+ })
1059
1054
case * ast.StarExpr : // Pointer type.
1060
1055
if ! top {
1061
1056
return true
@@ -3202,12 +3197,9 @@ func (c *typeConv) dwarfHasPointer(dt dwarf.Type, pos token.Pos) bool {
3202
3197
return c .dwarfHasPointer (dt .Type , pos )
3203
3198
3204
3199
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
+ })
3211
3203
3212
3204
case * dwarf.TypedefType :
3213
3205
if dt .Name == "_GoString_" || dt .Name == "_GoBytes_" {
0 commit comments