exprToString converts an AST expression to its string representation.
(expr ast.Expr)
| 247 | |
| 248 | // exprToString converts an AST expression to its string representation. |
| 249 | func exprToString(expr ast.Expr) string { |
| 250 | switch e := expr.(type) { |
| 251 | case *ast.BasicLit: |
| 252 | return e.Value |
| 253 | case *ast.Ident: |
| 254 | return e.Name |
| 255 | case *ast.UnaryExpr: |
| 256 | return e.Op.String() + exprToString(e.X) |
| 257 | case *ast.BinaryExpr: |
| 258 | return exprToString(e.X) + " " + e.Op.String() + " " + exprToString(e.Y) |
| 259 | case *ast.CompositeLit: |
| 260 | // For complex types (structs/maps/slices), convert AST back to source code |
| 261 | var buf bytes.Buffer |
| 262 | if err := printer.Fprint(&buf, token.NewFileSet(), e); err != nil { |
| 263 | return "nil" // Fallback on error |
| 264 | } |
| 265 | return buf.String() |
| 266 | default: |
| 267 | return "nil" |
| 268 | } |
| 269 | } |
no test coverage detected