diff --git a/packages/cxx-frontend/src/AST.ts b/packages/cxx-frontend/src/AST.ts index 9f3181ab..7e6a898f 100644 --- a/packages/cxx-frontend/src/AST.ts +++ b/packages/cxx-frontend/src/AST.ts @@ -8812,6 +8812,31 @@ export class ExternSpecifierAST extends SpecifierAST { } } +/** + * RegisterSpecifierAST node. + */ +export class RegisterSpecifierAST extends SpecifierAST { + /** + * Traverse this node using the given visitor. + * @param visitor the visitor. + * @param context the context. + * @returns the result of the visit. + */ + accept( + visitor: ASTVisitor, + context: Context, + ): Result { + return visitor.visitRegisterSpecifier(this, context); + } + + /** + * Returns the location of the register token in this node + */ + getRegisterToken(): Token | undefined { + return Token.from(cxx.getASTSlot(this.getHandle(), 0), this.parser); + } +} + /** * ThreadLocalSpecifierAST node. */ @@ -13043,6 +13068,7 @@ const AST_CONSTRUCTORS: Array< NoreturnSpecifierAST, StaticSpecifierAST, ExternSpecifierAST, + RegisterSpecifierAST, ThreadLocalSpecifierAST, ThreadSpecifierAST, MutableSpecifierAST, diff --git a/packages/cxx-frontend/src/ASTKind.ts b/packages/cxx-frontend/src/ASTKind.ts index aec2401d..d71e7a16 100644 --- a/packages/cxx-frontend/src/ASTKind.ts +++ b/packages/cxx-frontend/src/ASTKind.ts @@ -184,6 +184,7 @@ export enum ASTKind { NoreturnSpecifier, StaticSpecifier, ExternSpecifier, + RegisterSpecifier, ThreadLocalSpecifier, ThreadSpecifier, MutableSpecifier, diff --git a/packages/cxx-frontend/src/ASTSlot.ts b/packages/cxx-frontend/src/ASTSlot.ts index 7ba7e6ae..22984c6e 100644 --- a/packages/cxx-frontend/src/ASTSlot.ts +++ b/packages/cxx-frontend/src/ASTSlot.ts @@ -191,63 +191,64 @@ export enum ASTSlot { refLoc = 169, refOp = 170, refQualifierLoc = 171, - requirementList = 172, - requiresClause = 173, - requiresLoc = 174, - restrictLoc = 175, - returnLoc = 176, - rightExpression = 177, - rparen2Loc = 178, - rparenLoc = 179, - scopeLoc = 180, - secondColonLoc = 181, - semicolonLoc = 182, - sizeExpression = 183, - sizeofLoc = 184, - specifier = 185, - specifierLoc = 186, - splicer = 187, - starLoc = 188, - statement = 189, - statementList = 190, - staticAssertLoc = 191, - staticLoc = 192, - stringLiteral = 193, - stringliteralLoc = 194, - switchLoc = 195, - symbolicName = 196, - symbolicNameLoc = 197, - templateArgumentList = 198, - templateId = 199, - templateLoc = 200, - templateParameterList = 201, - templateRequiresClause = 202, - thisLoc = 203, - threadLoc = 204, - threadLocalLoc = 205, - throwLoc = 206, - tildeLoc = 207, - trailingReturnType = 208, - tryLoc = 209, - typeConstraint = 210, - typeId = 211, - typeIdList = 212, - typeLoc = 213, - typeSpecifier = 214, - typeSpecifierList = 215, - typeTraitLoc = 216, - typedefLoc = 217, - typeidLoc = 218, - typenameLoc = 219, - underlyingTypeLoc = 220, - unqualifiedId = 221, - usingDeclaratorList = 222, - usingLoc = 223, - vaArgLoc = 224, - virtualLoc = 225, - virtualOrAccessLoc = 226, - voidLoc = 227, - volatileLoc = 228, - whileLoc = 229, - yieldLoc = 230, + registerLoc = 172, + requirementList = 173, + requiresClause = 174, + requiresLoc = 175, + restrictLoc = 176, + returnLoc = 177, + rightExpression = 178, + rparen2Loc = 179, + rparenLoc = 180, + scopeLoc = 181, + secondColonLoc = 182, + semicolonLoc = 183, + sizeExpression = 184, + sizeofLoc = 185, + specifier = 186, + specifierLoc = 187, + splicer = 188, + starLoc = 189, + statement = 190, + statementList = 191, + staticAssertLoc = 192, + staticLoc = 193, + stringLiteral = 194, + stringliteralLoc = 195, + switchLoc = 196, + symbolicName = 197, + symbolicNameLoc = 198, + templateArgumentList = 199, + templateId = 200, + templateLoc = 201, + templateParameterList = 202, + templateRequiresClause = 203, + thisLoc = 204, + threadLoc = 205, + threadLocalLoc = 206, + throwLoc = 207, + tildeLoc = 208, + trailingReturnType = 209, + tryLoc = 210, + typeConstraint = 211, + typeId = 212, + typeIdList = 213, + typeLoc = 214, + typeSpecifier = 215, + typeSpecifierList = 216, + typeTraitLoc = 217, + typedefLoc = 218, + typeidLoc = 219, + typenameLoc = 220, + underlyingTypeLoc = 221, + unqualifiedId = 222, + usingDeclaratorList = 223, + usingLoc = 224, + vaArgLoc = 225, + virtualLoc = 226, + virtualOrAccessLoc = 227, + voidLoc = 228, + volatileLoc = 229, + whileLoc = 230, + yieldLoc = 231, } diff --git a/packages/cxx-frontend/src/ASTVisitor.ts b/packages/cxx-frontend/src/ASTVisitor.ts index 66872570..18765482 100644 --- a/packages/cxx-frontend/src/ASTVisitor.ts +++ b/packages/cxx-frontend/src/ASTVisitor.ts @@ -1789,6 +1789,18 @@ export abstract class ASTVisitor { context: Context, ): Result; + /** + * Visit RegisterSpecifier node. + * + * @param node The node to visit. + * @param context The context. + * @returns The result of the visit. + */ + abstract visitRegisterSpecifier( + node: ast.RegisterSpecifierAST, + context: Context, + ): Result; + /** * Visit ThreadLocalSpecifier node. * diff --git a/packages/cxx-frontend/src/RecursiveASTVisitor.ts b/packages/cxx-frontend/src/RecursiveASTVisitor.ts index 759ac885..d5c2c863 100644 --- a/packages/cxx-frontend/src/RecursiveASTVisitor.ts +++ b/packages/cxx-frontend/src/RecursiveASTVisitor.ts @@ -1953,6 +1953,17 @@ export class RecursiveASTVisitor extends ASTVisitor { */ visitExternSpecifier(node: ast.ExternSpecifierAST, context: Context): void {} + /** + * Visit a RegisterSpecifier node. + * + * @param node The node to visit. + * @param context The context. + */ + visitRegisterSpecifier( + node: ast.RegisterSpecifierAST, + context: Context, + ): void {} + /** * Visit a ThreadLocalSpecifier node. * diff --git a/src/mlir/cxx/mlir/codegen.cc b/src/mlir/cxx/mlir/codegen.cc index 5776a484..77780962 100644 --- a/src/mlir/cxx/mlir/codegen.cc +++ b/src/mlir/cxx/mlir/codegen.cc @@ -338,6 +338,8 @@ struct Codegen::SpecifierVisitor { [[nodiscard]] auto operator()(ExternSpecifierAST* ast) -> SpecifierResult; + [[nodiscard]] auto operator()(RegisterSpecifierAST* ast) -> SpecifierResult; + [[nodiscard]] auto operator()(ThreadLocalSpecifierAST* ast) -> SpecifierResult; @@ -2264,6 +2266,11 @@ auto Codegen::SpecifierVisitor::operator()(ExternSpecifierAST* ast) return {}; } +auto Codegen::SpecifierVisitor::operator()(RegisterSpecifierAST* ast) + -> SpecifierResult { + return {}; +} + auto Codegen::SpecifierVisitor::operator()(ThreadLocalSpecifierAST* ast) -> SpecifierResult { return {}; diff --git a/src/parser/cxx/ast.cc b/src/parser/cxx/ast.cc index d51305b4..f157485b 100644 --- a/src/parser/cxx/ast.cc +++ b/src/parser/cxx/ast.cc @@ -2326,6 +2326,16 @@ auto ExternSpecifierAST::lastSourceLocation() -> SourceLocation { return {}; } +auto RegisterSpecifierAST::firstSourceLocation() -> SourceLocation { + if (auto loc = cxx::firstSourceLocation(registerLoc)) return loc; + return {}; +} + +auto RegisterSpecifierAST::lastSourceLocation() -> SourceLocation { + if (auto loc = cxx::lastSourceLocation(registerLoc)) return loc; + return {}; +} + auto ThreadLocalSpecifierAST::firstSourceLocation() -> SourceLocation { if (auto loc = cxx::firstSourceLocation(threadLocalLoc)) return loc; return {}; @@ -3620,6 +3630,7 @@ std::string_view kASTKindNames[] = { "noreturn-specifier", "static-specifier", "extern-specifier", + "register-specifier", "thread-local-specifier", "thread-specifier", "mutable-specifier", diff --git a/src/parser/cxx/ast.fbs b/src/parser/cxx/ast.fbs index 20a73805..c8ef97ae 100644 --- a/src/parser/cxx/ast.fbs +++ b/src/parser/cxx/ast.fbs @@ -244,6 +244,7 @@ union Specifier { NoreturnSpecifier, StaticSpecifier, ExternSpecifier, + RegisterSpecifier, ThreadLocalSpecifier, ThreadSpecifier, MutableSpecifier, @@ -1458,6 +1459,10 @@ table ExternSpecifier /* SpecifierAST */ { extern_loc: uint32; } +table RegisterSpecifier /* SpecifierAST */ { + register_loc: uint32; +} + table ThreadLocalSpecifier /* SpecifierAST */ { thread_local_loc: uint32; } diff --git a/src/parser/cxx/ast.h b/src/parser/cxx/ast.h index dcf72d1a..0f756a93 100644 --- a/src/parser/cxx/ast.h +++ b/src/parser/cxx/ast.h @@ -2860,6 +2860,20 @@ class ExternSpecifierAST final : public SpecifierAST { auto lastSourceLocation() -> SourceLocation override; }; +class RegisterSpecifierAST final : public SpecifierAST { + public: + static constexpr ASTKind Kind = ASTKind::RegisterSpecifier; + + RegisterSpecifierAST() : SpecifierAST(Kind) {} + + SourceLocation registerLoc; + + void accept(ASTVisitor* visitor) override { visitor->visit(this); } + + auto firstSourceLocation() -> SourceLocation override; + auto lastSourceLocation() -> SourceLocation override; +}; + class ThreadLocalSpecifierAST final : public SpecifierAST { public: static constexpr ASTKind Kind = ASTKind::ThreadLocalSpecifier; @@ -4791,6 +4805,9 @@ auto visit(Visitor&& visitor, SpecifierAST* ast) { case ExternSpecifierAST::Kind: return std::invoke(std::forward(visitor), static_cast(ast)); + case RegisterSpecifierAST::Kind: + return std::invoke(std::forward(visitor), + static_cast(ast)); case ThreadLocalSpecifierAST::Kind: return std::invoke(std::forward(visitor), static_cast(ast)); @@ -4891,6 +4908,7 @@ template <> case NoreturnSpecifierAST::Kind: case StaticSpecifierAST::Kind: case ExternSpecifierAST::Kind: + case RegisterSpecifierAST::Kind: case ThreadLocalSpecifierAST::Kind: case ThreadSpecifierAST::Kind: case MutableSpecifierAST::Kind: diff --git a/src/parser/cxx/ast_fwd.h b/src/parser/cxx/ast_fwd.h index 66fd3aaf..a04e6d12 100644 --- a/src/parser/cxx/ast_fwd.h +++ b/src/parser/cxx/ast_fwd.h @@ -243,6 +243,7 @@ class InlineSpecifierAST; class NoreturnSpecifierAST; class StaticSpecifierAST; class ExternSpecifierAST; +class RegisterSpecifierAST; class ThreadLocalSpecifierAST; class ThreadSpecifierAST; class MutableSpecifierAST; diff --git a/src/parser/cxx/ast_interpreter.cc b/src/parser/cxx/ast_interpreter.cc index a6f9f022..a12246b5 100644 --- a/src/parser/cxx/ast_interpreter.cc +++ b/src/parser/cxx/ast_interpreter.cc @@ -463,6 +463,8 @@ struct ASTInterpreter::SpecifierVisitor { [[nodiscard]] auto operator()(ExternSpecifierAST* ast) -> SpecifierResult; + [[nodiscard]] auto operator()(RegisterSpecifierAST* ast) -> SpecifierResult; + [[nodiscard]] auto operator()(ThreadLocalSpecifierAST* ast) -> SpecifierResult; @@ -2576,6 +2578,11 @@ auto ASTInterpreter::SpecifierVisitor::operator()(ExternSpecifierAST* ast) return {}; } +auto ASTInterpreter::SpecifierVisitor::operator()(RegisterSpecifierAST* ast) + -> SpecifierResult { + return {}; +} + auto ASTInterpreter::SpecifierVisitor::operator()(ThreadLocalSpecifierAST* ast) -> SpecifierResult { return {}; diff --git a/src/parser/cxx/ast_kind.h b/src/parser/cxx/ast_kind.h index de269f32..b111f855 100644 --- a/src/parser/cxx/ast_kind.h +++ b/src/parser/cxx/ast_kind.h @@ -189,6 +189,7 @@ enum class ASTKind { NoreturnSpecifier, StaticSpecifier, ExternSpecifier, + RegisterSpecifier, ThreadLocalSpecifier, ThreadSpecifier, MutableSpecifier, diff --git a/src/parser/cxx/ast_pretty_printer.cc b/src/parser/cxx/ast_pretty_printer.cc index 8bc3c64f..7b6b42ec 100644 --- a/src/parser/cxx/ast_pretty_printer.cc +++ b/src/parser/cxx/ast_pretty_printer.cc @@ -374,6 +374,8 @@ struct ASTPrettyPrinter::SpecifierVisitor { void operator()(ExternSpecifierAST* ast); + void operator()(RegisterSpecifierAST* ast); + void operator()(ThreadLocalSpecifierAST* ast); void operator()(ThreadSpecifierAST* ast); @@ -3261,6 +3263,12 @@ void ASTPrettyPrinter::SpecifierVisitor::operator()(ExternSpecifierAST* ast) { } } +void ASTPrettyPrinter::SpecifierVisitor::operator()(RegisterSpecifierAST* ast) { + if (ast->registerLoc) { + accept.writeToken(ast->registerLoc); + } +} + void ASTPrettyPrinter::SpecifierVisitor::operator()( ThreadLocalSpecifierAST* ast) { if (ast->threadLocalLoc) { diff --git a/src/parser/cxx/ast_printer.cc b/src/parser/cxx/ast_printer.cc index 5ae8c336..68874094 100644 --- a/src/parser/cxx/ast_printer.cc +++ b/src/parser/cxx/ast_printer.cc @@ -1983,6 +1983,10 @@ void ASTPrinter::visit(ExternSpecifierAST* ast) { out_ << std::format("{}\n", "extern-specifier"); } +void ASTPrinter::visit(RegisterSpecifierAST* ast) { + out_ << std::format("{}\n", "register-specifier"); +} + void ASTPrinter::visit(ThreadLocalSpecifierAST* ast) { out_ << std::format("{}\n", "thread-local-specifier"); } diff --git a/src/parser/cxx/ast_printer.h b/src/parser/cxx/ast_printer.h index 320a47f0..c3110677 100644 --- a/src/parser/cxx/ast_printer.h +++ b/src/parser/cxx/ast_printer.h @@ -199,6 +199,7 @@ class ASTPrinter : ASTVisitor { void visit(NoreturnSpecifierAST* ast) override; void visit(StaticSpecifierAST* ast) override; void visit(ExternSpecifierAST* ast) override; + void visit(RegisterSpecifierAST* ast) override; void visit(ThreadLocalSpecifierAST* ast) override; void visit(ThreadSpecifierAST* ast) override; void visit(MutableSpecifierAST* ast) override; diff --git a/src/parser/cxx/ast_rewriter.cc b/src/parser/cxx/ast_rewriter.cc index 4955f5b4..595b22b5 100644 --- a/src/parser/cxx/ast_rewriter.cc +++ b/src/parser/cxx/ast_rewriter.cc @@ -452,6 +452,8 @@ struct ASTRewriter::SpecifierVisitor { [[nodiscard]] auto operator()(ExternSpecifierAST* ast) -> SpecifierAST*; + [[nodiscard]] auto operator()(RegisterSpecifierAST* ast) -> SpecifierAST*; + [[nodiscard]] auto operator()(ThreadLocalSpecifierAST* ast) -> SpecifierAST*; [[nodiscard]] auto operator()(ThreadSpecifierAST* ast) -> SpecifierAST*; @@ -3528,6 +3530,15 @@ auto ASTRewriter::SpecifierVisitor::operator()(ExternSpecifierAST* ast) return copy; } +auto ASTRewriter::SpecifierVisitor::operator()(RegisterSpecifierAST* ast) + -> SpecifierAST* { + auto copy = make_node(arena()); + + copy->registerLoc = ast->registerLoc; + + return copy; +} + auto ASTRewriter::SpecifierVisitor::operator()(ThreadLocalSpecifierAST* ast) -> SpecifierAST* { auto copy = make_node(arena()); diff --git a/src/parser/cxx/ast_slot.cc b/src/parser/cxx/ast_slot.cc index 6abd368a..7c89aca5 100644 --- a/src/parser/cxx/ast_slot.cc +++ b/src/parser/cxx/ast_slot.cc @@ -221,6 +221,7 @@ std::string_view kMemberSlotNames[] = { "refLoc", "refOp", "refQualifierLoc", + "registerLoc", "requirementList", "requiresClause", "requiresLoc", @@ -345,12 +346,12 @@ void ASTSlot::visit(SimpleDeclarationAST* ast) { case 3: // requiresClause value_ = reinterpret_cast(ast->requiresClause); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{173}; + slotNameIndex_ = SlotNameIndex{174}; break; case 4: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -407,12 +408,12 @@ void ASTSlot::visit(AsmDeclarationAST* ast) { case 9: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 10: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 11: // literal value_ = reinterpret_cast(ast->literal); @@ -449,12 +450,12 @@ void ASTSlot::visit(NamespaceAliasDefinitionAST* ast) { case 4: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 5: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 6: // identifier value_ = reinterpret_cast(ast->identifier); @@ -471,17 +472,17 @@ void ASTSlot::visit(UsingDeclarationAST* ast) { case 0: // usingLoc value_ = ast->usingLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{223}; + slotNameIndex_ = SlotNameIndex{224}; break; case 1: // usingDeclaratorList value_ = reinterpret_cast(ast->usingDeclaratorList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{222}; + slotNameIndex_ = SlotNameIndex{223}; break; case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -493,7 +494,7 @@ void ASTSlot::visit(UsingEnumDeclarationAST* ast) { case 0: // usingLoc value_ = ast->usingLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{223}; + slotNameIndex_ = SlotNameIndex{224}; break; case 1: // enumTypeSpecifier value_ = reinterpret_cast(ast->enumTypeSpecifier); @@ -503,7 +504,7 @@ void ASTSlot::visit(UsingEnumDeclarationAST* ast) { case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -520,7 +521,7 @@ void ASTSlot::visit(UsingDirectiveAST* ast) { case 1: // usingLoc value_ = ast->usingLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{223}; + slotNameIndex_ = SlotNameIndex{224}; break; case 2: // namespaceLoc value_ = ast->namespaceLoc.index(); @@ -535,12 +536,12 @@ void ASTSlot::visit(UsingDirectiveAST* ast) { case 4: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 5: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -552,7 +553,7 @@ void ASTSlot::visit(StaticAssertDeclarationAST* ast) { case 0: // staticAssertLoc value_ = ast->staticAssertLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{191}; + slotNameIndex_ = SlotNameIndex{192}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -582,12 +583,12 @@ void ASTSlot::visit(StaticAssertDeclarationAST* ast) { case 6: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 7: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -599,7 +600,7 @@ void ASTSlot::visit(AliasDeclarationAST* ast) { case 0: // usingLoc value_ = ast->usingLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{223}; + slotNameIndex_ = SlotNameIndex{224}; break; case 1: // identifierLoc value_ = ast->identifierLoc.index(); @@ -624,12 +625,12 @@ void ASTSlot::visit(AliasDeclarationAST* ast) { case 5: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 6: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 7: // identifier value_ = reinterpret_cast(ast->identifier); @@ -666,7 +667,7 @@ void ASTSlot::visit(OpaqueEnumDeclarationAST* ast) { case 4: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 5: // colonLoc value_ = ast->colonLoc.index(); @@ -676,7 +677,7 @@ void ASTSlot::visit(OpaqueEnumDeclarationAST* ast) { case 6: // typeSpecifierList value_ = reinterpret_cast(ast->typeSpecifierList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{215}; + slotNameIndex_ = SlotNameIndex{216}; break; case 7: // emicolonLoc value_ = ast->emicolonLoc.index(); @@ -708,7 +709,7 @@ void ASTSlot::visit(FunctionDefinitionAST* ast) { case 3: // requiresClause value_ = reinterpret_cast(ast->requiresClause); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{173}; + slotNameIndex_ = SlotNameIndex{174}; break; case 4: // functionBody value_ = reinterpret_cast(ast->functionBody); @@ -725,7 +726,7 @@ void ASTSlot::visit(TemplateDeclarationAST* ast) { case 0: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 1: // lessLoc value_ = ast->lessLoc.index(); @@ -735,7 +736,7 @@ void ASTSlot::visit(TemplateDeclarationAST* ast) { case 2: // templateParameterList value_ = reinterpret_cast(ast->templateParameterList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{201}; + slotNameIndex_ = SlotNameIndex{202}; break; case 3: // greaterLoc value_ = ast->greaterLoc.index(); @@ -745,7 +746,7 @@ void ASTSlot::visit(TemplateDeclarationAST* ast) { case 4: // requiresClause value_ = reinterpret_cast(ast->requiresClause); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{173}; + slotNameIndex_ = SlotNameIndex{174}; break; case 5: // declaration value_ = reinterpret_cast(ast->declaration); @@ -782,7 +783,7 @@ void ASTSlot::visit(ConceptDefinitionAST* ast) { case 4: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 5: // identifier value_ = reinterpret_cast(ast->identifier); @@ -819,7 +820,7 @@ void ASTSlot::visit(DeductionGuideAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // arrowLoc value_ = ast->arrowLoc.index(); @@ -829,12 +830,12 @@ void ASTSlot::visit(DeductionGuideAST* ast) { case 6: // templateId value_ = reinterpret_cast(ast->templateId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{199}; + slotNameIndex_ = SlotNameIndex{200}; break; case 7: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 8: // identifier value_ = reinterpret_cast(ast->identifier); @@ -856,7 +857,7 @@ void ASTSlot::visit(ExplicitInstantiationAST* ast) { case 1: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 2: // declaration value_ = reinterpret_cast(ast->declaration); @@ -922,7 +923,7 @@ void ASTSlot::visit(LinkageSpecificationAST* ast) { case 1: // stringliteralLoc value_ = ast->stringliteralLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{194}; + slotNameIndex_ = SlotNameIndex{195}; break; case 2: // lbraceLoc value_ = ast->lbraceLoc.index(); @@ -942,7 +943,7 @@ void ASTSlot::visit(LinkageSpecificationAST* ast) { case 5: // stringLiteral value_ = reinterpret_cast(ast->stringLiteral); slotKind_ = ASTSlotKind::kLiteralAttribute; - slotNameIndex_ = SlotNameIndex{193}; + slotNameIndex_ = SlotNameIndex{194}; break; } // switch @@ -1017,7 +1018,7 @@ void ASTSlot::visit(EmptyDeclarationAST* ast) { case 0: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1034,7 +1035,7 @@ void ASTSlot::visit(AttributeDeclarationAST* ast) { case 1: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1061,7 +1062,7 @@ void ASTSlot::visit(ModuleImportDeclarationAST* ast) { case 3: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1078,12 +1079,12 @@ void ASTSlot::visit(ParameterDeclarationAST* ast) { case 1: // thisLoc value_ = ast->thisLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{203}; + slotNameIndex_ = SlotNameIndex{204}; break; case 2: // typeSpecifierList value_ = reinterpret_cast(ast->typeSpecifierList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{215}; + slotNameIndex_ = SlotNameIndex{216}; break; case 3: // declarator value_ = reinterpret_cast(ast->declarator); @@ -1184,7 +1185,7 @@ void ASTSlot::visit(StructuredBindingDeclarationAST* ast) { case 7: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1201,7 +1202,7 @@ void ASTSlot::visit(AsmOperandAST* ast) { case 1: // symbolicNameLoc value_ = ast->symbolicNameLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{197}; + slotNameIndex_ = SlotNameIndex{198}; break; case 2: // rbracketLoc value_ = ast->rbracketLoc.index(); @@ -1226,12 +1227,12 @@ void ASTSlot::visit(AsmOperandAST* ast) { case 6: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 7: // symbolicName value_ = reinterpret_cast(ast->symbolicName); slotKind_ = ASTSlotKind::kIdentifierAttribute; - slotNameIndex_ = SlotNameIndex{196}; + slotNameIndex_ = SlotNameIndex{197}; break; case 8: // constraintLiteral value_ = reinterpret_cast(ast->constraintLiteral); @@ -1365,7 +1366,7 @@ void ASTSlot::visit(ExpressionStatementAST* ast) { case 1: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1382,7 +1383,7 @@ void ASTSlot::visit(CompoundStatementAST* ast) { case 1: // statementList value_ = reinterpret_cast(ast->statementList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{190}; + slotNameIndex_ = SlotNameIndex{191}; break; case 2: // rbraceLoc value_ = ast->rbraceLoc.index(); @@ -1424,12 +1425,12 @@ void ASTSlot::visit(IfStatementAST* ast) { case 5: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 6: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; case 7: // elseLoc value_ = ast->elseLoc.index(); @@ -1466,7 +1467,7 @@ void ASTSlot::visit(ConstevalIfStatementAST* ast) { case 3: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; case 4: // elseLoc value_ = ast->elseLoc.index(); @@ -1493,7 +1494,7 @@ void ASTSlot::visit(SwitchStatementAST* ast) { case 0: // switchLoc value_ = ast->switchLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{195}; + slotNameIndex_ = SlotNameIndex{196}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -1513,12 +1514,12 @@ void ASTSlot::visit(SwitchStatementAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; } // switch @@ -1530,7 +1531,7 @@ void ASTSlot::visit(WhileStatementAST* ast) { case 0: // whileLoc value_ = ast->whileLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{229}; + slotNameIndex_ = SlotNameIndex{230}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -1545,12 +1546,12 @@ void ASTSlot::visit(WhileStatementAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 4: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; } // switch @@ -1567,12 +1568,12 @@ void ASTSlot::visit(DoStatementAST* ast) { case 1: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; case 2: // whileLoc value_ = ast->whileLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{229}; + slotNameIndex_ = SlotNameIndex{230}; break; case 3: // lparenLoc value_ = ast->lparenLoc.index(); @@ -1587,12 +1588,12 @@ void ASTSlot::visit(DoStatementAST* ast) { case 5: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 6: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1634,12 +1635,12 @@ void ASTSlot::visit(ForRangeStatementAST* ast) { case 6: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 7: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; } // switch @@ -1671,7 +1672,7 @@ void ASTSlot::visit(ForStatementAST* ast) { case 4: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 5: // expression value_ = reinterpret_cast(ast->expression); @@ -1681,12 +1682,12 @@ void ASTSlot::visit(ForStatementAST* ast) { case 6: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 7: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; } // switch @@ -1703,7 +1704,7 @@ void ASTSlot::visit(BreakStatementAST* ast) { case 1: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1720,7 +1721,7 @@ void ASTSlot::visit(ContinueStatementAST* ast) { case 1: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1732,7 +1733,7 @@ void ASTSlot::visit(ReturnStatementAST* ast) { case 0: // returnLoc value_ = ast->returnLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{176}; + slotNameIndex_ = SlotNameIndex{177}; break; case 1: // expression value_ = reinterpret_cast(ast->expression); @@ -1742,7 +1743,7 @@ void ASTSlot::visit(ReturnStatementAST* ast) { case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1764,7 +1765,7 @@ void ASTSlot::visit(CoroutineReturnStatementAST* ast) { case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -1786,7 +1787,7 @@ void ASTSlot::visit(GotoStatementAST* ast) { case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 3: // identifier value_ = reinterpret_cast(ast->identifier); @@ -1815,12 +1816,12 @@ void ASTSlot::visit(TryBlockStatementAST* ast) { case 0: // tryLoc value_ = ast->tryLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{209}; + slotNameIndex_ = SlotNameIndex{210}; break; case 1: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; case 2: // handlerList value_ = reinterpret_cast(ast->handlerList); @@ -1968,7 +1969,7 @@ void ASTSlot::visit(ThisExpressionAST* ast) { case 0: // thisLoc value_ = ast->thisLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{203}; + slotNameIndex_ = SlotNameIndex{204}; break; } // switch @@ -1985,12 +1986,12 @@ void ASTSlot::visit(NestedStatementExpressionAST* ast) { case 1: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2012,7 +2013,7 @@ void ASTSlot::visit(NestedExpressionAST* ast) { case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2029,12 +2030,12 @@ void ASTSlot::visit(IdExpressionAST* ast) { case 1: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 2: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 3: // isTemplateIntroduced value_ = std::intptr_t(ast->isTemplateIntroduced != 0); @@ -2076,7 +2077,7 @@ void ASTSlot::visit(LambdaExpressionAST* ast) { case 5: // templateParameterList value_ = reinterpret_cast(ast->templateParameterList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{201}; + slotNameIndex_ = SlotNameIndex{202}; break; case 6: // greaterLoc value_ = ast->greaterLoc.index(); @@ -2086,7 +2087,7 @@ void ASTSlot::visit(LambdaExpressionAST* ast) { case 7: // templateRequiresClause value_ = reinterpret_cast(ast->templateRequiresClause); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{202}; + slotNameIndex_ = SlotNameIndex{203}; break; case 8: // lparenLoc value_ = ast->lparenLoc.index(); @@ -2101,7 +2102,7 @@ void ASTSlot::visit(LambdaExpressionAST* ast) { case 10: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 11: // gnuAtributeList value_ = reinterpret_cast(ast->gnuAtributeList); @@ -2126,17 +2127,17 @@ void ASTSlot::visit(LambdaExpressionAST* ast) { case 15: // trailingReturnType value_ = reinterpret_cast(ast->trailingReturnType); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{208}; + slotNameIndex_ = SlotNameIndex{209}; break; case 16: // requiresClause value_ = reinterpret_cast(ast->requiresClause); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{173}; + slotNameIndex_ = SlotNameIndex{174}; break; case 17: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; case 18: // captureDefault value_ = std::intptr_t(ast->captureDefault); @@ -2178,12 +2179,12 @@ void ASTSlot::visit(FoldExpressionAST* ast) { case 5: // rightExpression value_ = reinterpret_cast(ast->rightExpression); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{177}; + slotNameIndex_ = SlotNameIndex{178}; break; case 6: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 7: // op value_ = std::intptr_t(ast->op); @@ -2225,7 +2226,7 @@ void ASTSlot::visit(RightFoldExpressionAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // op value_ = std::intptr_t(ast->op); @@ -2262,7 +2263,7 @@ void ASTSlot::visit(LeftFoldExpressionAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // op value_ = std::intptr_t(ast->op); @@ -2279,7 +2280,7 @@ void ASTSlot::visit(RequiresExpressionAST* ast) { case 0: // requiresLoc value_ = ast->requiresLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{174}; + slotNameIndex_ = SlotNameIndex{175}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -2294,7 +2295,7 @@ void ASTSlot::visit(RequiresExpressionAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 4: // lbraceLoc value_ = ast->lbraceLoc.index(); @@ -2304,7 +2305,7 @@ void ASTSlot::visit(RequiresExpressionAST* ast) { case 5: // requirementList value_ = reinterpret_cast(ast->requirementList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{172}; + slotNameIndex_ = SlotNameIndex{173}; break; case 6: // rbraceLoc value_ = ast->rbraceLoc.index(); @@ -2321,7 +2322,7 @@ void ASTSlot::visit(VaArgExpressionAST* ast) { case 0: // vaArgLoc value_ = ast->vaArgLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{224}; + slotNameIndex_ = SlotNameIndex{225}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -2341,12 +2342,12 @@ void ASTSlot::visit(VaArgExpressionAST* ast) { case 4: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 5: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2400,7 +2401,7 @@ void ASTSlot::visit(CallExpressionAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2412,7 +2413,7 @@ void ASTSlot::visit(TypeConstructionAST* ast) { case 0: // typeSpecifier value_ = reinterpret_cast(ast->typeSpecifier); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{214}; + slotNameIndex_ = SlotNameIndex{215}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -2427,7 +2428,7 @@ void ASTSlot::visit(TypeConstructionAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2439,7 +2440,7 @@ void ASTSlot::visit(BracedTypeConstructionAST* ast) { case 0: // typeSpecifier value_ = reinterpret_cast(ast->typeSpecifier); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{214}; + slotNameIndex_ = SlotNameIndex{215}; break; case 1: // bracedInitList value_ = reinterpret_cast(ast->bracedInitList); @@ -2466,12 +2467,12 @@ void ASTSlot::visit(SpliceMemberExpressionAST* ast) { case 2: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 3: // splicer value_ = reinterpret_cast(ast->splicer); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{187}; + slotNameIndex_ = SlotNameIndex{188}; break; case 4: // accessOp value_ = std::intptr_t(ast->accessOp); @@ -2508,12 +2509,12 @@ void ASTSlot::visit(MemberExpressionAST* ast) { case 3: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 4: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 5: // accessOp value_ = std::intptr_t(ast->accessOp); @@ -2567,7 +2568,7 @@ void ASTSlot::visit(CppCastExpressionAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // greaterLoc value_ = ast->greaterLoc.index(); @@ -2587,7 +2588,7 @@ void ASTSlot::visit(CppCastExpressionAST* ast) { case 6: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2609,7 +2610,7 @@ void ASTSlot::visit(BuiltinBitCastExpressionAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // commaLoc value_ = ast->commaLoc.index(); @@ -2624,7 +2625,7 @@ void ASTSlot::visit(BuiltinBitCastExpressionAST* ast) { case 5: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2646,7 +2647,7 @@ void ASTSlot::visit(BuiltinOffsetofExpressionAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // commaLoc value_ = ast->commaLoc.index(); @@ -2661,7 +2662,7 @@ void ASTSlot::visit(BuiltinOffsetofExpressionAST* ast) { case 5: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2673,7 +2674,7 @@ void ASTSlot::visit(TypeidExpressionAST* ast) { case 0: // typeidLoc value_ = ast->typeidLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{218}; + slotNameIndex_ = SlotNameIndex{219}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -2688,7 +2689,7 @@ void ASTSlot::visit(TypeidExpressionAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2700,7 +2701,7 @@ void ASTSlot::visit(TypeidOfTypeExpressionAST* ast) { case 0: // typeidLoc value_ = ast->typeidLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{218}; + slotNameIndex_ = SlotNameIndex{219}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -2710,12 +2711,12 @@ void ASTSlot::visit(TypeidOfTypeExpressionAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2727,7 +2728,7 @@ void ASTSlot::visit(SpliceExpressionAST* ast) { case 0: // splicer value_ = reinterpret_cast(ast->splicer); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{187}; + slotNameIndex_ = SlotNameIndex{188}; break; } // switch @@ -2744,7 +2745,7 @@ void ASTSlot::visit(GlobalScopeReflectExpressionAST* ast) { case 1: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; } // switch @@ -2783,7 +2784,7 @@ void ASTSlot::visit(TypeIdReflectExpressionAST* ast) { case 1: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; } // switch @@ -2851,7 +2852,7 @@ void ASTSlot::visit(SizeofExpressionAST* ast) { case 0: // sizeofLoc value_ = ast->sizeofLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{184}; + slotNameIndex_ = SlotNameIndex{185}; break; case 1: // expression value_ = reinterpret_cast(ast->expression); @@ -2868,7 +2869,7 @@ void ASTSlot::visit(SizeofTypeExpressionAST* ast) { case 0: // sizeofLoc value_ = ast->sizeofLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{184}; + slotNameIndex_ = SlotNameIndex{185}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -2878,12 +2879,12 @@ void ASTSlot::visit(SizeofTypeExpressionAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2895,7 +2896,7 @@ void ASTSlot::visit(SizeofPackExpressionAST* ast) { case 0: // sizeofLoc value_ = ast->sizeofLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{184}; + slotNameIndex_ = SlotNameIndex{185}; break; case 1: // ellipsisLoc value_ = ast->ellipsisLoc.index(); @@ -2915,7 +2916,7 @@ void ASTSlot::visit(SizeofPackExpressionAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // identifier value_ = reinterpret_cast(ast->identifier); @@ -2942,12 +2943,12 @@ void ASTSlot::visit(AlignofTypeExpressionAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -2991,7 +2992,7 @@ void ASTSlot::visit(NoexceptExpressionAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -3003,7 +3004,7 @@ void ASTSlot::visit(NewExpressionAST* ast) { case 0: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; case 1: // newLoc value_ = ast->newLoc.index(); @@ -3023,7 +3024,7 @@ void ASTSlot::visit(NewExpressionAST* ast) { case 4: // typeSpecifierList value_ = reinterpret_cast(ast->typeSpecifierList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{215}; + slotNameIndex_ = SlotNameIndex{216}; break; case 5: // declarator value_ = reinterpret_cast(ast->declarator); @@ -3033,7 +3034,7 @@ void ASTSlot::visit(NewExpressionAST* ast) { case 6: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 7: // newInitalizer value_ = reinterpret_cast(ast->newInitalizer); @@ -3050,7 +3051,7 @@ void ASTSlot::visit(DeleteExpressionAST* ast) { case 0: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; case 1: // deleteLoc value_ = ast->deleteLoc.index(); @@ -3087,12 +3088,12 @@ void ASTSlot::visit(CastExpressionAST* ast) { case 1: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 3: // expression value_ = reinterpret_cast(ast->expression); @@ -3131,7 +3132,7 @@ void ASTSlot::visit(BinaryExpressionAST* ast) { case 2: // rightExpression value_ = reinterpret_cast(ast->rightExpression); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{177}; + slotNameIndex_ = SlotNameIndex{178}; break; case 3: // op value_ = std::intptr_t(ast->op); @@ -3180,7 +3181,7 @@ void ASTSlot::visit(YieldExpressionAST* ast) { case 0: // yieldLoc value_ = ast->yieldLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{230}; + slotNameIndex_ = SlotNameIndex{231}; break; case 1: // expression value_ = reinterpret_cast(ast->expression); @@ -3197,7 +3198,7 @@ void ASTSlot::visit(ThrowExpressionAST* ast) { case 0: // throwLoc value_ = ast->throwLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{206}; + slotNameIndex_ = SlotNameIndex{207}; break; case 1: // expression value_ = reinterpret_cast(ast->expression); @@ -3224,7 +3225,7 @@ void ASTSlot::visit(AssignmentExpressionAST* ast) { case 2: // rightExpression value_ = reinterpret_cast(ast->rightExpression); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{177}; + slotNameIndex_ = SlotNameIndex{178}; break; case 3: // op value_ = std::intptr_t(ast->op); @@ -3275,7 +3276,7 @@ void ASTSlot::visit(TypeTraitExpressionAST* ast) { case 0: // typeTraitLoc value_ = ast->typeTraitLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{216}; + slotNameIndex_ = SlotNameIndex{217}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -3285,12 +3286,12 @@ void ASTSlot::visit(TypeTraitExpressionAST* ast) { case 2: // typeIdList value_ = reinterpret_cast(ast->typeIdList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{212}; + slotNameIndex_ = SlotNameIndex{213}; break; case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -3383,7 +3384,7 @@ void ASTSlot::visit(ParenInitializerAST* ast) { case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -3459,7 +3460,7 @@ void ASTSlot::visit(SplicerAST* ast) { case 4: // secondColonLoc value_ = ast->secondColonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{181}; + slotNameIndex_ = SlotNameIndex{182}; break; case 5: // rbracketLoc value_ = ast->rbracketLoc.index(); @@ -3481,7 +3482,7 @@ void ASTSlot::visit(GlobalModuleFragmentAST* ast) { case 1: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 2: // declarationList value_ = reinterpret_cast(ast->declarationList); @@ -3513,7 +3514,7 @@ void ASTSlot::visit(PrivateModuleFragmentAST* ast) { case 3: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 4: // declarationList value_ = reinterpret_cast(ast->declarationList); @@ -3555,7 +3556,7 @@ void ASTSlot::visit(ModuleDeclarationAST* ast) { case 5: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -3660,7 +3661,7 @@ void ASTSlot::visit(InitDeclaratorAST* ast) { case 1: // requiresClause value_ = reinterpret_cast(ast->requiresClause); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{173}; + slotNameIndex_ = SlotNameIndex{174}; break; case 2: // initializer value_ = reinterpret_cast(ast->initializer); @@ -3699,7 +3700,7 @@ void ASTSlot::visit(UsingDeclaratorAST* ast) { case 0: // typenameLoc value_ = ast->typenameLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{219}; + slotNameIndex_ = SlotNameIndex{220}; break; case 1: // nestedNameSpecifier value_ = reinterpret_cast(ast->nestedNameSpecifier); @@ -3709,7 +3710,7 @@ void ASTSlot::visit(UsingDeclaratorAST* ast) { case 2: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 3: // ellipsisLoc value_ = ast->ellipsisLoc.index(); @@ -3763,7 +3764,7 @@ void ASTSlot::visit(TypeIdAST* ast) { case 0: // typeSpecifierList value_ = reinterpret_cast(ast->typeSpecifierList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{215}; + slotNameIndex_ = SlotNameIndex{216}; break; case 1: // declarator value_ = reinterpret_cast(ast->declarator); @@ -3795,12 +3796,12 @@ void ASTSlot::visit(HandlerAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 4: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; } // switch @@ -3817,7 +3818,7 @@ void ASTSlot::visit(BaseSpecifierAST* ast) { case 1: // virtualOrAccessLoc value_ = ast->virtualOrAccessLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{226}; + slotNameIndex_ = SlotNameIndex{227}; break; case 2: // otherVirtualOrAccessLoc value_ = ast->otherVirtualOrAccessLoc.index(); @@ -3832,12 +3833,12 @@ void ASTSlot::visit(BaseSpecifierAST* ast) { case 4: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 5: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 6: // ellipsisLoc value_ = ast->ellipsisLoc.index(); @@ -3874,7 +3875,7 @@ void ASTSlot::visit(RequiresClauseAST* ast) { case 0: // requiresLoc value_ = ast->requiresLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{174}; + slotNameIndex_ = SlotNameIndex{175}; break; case 1: // expression value_ = reinterpret_cast(ast->expression); @@ -3923,7 +3924,7 @@ void ASTSlot::visit(TrailingReturnTypeAST* ast) { case 1: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; } // switch @@ -3935,12 +3936,12 @@ void ASTSlot::visit(LambdaSpecifierAST* ast) { case 0: // specifierLoc value_ = ast->specifierLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{186}; + slotNameIndex_ = SlotNameIndex{187}; break; case 1: // specifier value_ = std::intptr_t(ast->specifier); slotKind_ = ASTSlotKind::kIntAttribute; - slotNameIndex_ = SlotNameIndex{185}; + slotNameIndex_ = SlotNameIndex{186}; break; } // switch @@ -3967,7 +3968,7 @@ void ASTSlot::visit(TypeConstraintAST* ast) { case 3: // templateArgumentList value_ = reinterpret_cast(ast->templateArgumentList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{198}; + slotNameIndex_ = SlotNameIndex{199}; break; case 4: // greaterLoc value_ = ast->greaterLoc.index(); @@ -3994,7 +3995,7 @@ void ASTSlot::visit(AttributeArgumentClauseAST* ast) { case 1: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -4028,7 +4029,7 @@ void ASTSlot::visit(AttributeUsingPrefixAST* ast) { case 0: // usingLoc value_ = ast->usingLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{223}; + slotNameIndex_ = SlotNameIndex{224}; break; case 1: // attributeNamespaceLoc value_ = ast->attributeNamespaceLoc.index(); @@ -4060,7 +4061,7 @@ void ASTSlot::visit(NewPlacementAST* ast) { case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -4082,7 +4083,7 @@ void ASTSlot::visit(NestedNamespaceSpecifierAST* ast) { case 2: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; case 3: // identifier value_ = reinterpret_cast(ast->identifier); @@ -4104,7 +4105,7 @@ void ASTSlot::visit(TemplateTypeParameterAST* ast) { case 0: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 1: // lessLoc value_ = ast->lessLoc.index(); @@ -4114,7 +4115,7 @@ void ASTSlot::visit(TemplateTypeParameterAST* ast) { case 2: // templateParameterList value_ = reinterpret_cast(ast->templateParameterList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{201}; + slotNameIndex_ = SlotNameIndex{202}; break; case 3: // greaterLoc value_ = ast->greaterLoc.index(); @@ -4124,7 +4125,7 @@ void ASTSlot::visit(TemplateTypeParameterAST* ast) { case 4: // requiresClause value_ = reinterpret_cast(ast->requiresClause); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{173}; + slotNameIndex_ = SlotNameIndex{174}; break; case 5: // classKeyLoc value_ = ast->classKeyLoc.index(); @@ -4203,7 +4204,7 @@ void ASTSlot::visit(TypenameTypeParameterAST* ast) { case 4: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 5: // identifier value_ = reinterpret_cast(ast->identifier); @@ -4225,7 +4226,7 @@ void ASTSlot::visit(ConstraintTypeParameterAST* ast) { case 0: // typeConstraint value_ = reinterpret_cast(ast->typeConstraint); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{210}; + slotNameIndex_ = SlotNameIndex{211}; break; case 1: // ellipsisLoc value_ = ast->ellipsisLoc.index(); @@ -4245,7 +4246,7 @@ void ASTSlot::visit(ConstraintTypeParameterAST* ast) { case 4: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 5: // identifier value_ = reinterpret_cast(ast->identifier); @@ -4262,7 +4263,7 @@ void ASTSlot::visit(GeneratedTypeSpecifierAST* ast) { case 0: // typeLoc value_ = ast->typeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{213}; + slotNameIndex_ = SlotNameIndex{214}; break; } // switch @@ -4274,7 +4275,7 @@ void ASTSlot::visit(TypedefSpecifierAST* ast) { case 0: // typedefLoc value_ = ast->typedefLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{217}; + slotNameIndex_ = SlotNameIndex{218}; break; } // switch @@ -4358,7 +4359,7 @@ void ASTSlot::visit(StaticSpecifierAST* ast) { case 0: // staticLoc value_ = ast->staticLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{192}; + slotNameIndex_ = SlotNameIndex{193}; break; } // switch @@ -4377,12 +4378,24 @@ void ASTSlot::visit(ExternSpecifierAST* ast) { slotCount_ = 1; } +void ASTSlot::visit(RegisterSpecifierAST* ast) { + switch (slot_) { + case 0: // registerLoc + value_ = ast->registerLoc.index(); + slotKind_ = ASTSlotKind::kToken; + slotNameIndex_ = SlotNameIndex{172}; + break; + } // switch + + slotCount_ = 1; +} + void ASTSlot::visit(ThreadLocalSpecifierAST* ast) { switch (slot_) { case 0: // threadLocalLoc value_ = ast->threadLocalLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{205}; + slotNameIndex_ = SlotNameIndex{206}; break; } // switch @@ -4394,7 +4407,7 @@ void ASTSlot::visit(ThreadSpecifierAST* ast) { case 0: // threadLoc value_ = ast->threadLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{204}; + slotNameIndex_ = SlotNameIndex{205}; break; } // switch @@ -4418,7 +4431,7 @@ void ASTSlot::visit(VirtualSpecifierAST* ast) { case 0: // virtualLoc value_ = ast->virtualLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{225}; + slotNameIndex_ = SlotNameIndex{226}; break; } // switch @@ -4445,7 +4458,7 @@ void ASTSlot::visit(ExplicitSpecifierAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -4469,7 +4482,7 @@ void ASTSlot::visit(VoidTypeSpecifierAST* ast) { case 0: // voidLoc value_ = ast->voidLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{227}; + slotNameIndex_ = SlotNameIndex{228}; break; } // switch @@ -4481,12 +4494,12 @@ void ASTSlot::visit(SizeTypeSpecifierAST* ast) { case 0: // specifierLoc value_ = ast->specifierLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{186}; + slotNameIndex_ = SlotNameIndex{187}; break; case 1: // specifier value_ = std::intptr_t(ast->specifier); slotKind_ = ASTSlotKind::kIntAttribute; - slotNameIndex_ = SlotNameIndex{185}; + slotNameIndex_ = SlotNameIndex{186}; break; } // switch @@ -4498,12 +4511,12 @@ void ASTSlot::visit(SignTypeSpecifierAST* ast) { case 0: // specifierLoc value_ = ast->specifierLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{186}; + slotNameIndex_ = SlotNameIndex{187}; break; case 1: // specifier value_ = std::intptr_t(ast->specifier); slotKind_ = ASTSlotKind::kIntAttribute; - slotNameIndex_ = SlotNameIndex{185}; + slotNameIndex_ = SlotNameIndex{186}; break; } // switch @@ -4515,12 +4528,12 @@ void ASTSlot::visit(VaListTypeSpecifierAST* ast) { case 0: // specifierLoc value_ = ast->specifierLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{186}; + slotNameIndex_ = SlotNameIndex{187}; break; case 1: // specifier value_ = std::intptr_t(ast->specifier); slotKind_ = ASTSlotKind::kIntAttribute; - slotNameIndex_ = SlotNameIndex{185}; + slotNameIndex_ = SlotNameIndex{186}; break; } // switch @@ -4532,12 +4545,12 @@ void ASTSlot::visit(IntegralTypeSpecifierAST* ast) { case 0: // specifierLoc value_ = ast->specifierLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{186}; + slotNameIndex_ = SlotNameIndex{187}; break; case 1: // specifier value_ = std::intptr_t(ast->specifier); slotKind_ = ASTSlotKind::kIntAttribute; - slotNameIndex_ = SlotNameIndex{185}; + slotNameIndex_ = SlotNameIndex{186}; break; } // switch @@ -4549,12 +4562,12 @@ void ASTSlot::visit(FloatingPointTypeSpecifierAST* ast) { case 0: // specifierLoc value_ = ast->specifierLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{186}; + slotNameIndex_ = SlotNameIndex{187}; break; case 1: // specifier value_ = std::intptr_t(ast->specifier); slotKind_ = ASTSlotKind::kIntAttribute; - slotNameIndex_ = SlotNameIndex{185}; + slotNameIndex_ = SlotNameIndex{186}; break; } // switch @@ -4583,12 +4596,12 @@ void ASTSlot::visit(NamedTypeSpecifierAST* ast) { case 1: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 2: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 3: // isTemplateIntroduced value_ = std::intptr_t(ast->isTemplateIntroduced != 0); @@ -4615,12 +4628,12 @@ void ASTSlot::visit(AtomicTypeSpecifierAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -4632,7 +4645,7 @@ void ASTSlot::visit(UnderlyingTypeSpecifierAST* ast) { case 0: // underlyingTypeLoc value_ = ast->underlyingTypeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{220}; + slotNameIndex_ = SlotNameIndex{221}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -4642,12 +4655,12 @@ void ASTSlot::visit(UnderlyingTypeSpecifierAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -4674,12 +4687,12 @@ void ASTSlot::visit(ElaboratedTypeSpecifierAST* ast) { case 3: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 4: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 5: // classKey value_ = std::intptr_t(ast->classKey); @@ -4716,7 +4729,7 @@ void ASTSlot::visit(DecltypeAutoSpecifierAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -4743,7 +4756,7 @@ void ASTSlot::visit(DecltypeSpecifierAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -4755,12 +4768,12 @@ void ASTSlot::visit(PlaceholderTypeSpecifierAST* ast) { case 0: // typeConstraint value_ = reinterpret_cast(ast->typeConstraint); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{210}; + slotNameIndex_ = SlotNameIndex{211}; break; case 1: // specifier value_ = reinterpret_cast(ast->specifier); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{185}; + slotNameIndex_ = SlotNameIndex{186}; break; } // switch @@ -4784,7 +4797,7 @@ void ASTSlot::visit(VolatileQualifierAST* ast) { case 0: // volatileLoc value_ = ast->volatileLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{228}; + slotNameIndex_ = SlotNameIndex{229}; break; } // switch @@ -4796,7 +4809,7 @@ void ASTSlot::visit(RestrictQualifierAST* ast) { case 0: // restrictLoc value_ = ast->restrictLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{175}; + slotNameIndex_ = SlotNameIndex{176}; break; } // switch @@ -4828,7 +4841,7 @@ void ASTSlot::visit(EnumSpecifierAST* ast) { case 4: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 5: // colonLoc value_ = ast->colonLoc.index(); @@ -4838,7 +4851,7 @@ void ASTSlot::visit(EnumSpecifierAST* ast) { case 6: // typeSpecifierList value_ = reinterpret_cast(ast->typeSpecifierList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{215}; + slotNameIndex_ = SlotNameIndex{216}; break; case 7: // lbraceLoc value_ = ast->lbraceLoc.index(); @@ -4885,7 +4898,7 @@ void ASTSlot::visit(ClassSpecifierAST* ast) { case 3: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 4: // finalLoc value_ = ast->finalLoc.index(); @@ -4937,7 +4950,7 @@ void ASTSlot::visit(TypenameSpecifierAST* ast) { case 0: // typenameLoc value_ = ast->typenameLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{219}; + slotNameIndex_ = SlotNameIndex{220}; break; case 1: // nestedNameSpecifier value_ = reinterpret_cast(ast->nestedNameSpecifier); @@ -4947,12 +4960,12 @@ void ASTSlot::visit(TypenameSpecifierAST* ast) { case 2: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 3: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 4: // isTemplateIntroduced value_ = std::intptr_t(ast->isTemplateIntroduced != 0); @@ -4969,12 +4982,12 @@ void ASTSlot::visit(SplicerTypeSpecifierAST* ast) { case 0: // typenameLoc value_ = ast->typenameLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{219}; + slotNameIndex_ = SlotNameIndex{220}; break; case 1: // splicer value_ = reinterpret_cast(ast->splicer); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{187}; + slotNameIndex_ = SlotNameIndex{188}; break; } // switch @@ -4986,7 +4999,7 @@ void ASTSlot::visit(PointerOperatorAST* ast) { case 0: // starLoc value_ = ast->starLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{188}; + slotNameIndex_ = SlotNameIndex{189}; break; case 1: // attributeList value_ = reinterpret_cast(ast->attributeList); @@ -5035,7 +5048,7 @@ void ASTSlot::visit(PtrToMemberOperatorAST* ast) { case 1: // starLoc value_ = ast->starLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{188}; + slotNameIndex_ = SlotNameIndex{189}; break; case 2: // attributeList value_ = reinterpret_cast(ast->attributeList); @@ -5057,7 +5070,7 @@ void ASTSlot::visit(BitfieldDeclaratorAST* ast) { case 0: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 1: // colonLoc value_ = ast->colonLoc.index(); @@ -5067,7 +5080,7 @@ void ASTSlot::visit(BitfieldDeclaratorAST* ast) { case 2: // sizeExpression value_ = reinterpret_cast(ast->sizeExpression); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{183}; + slotNameIndex_ = SlotNameIndex{184}; break; } // switch @@ -5101,12 +5114,12 @@ void ASTSlot::visit(IdDeclaratorAST* ast) { case 1: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 2: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 3: // attributeList value_ = reinterpret_cast(ast->attributeList); @@ -5138,7 +5151,7 @@ void ASTSlot::visit(NestedDeclaratorAST* ast) { case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -5160,7 +5173,7 @@ void ASTSlot::visit(FunctionDeclaratorChunkAST* ast) { case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 3: // cvQualifierList value_ = reinterpret_cast(ast->cvQualifierList); @@ -5185,7 +5198,7 @@ void ASTSlot::visit(FunctionDeclaratorChunkAST* ast) { case 7: // trailingReturnType value_ = reinterpret_cast(ast->trailingReturnType); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{208}; + slotNameIndex_ = SlotNameIndex{209}; break; case 8: // isFinal value_ = std::intptr_t(ast->isFinal != 0); @@ -5256,7 +5269,7 @@ void ASTSlot::visit(DestructorIdAST* ast) { case 0: // tildeLoc value_ = ast->tildeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{207}; + slotNameIndex_ = SlotNameIndex{208}; break; case 1: // id value_ = reinterpret_cast(ast->id); @@ -5354,7 +5367,7 @@ void ASTSlot::visit(ConversionFunctionIdAST* ast) { case 1: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; } // switch @@ -5376,7 +5389,7 @@ void ASTSlot::visit(SimpleTemplateIdAST* ast) { case 2: // templateArgumentList value_ = reinterpret_cast(ast->templateArgumentList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{198}; + slotNameIndex_ = SlotNameIndex{199}; break; case 3: // greaterLoc value_ = ast->greaterLoc.index(); @@ -5408,7 +5421,7 @@ void ASTSlot::visit(LiteralOperatorTemplateIdAST* ast) { case 2: // templateArgumentList value_ = reinterpret_cast(ast->templateArgumentList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{198}; + slotNameIndex_ = SlotNameIndex{199}; break; case 3: // greaterLoc value_ = ast->greaterLoc.index(); @@ -5435,7 +5448,7 @@ void ASTSlot::visit(OperatorFunctionTemplateIdAST* ast) { case 2: // templateArgumentList value_ = reinterpret_cast(ast->templateArgumentList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{198}; + slotNameIndex_ = SlotNameIndex{199}; break; case 3: // greaterLoc value_ = ast->greaterLoc.index(); @@ -5452,7 +5465,7 @@ void ASTSlot::visit(GlobalNestedNameSpecifierAST* ast) { case 0: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; } // switch @@ -5479,7 +5492,7 @@ void ASTSlot::visit(SimpleNestedNameSpecifierAST* ast) { case 3: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; } // switch @@ -5496,7 +5509,7 @@ void ASTSlot::visit(DecltypeNestedNameSpecifierAST* ast) { case 1: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; } // switch @@ -5513,17 +5526,17 @@ void ASTSlot::visit(TemplateNestedNameSpecifierAST* ast) { case 1: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 2: // templateId value_ = reinterpret_cast(ast->templateId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{199}; + slotNameIndex_ = SlotNameIndex{200}; break; case 3: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; case 4: // isTemplateIntroduced value_ = std::intptr_t(ast->isTemplateIntroduced != 0); @@ -5550,7 +5563,7 @@ void ASTSlot::visit(DefaultFunctionBodyAST* ast) { case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -5572,7 +5585,7 @@ void ASTSlot::visit(CompoundStatementFunctionBodyAST* ast) { case 2: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; } // switch @@ -5584,7 +5597,7 @@ void ASTSlot::visit(TryStatementFunctionBodyAST* ast) { case 0: // tryLoc value_ = ast->tryLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{209}; + slotNameIndex_ = SlotNameIndex{210}; break; case 1: // colonLoc value_ = ast->colonLoc.index(); @@ -5599,7 +5612,7 @@ void ASTSlot::visit(TryStatementFunctionBodyAST* ast) { case 3: // statement value_ = reinterpret_cast(ast->statement); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{189}; + slotNameIndex_ = SlotNameIndex{190}; break; case 4: // handlerList value_ = reinterpret_cast(ast->handlerList); @@ -5626,7 +5639,7 @@ void ASTSlot::visit(DeleteFunctionBodyAST* ast) { case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -5638,7 +5651,7 @@ void ASTSlot::visit(TypeTemplateArgumentAST* ast) { case 0: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; } // switch @@ -5662,7 +5675,7 @@ void ASTSlot::visit(ThrowExceptionSpecifierAST* ast) { case 0: // throwLoc value_ = ast->throwLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{206}; + slotNameIndex_ = SlotNameIndex{207}; break; case 1: // lparenLoc value_ = ast->lparenLoc.index(); @@ -5672,7 +5685,7 @@ void ASTSlot::visit(ThrowExceptionSpecifierAST* ast) { case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -5699,7 +5712,7 @@ void ASTSlot::visit(NoexceptSpecifierAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -5716,7 +5729,7 @@ void ASTSlot::visit(SimpleRequirementAST* ast) { case 1: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -5753,12 +5766,12 @@ void ASTSlot::visit(CompoundRequirementAST* ast) { case 5: // typeConstraint value_ = reinterpret_cast(ast->typeConstraint); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{210}; + slotNameIndex_ = SlotNameIndex{211}; break; case 6: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -5770,7 +5783,7 @@ void ASTSlot::visit(TypeRequirementAST* ast) { case 0: // typenameLoc value_ = ast->typenameLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{219}; + slotNameIndex_ = SlotNameIndex{220}; break; case 1: // nestedNameSpecifier value_ = reinterpret_cast(ast->nestedNameSpecifier); @@ -5780,17 +5793,17 @@ void ASTSlot::visit(TypeRequirementAST* ast) { case 2: // templateLoc value_ = ast->templateLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{200}; + slotNameIndex_ = SlotNameIndex{201}; break; case 3: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 4: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; case 5: // isTemplateIntroduced value_ = std::intptr_t(ast->isTemplateIntroduced != 0); @@ -5807,7 +5820,7 @@ void ASTSlot::visit(NestedRequirementAST* ast) { case 0: // requiresLoc value_ = ast->requiresLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{174}; + slotNameIndex_ = SlotNameIndex{175}; break; case 1: // expression value_ = reinterpret_cast(ast->expression); @@ -5817,7 +5830,7 @@ void ASTSlot::visit(NestedRequirementAST* ast) { case 2: // semicolonLoc value_ = ast->semicolonLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{182}; + slotNameIndex_ = SlotNameIndex{183}; break; } // switch @@ -5839,7 +5852,7 @@ void ASTSlot::visit(NewParenInitializerAST* ast) { case 2: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; } // switch @@ -5868,7 +5881,7 @@ void ASTSlot::visit(ParenMemInitializerAST* ast) { case 1: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 2: // lparenLoc value_ = ast->lparenLoc.index(); @@ -5883,7 +5896,7 @@ void ASTSlot::visit(ParenMemInitializerAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // ellipsisLoc value_ = ast->ellipsisLoc.index(); @@ -5905,7 +5918,7 @@ void ASTSlot::visit(BracedMemInitializerAST* ast) { case 1: // unqualifiedId value_ = reinterpret_cast(ast->unqualifiedId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{221}; + slotNameIndex_ = SlotNameIndex{222}; break; case 2: // bracedInitList value_ = reinterpret_cast(ast->bracedInitList); @@ -5927,7 +5940,7 @@ void ASTSlot::visit(ThisLambdaCaptureAST* ast) { case 0: // thisLoc value_ = ast->thisLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{203}; + slotNameIndex_ = SlotNameIndex{204}; break; } // switch @@ -5939,12 +5952,12 @@ void ASTSlot::visit(DerefThisLambdaCaptureAST* ast) { case 0: // starLoc value_ = ast->starLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{188}; + slotNameIndex_ = SlotNameIndex{189}; break; case 1: // thisLoc value_ = ast->thisLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{203}; + slotNameIndex_ = SlotNameIndex{204}; break; } // switch @@ -6081,7 +6094,7 @@ void ASTSlot::visit(TypeExceptionDeclarationAST* ast) { case 1: // typeSpecifierList value_ = reinterpret_cast(ast->typeSpecifierList); slotKind_ = ASTSlotKind::kNodeList; - slotNameIndex_ = SlotNameIndex{215}; + slotNameIndex_ = SlotNameIndex{216}; break; case 2: // declarator value_ = reinterpret_cast(ast->declarator); @@ -6150,12 +6163,12 @@ void ASTSlot::visit(GccAttributeAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 4: // rparen2Loc value_ = ast->rparen2Loc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{178}; + slotNameIndex_ = SlotNameIndex{179}; break; } // switch @@ -6187,7 +6200,7 @@ void ASTSlot::visit(AlignasAttributeAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // isPack value_ = std::intptr_t(ast->isPack != 0); @@ -6214,7 +6227,7 @@ void ASTSlot::visit(AlignasTypeAttributeAST* ast) { case 2: // typeId value_ = reinterpret_cast(ast->typeId); slotKind_ = ASTSlotKind::kNode; - slotNameIndex_ = SlotNameIndex{211}; + slotNameIndex_ = SlotNameIndex{212}; break; case 3: // ellipsisLoc value_ = ast->ellipsisLoc.index(); @@ -6224,7 +6237,7 @@ void ASTSlot::visit(AlignasTypeAttributeAST* ast) { case 4: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 5: // isPack value_ = std::intptr_t(ast->isPack != 0); @@ -6256,7 +6269,7 @@ void ASTSlot::visit(AsmAttributeAST* ast) { case 3: // rparenLoc value_ = ast->rparenLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{179}; + slotNameIndex_ = SlotNameIndex{180}; break; case 4: // literal value_ = reinterpret_cast(ast->literal); @@ -6278,7 +6291,7 @@ void ASTSlot::visit(ScopedAttributeTokenAST* ast) { case 1: // scopeLoc value_ = ast->scopeLoc.index(); slotKind_ = ASTSlotKind::kToken; - slotNameIndex_ = SlotNameIndex{180}; + slotNameIndex_ = SlotNameIndex{181}; break; case 2: // identifierLoc value_ = ast->identifierLoc.index(); diff --git a/src/parser/cxx/ast_slot.h b/src/parser/cxx/ast_slot.h index 38c86921..120c727d 100644 --- a/src/parser/cxx/ast_slot.h +++ b/src/parser/cxx/ast_slot.h @@ -210,6 +210,7 @@ class ASTSlot final : ASTVisitor { void visit(NoreturnSpecifierAST* ast) override; void visit(StaticSpecifierAST* ast) override; void visit(ExternSpecifierAST* ast) override; + void visit(RegisterSpecifierAST* ast) override; void visit(ThreadLocalSpecifierAST* ast) override; void visit(ThreadSpecifierAST* ast) override; void visit(MutableSpecifierAST* ast) override; diff --git a/src/parser/cxx/ast_visitor.cc b/src/parser/cxx/ast_visitor.cc index b2357d1a..9aea44f5 100644 --- a/src/parser/cxx/ast_visitor.cc +++ b/src/parser/cxx/ast_visitor.cc @@ -725,6 +725,8 @@ void ASTVisitor::visit(StaticSpecifierAST* ast) {} void ASTVisitor::visit(ExternSpecifierAST* ast) {} +void ASTVisitor::visit(RegisterSpecifierAST* ast) {} + void ASTVisitor::visit(ThreadLocalSpecifierAST* ast) {} void ASTVisitor::visit(ThreadSpecifierAST* ast) {} diff --git a/src/parser/cxx/ast_visitor.h b/src/parser/cxx/ast_visitor.h index d60fb192..a9d3dee2 100644 --- a/src/parser/cxx/ast_visitor.h +++ b/src/parser/cxx/ast_visitor.h @@ -198,6 +198,7 @@ class ASTVisitor { virtual void visit(NoreturnSpecifierAST* ast); virtual void visit(StaticSpecifierAST* ast); virtual void visit(ExternSpecifierAST* ast); + virtual void visit(RegisterSpecifierAST* ast); virtual void visit(ThreadLocalSpecifierAST* ast); virtual void visit(ThreadSpecifierAST* ast); virtual void visit(MutableSpecifierAST* ast); diff --git a/src/parser/cxx/decl_specs.cc b/src/parser/cxx/decl_specs.cc index 806ce9cf..f7e64063 100644 --- a/src/parser/cxx/decl_specs.cc +++ b/src/parser/cxx/decl_specs.cc @@ -45,6 +45,7 @@ struct DeclSpecs::Visitor { void operator()(NoreturnSpecifierAST* ast); void operator()(StaticSpecifierAST* ast); void operator()(ExternSpecifierAST* ast); + void operator()(RegisterSpecifierAST* ast); void operator()(ThreadLocalSpecifierAST* ast); void operator()(ThreadSpecifierAST* ast); void operator()(MutableSpecifierAST* ast); @@ -112,6 +113,10 @@ void DeclSpecs::Visitor::operator()(ExternSpecifierAST* ast) { specs.isExtern = true; } +void DeclSpecs::Visitor::operator()(RegisterSpecifierAST* ast) { + specs.isRegister = true; +} + void DeclSpecs::Visitor::operator()(ThreadLocalSpecifierAST* ast) { specs.isThreadLocal = true; } diff --git a/src/parser/cxx/decl_specs.h b/src/parser/cxx/decl_specs.h index b79ea7e6..c97da624 100644 --- a/src/parser/cxx/decl_specs.h +++ b/src/parser/cxx/decl_specs.h @@ -81,6 +81,7 @@ class DeclSpecs { bool isExtern = false; bool isMutable = false; bool isThread = false; + bool isRegister = false; // function specifiers bool isVirtual = false; diff --git a/src/parser/cxx/flatbuffers/ast_decoder.cc b/src/parser/cxx/flatbuffers/ast_decoder.cc index 3415bd2d..3759be0c 100644 --- a/src/parser/cxx/flatbuffers/ast_decoder.cc +++ b/src/parser/cxx/flatbuffers/ast_decoder.cc @@ -464,6 +464,9 @@ auto ASTDecoder::decodeSpecifier(const void* ptr, io::Specifier type) case io::Specifier_ExternSpecifier: return decodeExternSpecifier( reinterpret_cast(ptr)); + case io::Specifier_RegisterSpecifier: + return decodeRegisterSpecifier( + reinterpret_cast(ptr)); case io::Specifier_ThreadLocalSpecifier: return decodeThreadLocalSpecifier( reinterpret_cast(ptr)); @@ -3283,6 +3286,15 @@ auto ASTDecoder::decodeExternSpecifier(const io::ExternSpecifier* node) return ast; } +auto ASTDecoder::decodeRegisterSpecifier(const io::RegisterSpecifier* node) + -> RegisterSpecifierAST* { + if (!node) return nullptr; + + auto ast = new (pool_) RegisterSpecifierAST(); + ast->registerLoc = SourceLocation(node->register_loc()); + return ast; +} + auto ASTDecoder::decodeThreadLocalSpecifier( const io::ThreadLocalSpecifier* node) -> ThreadLocalSpecifierAST* { if (!node) return nullptr; diff --git a/src/parser/cxx/flatbuffers/ast_encoder.cc b/src/parser/cxx/flatbuffers/ast_encoder.cc index 5968e12a..70973e9f 100644 --- a/src/parser/cxx/flatbuffers/ast_encoder.cc +++ b/src/parser/cxx/flatbuffers/ast_encoder.cc @@ -3686,6 +3686,14 @@ void ASTEncoder::visit(ExternSpecifierAST* ast) { type_ = io::Specifier_ExternSpecifier; } +void ASTEncoder::visit(RegisterSpecifierAST* ast) { + io::RegisterSpecifier::Builder builder{fbb_}; + builder.add_register_loc(ast->registerLoc.index()); + + offset_ = builder.Finish().Union(); + type_ = io::Specifier_RegisterSpecifier; +} + void ASTEncoder::visit(ThreadLocalSpecifierAST* ast) { io::ThreadLocalSpecifier::Builder builder{fbb_}; builder.add_thread_local_loc(ast->threadLocalLoc.index()); diff --git a/src/parser/cxx/parser.cc b/src/parser/cxx/parser.cc index a7a52355..10742dea 100644 --- a/src/parser/cxx/parser.cc +++ b/src/parser/cxx/parser.cc @@ -4586,6 +4586,13 @@ auto Parser::parse_storage_class_specifier(SpecifierAST*& yyast, specs.isExtern = true; return true; } + if (match(TokenKind::T_REGISTER, loc)) { + auto ast = make_node(pool_); + yyast = ast; + ast->registerLoc = loc; + specs.isRegister = true; + return true; + } if (match(TokenKind::T_MUTABLE, loc)) { auto ast = make_node(pool_); yyast = ast; diff --git a/src/parser/cxx/parser.h b/src/parser/cxx/parser.h index ebdd33cb..09bed509 100644 --- a/src/parser/cxx/parser.h +++ b/src/parser/cxx/parser.h @@ -804,6 +804,12 @@ class Parser final { void mark_maybe_template_name(UnqualifiedIdAST* name); void mark_maybe_template_name(DeclaratorAST* declarator); + [[nodiscard]] auto is_parsing_c() const { return lang_ == LanguageKind::kC; } + + [[nodiscard]] auto is_parsing_cxx() const { + return lang_ == LanguageKind::kCXX; + } + private: TranslationUnit* unit = nullptr; Arena* pool_ = nullptr; @@ -811,6 +817,7 @@ class Parser final { DiagnosticsClient* diagnosticClient_ = nullptr; Scope* globalScope_ = nullptr; Binder binder_; + LanguageKind lang_ = LanguageKind::kCXX; bool skipFunctionBody_ = false; bool moduleUnit_ = false; const Identifier* moduleId_ = nullptr; diff --git a/src/parser/cxx/private/ast_decoder.h b/src/parser/cxx/private/ast_decoder.h index a67279a6..f5ab7758 100644 --- a/src/parser/cxx/private/ast_decoder.h +++ b/src/parser/cxx/private/ast_decoder.h @@ -373,6 +373,8 @@ class ASTDecoder { -> StaticSpecifierAST*; auto decodeExternSpecifier(const io::ExternSpecifier* node) -> ExternSpecifierAST*; + auto decodeRegisterSpecifier(const io::RegisterSpecifier* node) + -> RegisterSpecifierAST*; auto decodeThreadLocalSpecifier(const io::ThreadLocalSpecifier* node) -> ThreadLocalSpecifierAST*; auto decodeThreadSpecifier(const io::ThreadSpecifier* node) diff --git a/src/parser/cxx/private/ast_encoder.h b/src/parser/cxx/private/ast_encoder.h index c784595c..b00e2676 100644 --- a/src/parser/cxx/private/ast_encoder.h +++ b/src/parser/cxx/private/ast_encoder.h @@ -281,6 +281,7 @@ class ASTEncoder : ASTVisitor { void visit(NoreturnSpecifierAST* ast) override; void visit(StaticSpecifierAST* ast) override; void visit(ExternSpecifierAST* ast) override; + void visit(RegisterSpecifierAST* ast) override; void visit(ThreadLocalSpecifierAST* ast) override; void visit(ThreadSpecifierAST* ast) override; void visit(MutableSpecifierAST* ast) override;