Best Syzkaller code snippet using compiler.checkCall
expr_rewriter.go
Source:expr_rewriter.go
...58 fpnameExtendCall := &ast.CallExpr{59 Fun: ast.NewIdent(extendPkgName),60 Args: []ast.Expr{fpname},61 }62 checkCall := &ast.CallExpr{63 Fun: &ast.SelectorExpr{64 X: &ast.Ident{NamePos: call.Pos(), Name: r.failpointName},65 Sel: ast.NewIdent(evalFunction),66 },67 Args: []ast.Expr{fpnameExtendCall},68 }69 if isNilFunc || len(fpbody.Body.List) < 1 {70 return true, &ast.ExprStmt{X: checkCall}, nil71 }72 ifBody := &ast.BlockStmt{73 Lbrace: call.Pos(),74 List: fpbody.Body.List,75 Rbrace: call.End(),76 }77 // closure signature:78 // func(val failpoint.Value) {...}79 // func() {...}80 var argName *ast.Ident81 if len(fpbody.Type.Params.List) > 0 {82 arg := fpbody.Type.Params.List[0]83 selector, ok := arg.Type.(*ast.SelectorExpr)84 if !ok || selector.Sel.Name != "Value" || selector.X.(*ast.Ident).Name != r.failpointName {85 return false, nil, fmt.Errorf("failpoint.Inject: invalid signature in %s", r.pos(call.Pos()))86 }87 argName = arg.Names[0]88 } else {89 argName = ast.NewIdent("_")90 }91 err := ast.NewIdent("_err_")92 init := &ast.AssignStmt{93 Lhs: []ast.Expr{argName, err},94 Rhs: []ast.Expr{checkCall},95 Tok: token.DEFINE,96 }97 cond := &ast.BinaryExpr{98 X: err,99 Op: token.EQL,100 Y: ast.NewIdent("nil"),101 }102 stmt := &ast.IfStmt{103 If: call.Pos(),104 Init: init,105 Cond: cond,106 Body: ifBody,107 }108 return true, stmt, nil109}110func (r *Rewriter) rewriteInjectContext(call *ast.CallExpr) (bool, ast.Stmt, error) {111 if len(call.Args) != 3 {112 return false, nil, fmt.Errorf("failpoint.InjectContext: expect 3 arguments but got %v in %s", len(call.Args), r.pos(call.Pos()))113 }114 // Second argument need not to be a identifier, any context type token (e.g. selector) is OK.115 // Type safe is convinced by compiler.116 ctxname, ok := call.Args[0].(ast.Expr)117 if !ok {118 return false, nil, fmt.Errorf("failpoint.InjectContext: first argument expect context in %s, which must be an expression", r.pos(call.Pos()))119 }120 // Second argument need not to be a string literal, any string type stuff is ok.121 // Type safe is convinced by compiler.122 fpname, ok := call.Args[1].(ast.Expr)123 if !ok {124 return false, nil, fmt.Errorf("failpoint.InjectContext: second argument expect a valid expression in %s", r.pos(call.Pos()))125 }126 // failpoint.InjectContext("failpoint-name", ctx, nil)127 ident, ok := call.Args[2].(*ast.Ident)128 isNilFunc := ok && ident.Name == "nil"129 // failpoint.InjectContext("failpoint-name", ctx, func(){...})130 // failpoint.InjectContext("failpoint-name", ctx, func(val failpoint.Value){...})131 fpbody, isFuncLit := call.Args[2].(*ast.FuncLit)132 if !isNilFunc && !isFuncLit {133 return false, nil, fmt.Errorf("failpoint.InjectContext: third argument expect closure in %s", r.pos(call.Pos()))134 }135 if isFuncLit {136 if len(fpbody.Type.Params.List) > 1 {137 return false, nil, fmt.Errorf("failpoint.InjectContext: closure signature illegal in %s", r.pos(call.Pos()))138 }139 if len(fpbody.Type.Params.List) == 1 && len(fpbody.Type.Params.List[0].Names) > 1 {140 return false, nil, fmt.Errorf("failpoint.InjectContext: closure signature illegal in %s", r.pos(call.Pos()))141 }142 }143 fpnameExtendCall := &ast.CallExpr{144 Fun: ast.NewIdent(extendPkgName),145 Args: []ast.Expr{fpname},146 }147 checkCall := &ast.CallExpr{148 Fun: &ast.SelectorExpr{149 X: &ast.Ident{NamePos: call.Pos(), Name: r.failpointName},150 Sel: ast.NewIdent(evalCtxFunction),151 },152 Args: []ast.Expr{ctxname, fpnameExtendCall},153 }154 if isNilFunc || len(fpbody.Body.List) < 1 {155 return true, &ast.ExprStmt{X: checkCall}, nil156 }157 ifBody := &ast.BlockStmt{158 Lbrace: call.Pos(),159 List: fpbody.Body.List,160 Rbrace: call.End(),161 }162 // closure signature:163 // func(val failpoint.Value) {...}164 // func() {...}165 var argName *ast.Ident166 if len(fpbody.Type.Params.List) > 0 {167 arg := fpbody.Type.Params.List[0]168 selector, ok := arg.Type.(*ast.SelectorExpr)169 if !ok || selector.Sel.Name != "Value" || selector.X.(*ast.Ident).Name != r.failpointName {170 return false, nil, fmt.Errorf("failpoint.InjectContext: invalid signature in %s", r.pos(call.Pos()))171 }172 argName = arg.Names[0]173 } else {174 argName = ast.NewIdent("_")175 }176 err := ast.NewIdent("_err_")177 init := &ast.AssignStmt{178 Lhs: []ast.Expr{argName, err},179 Rhs: []ast.Expr{checkCall},180 Tok: token.DEFINE,181 }182 cond := &ast.BinaryExpr{183 X: err,184 Op: token.EQL,185 Y: ast.NewIdent("nil"),186 }187 stmt := &ast.IfStmt{188 If: call.Pos(),189 Init: init,190 Cond: cond,191 Body: ifBody,192 }193 return true, stmt, nil...
checkCall
Using AI Code Generation
1public class Main {2 public static void main(String[] args) {3 Compiler c = new Compiler();4 c.checkCall();5 }6}7public class Main {8 public static void main(String[] args) {9 Compiler c = new Compiler();10 c.compile();11 }12}
checkCall
Using AI Code Generation
1import "fmt"2func main() {3 compiler := new(Compiler)4 compiler.checkCall("hello")5}6import "fmt"7type Compiler struct {8}9func (c *Compiler) checkCall(a string) {10 fmt.Println("checkCall called")11}12import "fmt"13type Compiler struct {14}15func (c *Compiler) CheckCall(a string) {16 fmt.Println("checkCall called")17}18import "fmt"19func main() {20 compiler := new(Compiler)21 compiler.CheckCall("hello")22}23import "fmt"24type Compiler struct {25}26func (c *Compiler) checkCall(a string) {27 fmt.Println("checkCall called")28}29import "fmt"30type Compiler struct {31}32func (c *Compiler) CheckCall(a string) {33 fmt.Println("checkCall called")34}35import "fmt"36func main() {37 compiler := new(Compiler)38 compiler.CheckCall("hello")39}40import "fmt"41type Compiler struct {42}43func (c *Compiler) checkCall(a string) {44 fmt.Println("checkCall called")45}
checkCall
Using AI Code Generation
1import (2type compiler struct {3}4func (c *compiler) checkCall(function interface{}, args ...interface{}) {5 f := reflect.ValueOf(function)6 if len(args) != f.Type().NumIn() {7 panic("incorrect number of arguments passed")8 }9 in := make([]reflect.Value, len(args))10 for k, param := range args {11 in[k] = reflect.ValueOf(param)12 }13 f.Call(in)14}15func main() {16 c := compiler{}17 c.checkCall(add, 1, 2)18}19import "fmt"20func add(a int, b int) {21 fmt.Println(a + b)22}
checkCall
Using AI Code Generation
1import "fmt"2func main() {3 fmt.Println("Hello, world.")4 compiler := new(Compiler)5 compiler.checkCall()6}7type Compiler struct {8}9func (c *Compiler) checkCall() {10 println("Name: " + c.name + ", Version: " + c.version)11}
checkCall
Using AI Code Generation
1import (2func main() {3 c := test.Compiler{}4 c.CheckCall()5 fmt.Println("Hello World")6}7import (8func main() {9 c := test.Compiler{}10 c.CheckCall()11 fmt.Println("Hello World")12}13import (14func main() {15 c.CheckCall()16 fmt.Println("Hello World")17}18import (19func main() {20 c.CheckCall()21 fmt.Println("Hello World")22}23import (24func main() {25 c.CheckCall()26 fmt.Println("Hello World")27}
checkCall
Using AI Code Generation
1import (2func main() {3 fmt.Println("Hello, playground")4 c := NewCompiler()5 c.CheckCall("Hello, playground")6}7import (8type Compiler struct {9}10func NewCompiler() *Compiler {11 return &Compiler{}12}13func (c *Compiler) CheckCall(args ...interface{}) {14 for _, arg := range args {15 fmt.Println(reflect.TypeOf(arg))16 }17}
checkCall
Using AI Code Generation
1import "fmt"2func main() {3 fmt.Println(a)4}5import "fmt"6func main() {7 fmt.Println(a)8}
checkCall
Using AI Code Generation
1import (2type compiler struct {3}4func (c *compiler) checkCall(f string, cF string) {5 if !contains(c.functions, f) {6 fmt.Printf("Function %s not defined7 os.Exit(1)8 }9 if contains(c.calls, f) {10 fmt.Printf("Function %s already called11 os.Exit(1)12 }13 if !contains(c.functions, cF) {14 fmt.Printf("Callee %s not defined15 os.Exit(1)16 }17 if contains(c.calls, cF) {18 fmt.Printf("Callee %s already called19 os.Exit(1)20 }21 c.calledFunctions = append(c.calledFunctions, f)22 c.calls = append(c.calls, f + " " + cF)23}24func main() {25 c := compiler{}26 file, err := os.Open("input.txt")27 if err != nil {28 log.Fatal(err)29 }30 defer file.Close()31 scanner := bufio.NewScanner(file)32 for scanner.Scan() {33 tokens := strings.Split(scanner.Text(), " ")34 if tokens[0] == "def" {35 if contains(c.functions, tokens[1]) {36 fmt.Printf("Function %s already defined37 os.Exit(1)38 }39 if contains(c.calls, tokens[1]) {40 fmt.Printf("
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!