Look at code_lowered f(x) = x + 1 c = code_lowered(f, (Number,))
Getting the AST out of c (an array of LambdaInfo structures) is undocumented, but possible: Base.uncompressed_ast(c[1]) gives the AST (Expr object), and Base.lambdainfo_slotnames(c[1]) gives the argument names. Might be nice to have a documented way to extract this information.