1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 05:57:45 +00:00

LibCpp: Parse basic constructors and destructors

This commit is contained in:
Itamar 2021-06-07 23:14:26 +03:00 committed by Andreas Kling
parent fd851ec5c9
commit 7de6c1489b
4 changed files with 185 additions and 5 deletions

View file

@ -146,6 +146,8 @@ public:
virtual const char* class_name() const override { return "FunctionDeclaration"; }
virtual void dump(FILE* = stdout, size_t indent = 0) const override;
virtual bool is_function() const override { return true; }
virtual bool is_constructor() const { return false; }
virtual bool is_destructor() const { return false; }
RefPtr<FunctionDefinition> definition() { return m_definition; }
FunctionDeclaration(ASTNode* parent, Optional<Position> start, Optional<Position> end, const String& filename)
@ -721,4 +723,31 @@ public:
virtual const char* class_name() const override { return "DummyAstNode"; }
virtual void dump(FILE* = stdout, size_t = 0) const override { }
};
class Constructor : public FunctionDeclaration {
public:
virtual ~Constructor() override = default;
virtual const char* class_name() const override { return "Constructor"; }
virtual void dump(FILE* = stdout, size_t indent = 0) const override;
virtual bool is_constructor() const override { return true; }
Constructor(ASTNode* parent, Optional<Position> start, Optional<Position> end, const String& filename)
: FunctionDeclaration(parent, start, end, filename)
{
}
};
class Destructor : public FunctionDeclaration {
public:
virtual ~Destructor() override = default;
virtual const char* class_name() const override { return "Destructor"; }
virtual void dump(FILE* = stdout, size_t indent = 0) const override;
virtual bool is_destructor() const override { return true; }
Destructor(ASTNode* parent, Optional<Position> start, Optional<Position> end, const String& filename)
: FunctionDeclaration(parent, start, end, filename)
{
}
};
}