{"record":{"id":"dd7bbc5026697e1f","repo":"go-delve/delve","slug":"wrong-number-of-arguments-to-real-d","errorCode":null,"errorMessage":"wrong number of arguments to real: %d","messagePattern":"wrong number of arguments to real: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/proc/eval.go","lineNumber":2037,"sourceCode":"\t}\n\n\targ := args[0]\n\targ.loadValue(loadSingleValue)\n\n\tif arg.Unreadable != nil {\n\t\treturn nil, arg.Unreadable\n\t}\n\n\tif arg.Kind != reflect.Complex64 && arg.Kind != reflect.Complex128 {\n\t\treturn nil, fmt.Errorf(\"invalid argument %s (type %s) to imag\", astutil.ExprToString(nodeargs[0]), arg.TypeString())\n\t}\n\n\treturn newConstant(constant.Imag(arg.Value), arg.bi, arg.mem), nil\n}\n\nfunc realBuiltin(args []*Variable, nodeargs []ast.Expr) (*Variable, error) {\n\tif len(args) != 1 {\n\t\treturn nil, fmt.Errorf(\"wrong number of arguments to real: %d\", len(args))\n\t}\n\n\targ := args[0]\n\targ.loadValue(loadSingleValue)\n\n\tif arg.Unreadable != nil {\n\t\treturn nil, arg.Unreadable\n\t}\n\n\tif arg.Value == nil || ((arg.Value.Kind() != constant.Int) && (arg.Value.Kind() != constant.Float) && (arg.Value.Kind() != constant.Complex)) {\n\t\treturn nil, fmt.Errorf(\"invalid argument %s (type %s) to real\", astutil.ExprToString(nodeargs[0]), arg.TypeString())\n\t}\n\n\treturn newConstant(constant.Real(arg.Value), arg.bi, arg.mem), nil\n}\n\nfunc minBuiltin(args []*Variable, nodeargs []ast.Expr) (*Variable, error) {\n\treturn minmaxBuiltin(\"min\", token.LSS, args, nodeargs)","sourceCodeStart":2019,"sourceCodeEnd":2055,"githubUrl":"https://github.com/go-delve/delve/blob/a23773e6c31361e43246bc43a424ee009679b174/pkg/proc/eval.go#L2019-L2055","documentation":"The `real()` builtin in Delve's evaluator extracts the real part of a numeric value and requires exactly one argument. Any other argument count returns this arity error immediately.","triggerScenarios":"Evaluating `real()` with zero arguments or `real(a, b)` with two or more (eval.go:2037, realBuiltin).","commonSituations":"Typos like `real(re, im)` (confusing real with complex), or programmatic expression construction with miscounted args.","solutions":["Pass exactly one argument: `real(<expr>)`.","To combine values use `complex(re, im)` instead.","Validate the args slice length before invoking the evaluator programmatically."],"exampleFix":"// before\nreal(re, im)\n// after\ncomplex(re, im)\nreal(c)","handlingStrategy":"validation","validationCode":"args, err := parseCallArgs(expr)\nif err != nil || len(args) != 1 {\n    return fmt.Errorf(\"real takes exactly 1 argument, got %d\", len(args))\n}","typeGuard":null,"tryCatchPattern":"val, err := eval(expr)\nif err != nil && strings.Contains(err.Error(), \"wrong number of arguments to real\") {\n    // fix the call arity and retry\n}","preventionTips":["real(x) takes one argument; use complex(re, im) to build values.","Double-check parentheses when nesting calls like real(complex(a, b)).","Validate argument count in generated expressions."],"tags":["debugger","go","expression-evaluation","arity"],"backgroundTag":"wrong-builtin-arg-count","analyzedSha":"a23773e6c31361e43246bc43a424ee009679b174","analyzedAt":"2026-08-31T15:12:45.221Z","schemaVersion":2},"datasetVersion":"2026-08-31T19:17:28.585Z"}