diff --git a/src/ast.h b/src/ast.h index 1431c18..ba0d174 100644 --- a/src/ast.h +++ b/src/ast.h @@ -11,6 +11,7 @@ namespace AST { class Node { public: virtual std::string formatted() = 0; + virtual ~Node() = default; }; class Expression : public Node { @@ -20,6 +21,7 @@ namespace AST { class Type { public: + virtual ~Type() = default; virtual std::string formatted() = 0; virtual llvm::Type* codegen(codegen::Builder& builder) = 0; }; @@ -34,6 +36,7 @@ namespace AST { int m_value; public: IntLiteralExpression(int value) : m_value{ value } {} + virtual ~IntLiteralExpression() override = default; virtual std::string formatted() override; virtual llvm::Value* codegen(codegen::Builder& builder) override; }; @@ -44,6 +47,7 @@ namespace AST { std::unique_ptr m_expr; public: ReturnStatement(std::unique_ptr expr) : m_expr{ std::move(expr) } {} + virtual ~ReturnStatement() override = default; virtual std::string formatted() override; virtual void codegen(codegen::Builder& builder) override; }; @@ -70,6 +74,7 @@ namespace AST { , m_name{ name } , m_statements{ std::move(statements) } { } + virtual ~Function() override = default; virtual std::string formatted() override; virtual void codegen(codegen::Builder& builder) override; }; @@ -83,6 +88,7 @@ namespace AST { FundamentalTypeKind m_ty; public: FundamentalType(FundamentalTypeKind kind) : m_ty{ kind } {} + virtual ~FundamentalType() override = default; virtual std::string formatted() override; virtual llvm::Type* codegen(codegen::Builder& builder) override; };