github.com/neilgarb/delve@v1.9.2-nobreaks/pkg/astutil/astutil.go (about) 1 // This package contains utility functions used by pkg/proc to generate 2 // ast.Expr expressions. 3 4 package astutil 5 6 import ( 7 "go/ast" 8 "go/token" 9 "strconv" 10 ) 11 12 // Eql returns an expression evaluating 'x == y'. 13 func Eql(x, y ast.Expr) *ast.BinaryExpr { 14 return &ast.BinaryExpr{Op: token.EQL, X: x, Y: y} 15 } 16 17 // Sel returns an expression evaluating 'x.sel'. 18 func Sel(x ast.Expr, sel string) *ast.SelectorExpr { 19 return &ast.SelectorExpr{X: x, Sel: &ast.Ident{Name: sel}} 20 } 21 22 // PkgVar returns an expression evaluating 'pkg.v'. 23 func PkgVar(pkg, v string) *ast.SelectorExpr { 24 return &ast.SelectorExpr{X: &ast.Ident{Name: pkg}, Sel: &ast.Ident{Name: v}} 25 } 26 27 // Int returns an expression representing the integer 'n'. 28 func Int(n int64) *ast.BasicLit { 29 return &ast.BasicLit{Kind: token.INT, Value: strconv.FormatInt(n, 10)} 30 } 31 32 // And returns an expression evaluating 'x && y'. 33 func And(x, y ast.Expr) *ast.BinaryExpr { 34 return &ast.BinaryExpr{Op: token.LAND, X: x, Y: y} 35 } 36 37 // Or returns an expression evaluating 'x || y'. 38 func Or(x, y ast.Expr) *ast.BinaryExpr { 39 return &ast.BinaryExpr{Op: token.LOR, X: x, Y: y} 40 }