#pragma once #include "AST/Base.h" #include #include namespace ast { class CallExpr : public Expr { const std::unique_ptr callee; const std::vector> args; public: CallExpr(LOC_ARG, std::unique_ptr &callee, std::vector> &args) : Expr(location), callee(std::move(callee)), args(std::move(args)) {} virtual std::string str() { std::stringstream ss; ss << "CallExpr("; ss << "callee=" << callee->str(); ss << "args=["; for (size_t i = 0; i < args.size(); i++) { ss << args[i]->str(); if (i != args.size() - 1) ss << ", "; } ss << "]"; ss << ")"; return ss.str(); } }; }