diff options
Diffstat (limited to 'Userland/Libraries/LibCpp/AST.h')
-rw-r--r-- | Userland/Libraries/LibCpp/AST.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/Userland/Libraries/LibCpp/AST.h b/Userland/Libraries/LibCpp/AST.h index 7bb9b36490..1505ef109b 100644 --- a/Userland/Libraries/LibCpp/AST.h +++ b/Userland/Libraries/LibCpp/AST.h @@ -308,6 +308,26 @@ private: Kind m_kind; }; +class FunctionType : public Type { +public: + virtual ~FunctionType() override = default; + virtual const char* class_name() const override { return "FunctionType"; } + virtual void dump(FILE* = stdout, size_t indent = 0) const override; + virtual String to_string() const override; + + FunctionType(ASTNode* parent, Optional<Position> start, Optional<Position> end, const String& filename) + : Type(parent, start, end, filename) + { + } + + void set_return_type(Type& type) { m_return_type = type; } + void set_parameters(NonnullRefPtrVector<Parameter> parameters) { m_parameters = move(parameters); } + +private: + RefPtr<Type> m_return_type; + NonnullRefPtrVector<Parameter> m_parameters; +}; + class FunctionDefinition : public ASTNode { public: virtual ~FunctionDefinition() override = default; |