aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/3rdparty/cplusplus/AST.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/3rdparty/cplusplus/AST.h')
-rw-r--r--src/libs/3rdparty/cplusplus/AST.h161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/libs/3rdparty/cplusplus/AST.h b/src/libs/3rdparty/cplusplus/AST.h
index 9aa81ccdf6..3f48e192b9 100644
--- a/src/libs/3rdparty/cplusplus/AST.h
+++ b/src/libs/3rdparty/cplusplus/AST.h
@@ -184,6 +184,7 @@ public:
virtual ArrayInitializerAST *asArrayInitializer() { return nullptr; }
virtual AsmDefinitionAST *asAsmDefinition() { return nullptr; }
virtual AttributeSpecifierAST *asAttributeSpecifier() { return nullptr; }
+ virtual AwaitExpressionAST *asAwaitExpression() { return nullptr; }
virtual BaseSpecifierAST *asBaseSpecifier() { return nullptr; }
virtual BinaryExpressionAST *asBinaryExpression() { return nullptr; }
virtual BoolLiteralAST *asBoolLiteral() { return nullptr; }
@@ -290,6 +291,7 @@ public:
virtual OperatorFunctionIdAST *asOperatorFunctionId() { return nullptr; }
virtual ParameterDeclarationAST *asParameterDeclaration() { return nullptr; }
virtual ParameterDeclarationClauseAST *asParameterDeclarationClause() { return nullptr; }
+ virtual PlaceholderTypeSpecifierAST *asPlaceholderTypeSpecifier() { return nullptr; }
virtual PointerAST *asPointer() { return nullptr; }
virtual PointerLiteralAST *asPointerLiteral() { return nullptr; }
virtual PointerToMemberAST *asPointerToMember() { return nullptr; }
@@ -322,6 +324,7 @@ public:
virtual StringLiteralAST *asStringLiteral() { return nullptr; }
virtual SwitchStatementAST *asSwitchStatement() { return nullptr; }
virtual TemplateDeclarationAST *asTemplateDeclaration() { return nullptr; }
+ virtual ConceptDeclarationAST *asConceptDeclaration() { return nullptr; }
virtual TemplateIdAST *asTemplateId() { return nullptr; }
virtual TemplateTypeParameterAST *asTemplateTypeParameter() { return nullptr; }
virtual ThisExpressionAST *asThisExpression() { return nullptr; }
@@ -329,6 +332,7 @@ public:
virtual TrailingReturnTypeAST *asTrailingReturnType() { return nullptr; }
virtual TranslationUnitAST *asTranslationUnit() { return nullptr; }
virtual TryBlockStatementAST *asTryBlockStatement() { return nullptr; }
+ virtual TypeConstraintAST *asTypeConstraint() { return nullptr; }
virtual TypeConstructorCallAST *asTypeConstructorCall() { return nullptr; }
virtual TypeIdAST *asTypeId() { return nullptr; }
virtual TypeidExpressionAST *asTypeidExpression() { return nullptr; }
@@ -336,9 +340,12 @@ public:
virtual TypenameTypeParameterAST *asTypenameTypeParameter() { return nullptr; }
virtual TypeofSpecifierAST *asTypeofSpecifier() { return nullptr; }
virtual UnaryExpressionAST *asUnaryExpression() { return nullptr; }
+ virtual RequiresExpressionAST *asRequiresExpression() { return nullptr; }
+ virtual RequiresClauseAST *asRequiresClause() { return nullptr; }
virtual UsingAST *asUsing() { return nullptr; }
virtual UsingDirectiveAST *asUsingDirective() { return nullptr; }
virtual WhileStatementAST *asWhileStatement() { return nullptr; }
+ virtual YieldExpressionAST *asYieldExpression() { return nullptr; }
protected:
virtual void accept0(ASTVisitor *visitor) = 0;
@@ -636,6 +643,49 @@ protected:
bool match0(AST *, ASTMatcher *) override;
};
+class CPLUSPLUS_EXPORT TypeConstraintAST: public AST
+{
+public:
+ NestedNameSpecifierListAST *nestedName = nullptr;
+ NameAST *conceptName = nullptr;
+ int lessToken = 0;
+ ExpressionListAST *templateArgs = nullptr;
+ int greaterToken = 0;
+
+ TypeConstraintAST *asTypeConstraint() override { return this; }
+
+ int firstToken() const override;
+ int lastToken() const override;
+
+ TypeConstraintAST *clone(MemoryPool *pool) const override;
+
+ void accept0(ASTVisitor *visitor) override;
+ bool match0(AST *, ASTMatcher *) override;
+};
+
+class CPLUSPLUS_EXPORT PlaceholderTypeSpecifierAST: public SpecifierAST
+{
+public:
+ TypeConstraintAST *typeConstraint = nullptr;
+ int declTypetoken = 0;
+ int lparenToken = 0;
+ int decltypeToken = 0;
+ int autoToken = 0;
+ int rparenToken = 0;
+
+public:
+ PlaceholderTypeSpecifierAST *asPlaceholderTypeSpecifier() override { return this; }
+
+ int firstToken() const override;
+ int lastToken() const override;
+
+ PlaceholderTypeSpecifierAST *clone(MemoryPool *pool) const override;
+
+protected:
+ void accept0(ASTVisitor *visitor) override;
+ bool match0(AST *, ASTMatcher *) override;
+};
+
class CPLUSPLUS_EXPORT DeclaratorAST: public AST
{
public:
@@ -646,6 +696,7 @@ public:
SpecifierListAST *post_attribute_list = nullptr;
int equal_token = 0;
ExpressionAST *initializer = nullptr;
+ RequiresClauseAST *requiresClause = nullptr;
public:
DeclaratorAST *asDeclarator() override { return this; }
@@ -1728,6 +1779,7 @@ public:
int if_token = 0;
int constexpr_token = 0;
int lparen_token = 0;
+ StatementAST *initStmt = nullptr;
ExpressionAST *condition = nullptr;
int rparen_token = 0;
StatementAST *statement = nullptr;
@@ -2716,6 +2768,7 @@ public:
int less_token = 0;
DeclarationListAST *template_parameter_list = nullptr;
int greater_token = 0;
+ RequiresClauseAST *requiresClause = nullptr;
DeclarationAST *declaration = nullptr;
public: // annotations
@@ -2734,6 +2787,29 @@ protected:
bool match0(AST *, ASTMatcher *) override;
};
+class CPLUSPLUS_EXPORT ConceptDeclarationAST: public DeclarationAST
+{
+public:
+ int concept_token = 0;
+ NameAST *name = nullptr;
+ SpecifierListAST *attributes = nullptr;
+ int equals_token = 0;
+ ExpressionAST *constraint = nullptr;
+ int semicolon_token = 0;
+
+public:
+ ConceptDeclarationAST *asConceptDeclaration() override { return this; }
+
+ int firstToken() const override { return concept_token; }
+ int lastToken() const override { return semicolon_token + 1; }
+
+ ConceptDeclarationAST *clone(MemoryPool *pool) const override;
+
+protected:
+ void accept0(ASTVisitor *visitor) override;
+ bool match0(AST *, ASTMatcher *) override;
+};
+
class CPLUSPLUS_EXPORT ThrowExpressionAST: public ExpressionAST
{
public:
@@ -2753,6 +2829,44 @@ protected:
bool match0(AST *, ASTMatcher *) override;
};
+class CPLUSPLUS_EXPORT YieldExpressionAST: public ExpressionAST
+{
+public:
+ int yield_token = 0;
+ ExpressionAST *expression = nullptr;
+
+public:
+ YieldExpressionAST *asYieldExpression() override { return this; }
+
+ int firstToken() const override { return yield_token; }
+ int lastToken() const override { return expression->lastToken(); }
+
+ YieldExpressionAST *clone(MemoryPool *pool) const override;
+
+protected:
+ void accept0(ASTVisitor *visitor) override;
+ bool match0(AST *, ASTMatcher *) override;
+};
+
+class CPLUSPLUS_EXPORT AwaitExpressionAST: public ExpressionAST
+{
+public:
+ int await_token = 0;
+ ExpressionAST *castExpression = nullptr;
+
+public:
+ AwaitExpressionAST *asAwaitExpression() override { return this; }
+
+ int firstToken() const override { return await_token; }
+ int lastToken() const override { return castExpression->lastToken(); }
+
+ AwaitExpressionAST *clone(MemoryPool *pool) const override;
+
+protected:
+ void accept0(ASTVisitor *visitor) override;
+ bool match0(AST *, ASTMatcher *) override;
+};
+
class CPLUSPLUS_EXPORT NoExceptOperatorExpressionAST: public ExpressionAST
{
public:
@@ -2883,6 +2997,7 @@ class CPLUSPLUS_EXPORT TemplateTypeParameterAST: public DeclarationAST
{
public:
int template_token = 0;
+ TypeConstraintAST *typeConstraint = nullptr;
int less_token = 0;
DeclarationListAST *template_parameter_list = nullptr;
int greater_token = 0;
@@ -2927,6 +3042,48 @@ protected:
bool match0(AST *, ASTMatcher *) override;
};
+class CPLUSPLUS_EXPORT RequiresExpressionAST: public ExpressionAST
+{
+public:
+ int requires_token = 0;
+ int lparen_token = 0;
+ ParameterDeclarationClauseAST *parameters = nullptr;
+ int rparen_token = 0;
+ int lbrace_token = 0;
+ int rbrace_token = 0;
+
+public:
+ RequiresExpressionAST *asRequiresExpression() override { return this; }
+
+ int firstToken() const override { return requires_token; }
+ int lastToken() const override { return rbrace_token + 1; }
+
+ RequiresExpressionAST *clone(MemoryPool *pool) const override;
+
+protected:
+ void accept0(ASTVisitor *visitor) override;
+ bool match0(AST *, ASTMatcher *) override;
+};
+
+class CPLUSPLUS_EXPORT RequiresClauseAST: public AST
+{
+public:
+ int requires_token = 0;
+ ExpressionAST *constraint = nullptr;
+
+public:
+ RequiresClauseAST *asRequiresClause() override { return this; }
+
+ int firstToken() const override { return requires_token; }
+ int lastToken() const override { return constraint->lastToken(); }
+
+ RequiresClauseAST *clone(MemoryPool *pool) const override;
+
+protected:
+ void accept0(ASTVisitor *visitor) override;
+ bool match0(AST *, ASTMatcher *) override;
+};
+
class CPLUSPLUS_EXPORT UsingAST: public DeclarationAST
{
public:
@@ -3522,6 +3679,9 @@ class LambdaExpressionAST: public ExpressionAST
{
public:
LambdaIntroducerAST *lambda_introducer = nullptr;
+ DeclarationListAST *templateParameters = nullptr;
+ RequiresClauseAST *requiresClause = nullptr;
+ SpecifierListAST *attributes = nullptr;
LambdaDeclaratorAST *lambda_declarator = nullptr;
StatementAST *statement = nullptr;
@@ -3602,6 +3762,7 @@ public:
int mutable_token = 0;
ExceptionSpecificationAST *exception_specification = nullptr;
TrailingReturnTypeAST *trailing_return_type = nullptr;
+ RequiresClauseAST *requiresClause = nullptr;
public: // annotations
Function *symbol = nullptr;