mirror of
https://github.com/go-delve/delve.git
synced 2025-10-30 02:07:58 +08:00
proc: simplify next/step/stepout condition code
Adds a library of utility functions to generated breakpoint conditions for next, step and stepout.
This commit is contained in:
40
pkg/astutil/astutil.go
Normal file
40
pkg/astutil/astutil.go
Normal file
@ -0,0 +1,40 @@
|
||||
// This package contains utility functions used by pkg/proc to generate
|
||||
// ast.Expr expressions.
|
||||
|
||||
package astutil
|
||||
|
||||
import (
|
||||
"go/ast"
|
||||
"go/token"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// Eql returns an expression evaluating 'x == y'.
|
||||
func Eql(x, y ast.Expr) *ast.BinaryExpr {
|
||||
return &ast.BinaryExpr{Op: token.EQL, X: x, Y: y}
|
||||
}
|
||||
|
||||
// Sel returns an expression evaluating 'x.sel'.
|
||||
func Sel(x ast.Expr, sel string) *ast.SelectorExpr {
|
||||
return &ast.SelectorExpr{X: x, Sel: &ast.Ident{Name: sel}}
|
||||
}
|
||||
|
||||
// PkgVar returns an expression evaluating 'pkg.v'.
|
||||
func PkgVar(pkg, v string) *ast.SelectorExpr {
|
||||
return &ast.SelectorExpr{X: &ast.Ident{Name: pkg}, Sel: &ast.Ident{Name: v}}
|
||||
}
|
||||
|
||||
// Int returns an expression representing the integer 'n'.
|
||||
func Int(n int64) *ast.BasicLit {
|
||||
return &ast.BasicLit{Kind: token.INT, Value: strconv.FormatInt(n, 10)}
|
||||
}
|
||||
|
||||
// And returns an expression evaluating 'x && y'.
|
||||
func And(x, y ast.Expr) *ast.BinaryExpr {
|
||||
return &ast.BinaryExpr{Op: token.LAND, X: x, Y: y}
|
||||
}
|
||||
|
||||
// Or returns an expression evaluating 'x || y'.
|
||||
func Or(x, y ast.Expr) *ast.BinaryExpr {
|
||||
return &ast.BinaryExpr{Op: token.LOR, X: x, Y: y}
|
||||
}
|
||||
Reference in New Issue
Block a user