GCC Code Coverage Report


Directory: ../
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 567 / 0 / 567
Functions: 100.0% 96 / 0 / 96
Branches: 52.0% 477 / 0 / 917

src/ast/ASTBuilder.h
Line Branch Exec Source
1 // Copyright (c) 2021-2026 ChilliBits. All rights reserved.
2
3 #pragma once
4
5 #include <functional>
6
7 // Ignore some warnings in ANTLR generated code
8 #pragma GCC diagnostic push
9 #pragma GCC diagnostic ignored "-Woverloaded-virtual"
10 #include <SpiceVisitor.h>
11 #pragma GCC diagnostic pop
12
13 #include <CompilerPass.h>
14 #include <global/GlobalResourceManager.h>
15 #include <util/CodeLoc.h>
16 #include <util/GlobalDefinitions.h>
17
18 namespace spice::compiler {
19
20 // Forward declarations
21 class ASTNode;
22 class EntryNode;
23 class ConstantNode;
24
25 static constexpr const char *const RESERVED_KEYWORDS[] = {"new", "stash", "pick", "sync", "class"};
26 const char *const MEMBER_ACCESS_TOKEN = ".";
27 const char *const SCOPE_ACCESS_TOKEN = "::";
28
29 class ASTBuilder final : CompilerPass, public SpiceVisitor {
30 // Private type defs
31 using TerminalNode = antlr4::tree::TerminalNode;
32 using ParserRuleContext = antlr4::ParserRuleContext;
33 template <typename T> using NumericParserCallback = std::function<T(const std::string &, short, bool)>;
34
35 public:
36 // Constructors
37 ASTBuilder(GlobalResourceManager &resourceManager, SourceFile *sourceFile, antlr4::ANTLRInputStream *inputStream);
38
39 // Public methods
40 std::any visitEntry(SpiceParser::EntryContext *ctx) override;
41 std::any visitMainFunctionDef(SpiceParser::MainFunctionDefContext *ctx) override;
42 std::any visitFunctionDef(SpiceParser::FunctionDefContext *ctx) override;
43 std::any visitProcedureDef(SpiceParser::ProcedureDefContext *ctx) override;
44 std::any visitFctName(SpiceParser::FctNameContext *ctx) override;
45 std::any visitGenericTypeDef(SpiceParser::GenericTypeDefContext *ctx) override;
46 std::any visitAliasDef(SpiceParser::AliasDefContext *ctx) override;
47 std::any visitStructDef(SpiceParser::StructDefContext *ctx) override;
48 std::any visitInterfaceDef(SpiceParser::InterfaceDefContext *ctx) override;
49 std::any visitForwardDecl(SpiceParser::ForwardDeclContext *ctx) override;
50 std::any visitEnumDef(SpiceParser::EnumDefContext *ctx) override;
51 std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override;
52 std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override;
53 std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override;
54 std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override;
55 std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override;
56 std::any visitForHead(SpiceParser::ForHeadContext *ctx) override;
57 std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override;
58 std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override;
59 std::any visitWhileLoop(SpiceParser::WhileLoopContext *ctx) override;
60 std::any visitDoWhileLoop(SpiceParser::DoWhileLoopContext *ctx) override;
61 std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override;
62 std::any visitElseStmt(SpiceParser::ElseStmtContext *ctx) override;
63 std::any visitSwitchStmt(SpiceParser::SwitchStmtContext *ctx) override;
64 std::any visitCaseBranch(SpiceParser::CaseBranchContext *ctx) override;
65 std::any visitDefaultBranch(SpiceParser::DefaultBranchContext *ctx) override;
66 std::any visitAnonymousBlockStmt(SpiceParser::AnonymousBlockStmtContext *ctx) override;
67 std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override;
68 std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override;
69 std::any visitTypeLstWithEllipsis(SpiceParser::TypeLstWithEllipsisContext *ctx) override;
70 std::any visitTypeAltsLst(SpiceParser::TypeAltsLstContext *ctx) override;
71 std::any visitParamLst(SpiceParser::ParamLstContext *ctx) override;
72 std::any visitArgLst(SpiceParser::ArgLstContext *ctx) override;
73 std::any visitEnumItemLst(SpiceParser::EnumItemLstContext *ctx) override;
74 std::any visitEnumItem(SpiceParser::EnumItemContext *ctx) override;
75 std::any visitField(SpiceParser::FieldContext *ctx) override;
76 std::any visitSignature(SpiceParser::SignatureContext *ctx) override;
77 std::any visitStmt(SpiceParser::StmtContext *ctx) override;
78 std::any visitDeclStmt(SpiceParser::DeclStmtContext *ctx) override;
79 std::any visitExprStmt(SpiceParser::ExprStmtContext *ctx) override;
80 std::any visitQualifierLst(SpiceParser::QualifierLstContext *ctx) override;
81 std::any visitQualifier(SpiceParser::QualifierContext *ctx) override;
82 std::any visitTopLevelDefAttr(SpiceParser::TopLevelDefAttrContext *ctx) override;
83 std::any visitLambdaAttr(SpiceParser::LambdaAttrContext *ctx) override;
84 std::any visitModAttr(SpiceParser::ModAttrContext *ctx) override;
85 std::any visitAttrLst(SpiceParser::AttrLstContext *ctx) override;
86 std::any visitAttr(SpiceParser::AttrContext *ctx) override;
87 std::any visitCaseConstant(SpiceParser::CaseConstantContext *ctx) override;
88 std::any visitReturnStmt(SpiceParser::ReturnStmtContext *ctx) override;
89 std::any visitBreakStmt(SpiceParser::BreakStmtContext *ctx) override;
90 std::any visitContinueStmt(SpiceParser::ContinueStmtContext *ctx) override;
91 std::any visitFallthroughStmt(SpiceParser::FallthroughStmtContext *ctx) override;
92 std::any visitAssertStmt(SpiceParser::AssertStmtContext *ctx) override;
93 std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override;
94 std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override;
95 std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override;
96 std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override;
97 std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override;
98 std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override;
99 std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override;
100 std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override;
101 std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override;
102 std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override;
103 std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override;
104 std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override;
105 std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override;
106 std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override;
107 std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override;
108 std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override;
109 std::any visitValue(SpiceParser::ValueContext *ctx) override;
110 std::any visitFctCall(SpiceParser::FctCallContext *ctx) override;
111 std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override;
112 std::any visitStructInstantiation(SpiceParser::StructInstantiationContext *ctx) override;
113 std::any visitLambdaFunc(SpiceParser::LambdaFuncContext *ctx) override;
114 std::any visitLambdaProc(SpiceParser::LambdaProcContext *ctx) override;
115 std::any visitLambdaExpr(SpiceParser::LambdaExprContext *ctx) override;
116 std::any visitConstant(SpiceParser::ConstantContext *ctx) override;
117 std::any visitDataType(SpiceParser::DataTypeContext *ctx) override;
118 std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override;
119 std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override;
120 std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override;
121 std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override;
122 std::any visitOverloadableOp(SpiceParser::OverloadableOpContext *ctx) override;
123
124 private:
125 // Members
126 antlr4::ANTLRInputStream *inputStream;
127 std::stack<ASTNode *> parentStack;
128 size_t currentNodeId = 0;
129
130 // Private methods
131 template <typename SrcTy, typename TgtTy>
132 199400 void fetchChildrenIntoVector(std::vector<TgtTy> &tgt, const std::vector<SrcTy> &src)
133 requires(std::is_pointer_v<SrcTy> && std::is_pointer_v<TgtTy>)
134 {
135 199400 tgt.reserve(src.size());
136
36/36
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::AttrContext*, spice::compiler::AttrNode*>(std::vector<spice::compiler::AttrNode*, std::allocator<spice::compiler::AttrNode*> >&, std::vector<spice::compiler::SpiceParser::AttrContext*, std::allocator<spice::compiler::SpiceParser::AttrContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::AttrContext*>)&&(is_pointer_v<spice::compiler::AttrNode*>):
✓ Branch 21 → 6 taken 3261 times.
✓ Branch 21 → 22 taken 1636 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::CastExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::CastExprContext*, std::allocator<spice::compiler::SpiceParser::CastExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::CastExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 6354 times.
✓ Branch 21 → 22 taken 3141 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::DataTypeContext*, spice::compiler::DataTypeNode*>(std::vector<spice::compiler::DataTypeNode*, std::allocator<spice::compiler::DataTypeNode*> >&, std::vector<spice::compiler::SpiceParser::DataTypeContext*, std::allocator<spice::compiler::SpiceParser::DataTypeContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::DataTypeContext*>)&&(is_pointer_v<spice::compiler::DataTypeNode*>):
✓ Branch 21 → 6 taken 30646 times.
✓ Branch 21 → 22 taken 21565 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::DeclStmtContext*, spice::compiler::DeclStmtNode*>(std::vector<spice::compiler::DeclStmtNode*, std::allocator<spice::compiler::DeclStmtNode*> >&, std::vector<spice::compiler::SpiceParser::DeclStmtContext*, std::allocator<spice::compiler::SpiceParser::DeclStmtContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::DeclStmtContext*>)&&(is_pointer_v<spice::compiler::DeclStmtNode*>):
✓ Branch 21 → 6 taken 33638 times.
✓ Branch 21 → 22 taken 22956 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::EnumItemContext*, spice::compiler::EnumItemNode*>(std::vector<spice::compiler::EnumItemNode*, std::allocator<spice::compiler::EnumItemNode*> >&, std::vector<spice::compiler::SpiceParser::EnumItemContext*, std::allocator<spice::compiler::SpiceParser::EnumItemContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::EnumItemContext*>)&&(is_pointer_v<spice::compiler::EnumItemNode*>):
✓ Branch 21 → 6 taken 4910 times.
✓ Branch 21 → 22 taken 369 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::QualifierContext*, spice::compiler::QualifierNode*>(std::vector<spice::compiler::QualifierNode*, std::allocator<spice::compiler::QualifierNode*> >&, std::vector<spice::compiler::SpiceParser::QualifierContext*, std::allocator<spice::compiler::SpiceParser::QualifierContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::QualifierContext*>)&&(is_pointer_v<spice::compiler::QualifierNode*>):
✓ Branch 21 → 6 taken 90941 times.
✓ Branch 21 → 22 taken 77064 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::ShiftExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::ShiftExprContext*, std::allocator<spice::compiler::SpiceParser::ShiftExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::ShiftExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 16516 times.
✓ Branch 21 → 22 taken 8258 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::AssignExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::AssignExprContext*, std::allocator<spice::compiler::SpiceParser::AssignExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::AssignExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 59625 times.
✓ Branch 21 → 22 taken 38889 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::CaseBranchContext*, spice::compiler::CaseBranchNode*>(std::vector<spice::compiler::CaseBranchNode*, std::allocator<spice::compiler::CaseBranchNode*> >&, std::vector<spice::compiler::SpiceParser::CaseBranchContext*, std::allocator<spice::compiler::SpiceParser::CaseBranchContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::CaseBranchContext*>)&&(is_pointer_v<spice::compiler::CaseBranchNode*>):
✓ Branch 21 → 6 taken 662 times.
✓ Branch 21 → 22 taken 85 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::AdditiveExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::AdditiveExprContext*, std::allocator<spice::compiler::SpiceParser::AdditiveExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::AdditiveExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 1766 times.
✓ Branch 21 → 22 taken 762 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::CaseConstantContext*, spice::compiler::CaseConstantNode*>(std::vector<spice::compiler::CaseConstantNode*, std::allocator<spice::compiler::CaseConstantNode*> >&, std::vector<spice::compiler::SpiceParser::CaseConstantContext*, std::allocator<spice::compiler::SpiceParser::CaseConstantContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::CaseConstantContext*>)&&(is_pointer_v<spice::compiler::CaseConstantNode*>):
✓ Branch 21 → 6 taken 847 times.
✓ Branch 21 → 22 taken 662 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::EqualityExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::EqualityExprContext*, std::allocator<spice::compiler::SpiceParser::EqualityExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::EqualityExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 113 times.
✓ Branch 21 → 22 taken 56 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::BitwiseOrExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::BitwiseOrExprContext*, std::allocator<spice::compiler::SpiceParser::BitwiseOrExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::BitwiseOrExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 2319 times.
✓ Branch 21 → 22 taken 981 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::BitwiseAndExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::BitwiseAndExprContext*, std::allocator<spice::compiler::SpiceParser::BitwiseAndExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::BitwiseAndExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 67 times.
✓ Branch 21 → 22 taken 33 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::BitwiseXorExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::BitwiseXorExprContext*, std::allocator<spice::compiler::SpiceParser::BitwiseXorExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::BitwiseXorExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 539 times.
✓ Branch 21 → 22 taken 269 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::LogicalAndExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::LogicalAndExprContext*, std::allocator<spice::compiler::SpiceParser::LogicalAndExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::LogicalAndExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 4466 times.
✓ Branch 21 → 22 taken 1920 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::RelationalExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::RelationalExprContext*, std::allocator<spice::compiler::SpiceParser::RelationalExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::RelationalExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 25852 times.
✓ Branch 21 → 22 taken 12926 times.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::MultiplicativeExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::MultiplicativeExprContext*, std::allocator<spice::compiler::SpiceParser::MultiplicativeExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::MultiplicativeExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 21 → 6 taken 16586 times.
✓ Branch 21 → 22 taken 7827 times.
697907 for (SrcTy shiftExpr : src)
137
55/108
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::AttrContext*, spice::compiler::AttrNode*>(std::vector<spice::compiler::AttrNode*, std::allocator<spice::compiler::AttrNode*> >&, std::vector<spice::compiler::SpiceParser::AttrContext*, std::allocator<spice::compiler::SpiceParser::AttrContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::AttrContext*>)&&(is_pointer_v<spice::compiler::AttrNode*>):
✓ Branch 8 → 9 taken 3260 times.
✓ Branch 8 → 25 taken 1 time.
✓ Branch 9 → 10 taken 3260 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 3260 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::CastExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::CastExprContext*, std::allocator<spice::compiler::SpiceParser::CastExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::CastExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 6354 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 6354 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 6354 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::DataTypeContext*, spice::compiler::DataTypeNode*>(std::vector<spice::compiler::DataTypeNode*, std::allocator<spice::compiler::DataTypeNode*> >&, std::vector<spice::compiler::SpiceParser::DataTypeContext*, std::allocator<spice::compiler::SpiceParser::DataTypeContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::DataTypeContext*>)&&(is_pointer_v<spice::compiler::DataTypeNode*>):
✓ Branch 8 → 9 taken 30646 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 30646 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 30646 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::DeclStmtContext*, spice::compiler::DeclStmtNode*>(std::vector<spice::compiler::DeclStmtNode*, std::allocator<spice::compiler::DeclStmtNode*> >&, std::vector<spice::compiler::SpiceParser::DeclStmtContext*, std::allocator<spice::compiler::SpiceParser::DeclStmtContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::DeclStmtContext*>)&&(is_pointer_v<spice::compiler::DeclStmtNode*>):
✓ Branch 8 → 9 taken 33638 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 33638 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 33638 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::EnumItemContext*, spice::compiler::EnumItemNode*>(std::vector<spice::compiler::EnumItemNode*, std::allocator<spice::compiler::EnumItemNode*> >&, std::vector<spice::compiler::SpiceParser::EnumItemContext*, std::allocator<spice::compiler::SpiceParser::EnumItemContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::EnumItemContext*>)&&(is_pointer_v<spice::compiler::EnumItemNode*>):
✓ Branch 8 → 9 taken 4910 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 4910 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 4910 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::QualifierContext*, spice::compiler::QualifierNode*>(std::vector<spice::compiler::QualifierNode*, std::allocator<spice::compiler::QualifierNode*> >&, std::vector<spice::compiler::SpiceParser::QualifierContext*, std::allocator<spice::compiler::SpiceParser::QualifierContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::QualifierContext*>)&&(is_pointer_v<spice::compiler::QualifierNode*>):
✓ Branch 8 → 9 taken 90941 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 90941 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 90941 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::ShiftExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::ShiftExprContext*, std::allocator<spice::compiler::SpiceParser::ShiftExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::ShiftExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 16516 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 16516 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 16516 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::AssignExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::AssignExprContext*, std::allocator<spice::compiler::SpiceParser::AssignExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::AssignExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 59625 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 59625 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 59625 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::CaseBranchContext*, spice::compiler::CaseBranchNode*>(std::vector<spice::compiler::CaseBranchNode*, std::allocator<spice::compiler::CaseBranchNode*> >&, std::vector<spice::compiler::SpiceParser::CaseBranchContext*, std::allocator<spice::compiler::SpiceParser::CaseBranchContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::CaseBranchContext*>)&&(is_pointer_v<spice::compiler::CaseBranchNode*>):
✓ Branch 8 → 9 taken 662 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 662 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 662 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::AdditiveExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::AdditiveExprContext*, std::allocator<spice::compiler::SpiceParser::AdditiveExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::AdditiveExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 1766 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 1766 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 1766 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::CaseConstantContext*, spice::compiler::CaseConstantNode*>(std::vector<spice::compiler::CaseConstantNode*, std::allocator<spice::compiler::CaseConstantNode*> >&, std::vector<spice::compiler::SpiceParser::CaseConstantContext*, std::allocator<spice::compiler::SpiceParser::CaseConstantContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::CaseConstantContext*>)&&(is_pointer_v<spice::compiler::CaseConstantNode*>):
✓ Branch 8 → 9 taken 847 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 847 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 847 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::EqualityExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::EqualityExprContext*, std::allocator<spice::compiler::SpiceParser::EqualityExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::EqualityExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 113 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 113 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 113 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::BitwiseOrExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::BitwiseOrExprContext*, std::allocator<spice::compiler::SpiceParser::BitwiseOrExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::BitwiseOrExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 2319 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 2319 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 2319 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::BitwiseAndExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::BitwiseAndExprContext*, std::allocator<spice::compiler::SpiceParser::BitwiseAndExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::BitwiseAndExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 67 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 67 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 67 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::BitwiseXorExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::BitwiseXorExprContext*, std::allocator<spice::compiler::SpiceParser::BitwiseXorExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::BitwiseXorExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 539 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 539 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 539 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::LogicalAndExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::LogicalAndExprContext*, std::allocator<spice::compiler::SpiceParser::LogicalAndExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::LogicalAndExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 4466 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 4466 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 4466 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::RelationalExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::RelationalExprContext*, std::allocator<spice::compiler::SpiceParser::RelationalExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::RelationalExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 25852 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 25852 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 25852 times.
✗ Branch 10 → 23 not taken.
void spice::compiler::ASTBuilder::fetchChildrenIntoVector<spice::compiler::SpiceParser::MultiplicativeExprContext*, spice::compiler::ExprNode*>(std::vector<spice::compiler::ExprNode*, std::allocator<spice::compiler::ExprNode*> >&, std::vector<spice::compiler::SpiceParser::MultiplicativeExprContext*, std::allocator<spice::compiler::SpiceParser::MultiplicativeExprContext*> > const&) requires (is_pointer_v<spice::compiler::SpiceParser::MultiplicativeExprContext*>)&&(is_pointer_v<spice::compiler::ExprNode*>):
✓ Branch 8 → 9 taken 16586 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 16586 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 16586 times.
✗ Branch 10 → 23 not taken.
299108 tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr)));
138 199399 }
139
140 template <typename T>
141 1359193 T *createNode(const ParserRuleContext *ctx)
142 requires std::is_base_of_v<ASTNode, T>
143 {
144 // Create the new node
145
78/156
spice::compiler::ArgLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ArgLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ArgLstNode>:
✓ Branch 9 → 10 taken 38889 times.
✗ Branch 9 → 15 not taken.
spice::compiler::FctDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctDefNode>:
✓ Branch 9 → 10 taken 19899 times.
✗ Branch 9 → 15 not taken.
spice::compiler::IfStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::IfStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::IfStmtNode>:
✓ Branch 9 → 10 taken 10859 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AttrLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AttrLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AttrLstNode>:
✓ Branch 9 → 10 taken 1637 times.
✗ Branch 9 → 15 not taken.
spice::compiler::EnumDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumDefNode>:
✓ Branch 9 → 10 taken 369 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ExtDeclNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ExtDeclNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ExtDeclNode>:
✓ Branch 9 → 10 taken 2963 times.
✗ Branch 9 → 15 not taken.
spice::compiler::FctCallNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctCallNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctCallNode>:
✓ Branch 9 → 10 taken 51774 times.
✗ Branch 9 → 15 not taken.
spice::compiler::FctNameNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctNameNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctNameNode>:
✓ Branch 9 → 10 taken 30433 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ForLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForLoopNode>:
✓ Branch 9 → 10 taken 2820 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ModAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ModAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ModAttrNode>:
✓ Branch 9 → 10 taken 684 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ProcDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ProcDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ProcDefNode>:
✓ Branch 9 → 10 taken 10534 times.
✗ Branch 9 → 15 not taken.
spice::compiler::StmtLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StmtLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StmtLstNode>:
✓ Branch 9 → 10 taken 53569 times.
✗ Branch 9 → 15 not taken.
spice::compiler::TypeLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeLstNode>:
✓ Branch 9 → 10 taken 19642 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AliasDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AliasDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AliasDefNode>:
✓ Branch 9 → 10 taken 342 times.
✗ Branch 9 → 15 not taken.
spice::compiler::CastExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CastExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CastExprNode>:
✓ Branch 9 → 10 taken 6524 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ConstantNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ConstantNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ConstantNode>:
✓ Branch 9 → 10 taken 46037 times.
✗ Branch 9 → 15 not taken.
spice::compiler::DataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DataTypeNode>:
✓ Branch 9 → 10 taken 123231 times.
✗ Branch 9 → 15 not taken.
spice::compiler::DeclStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DeclStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DeclStmtNode>:
✓ Branch 9 → 10 taken 50976 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ElseStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ElseStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ElseStmtNode>:
✓ Branch 9 → 10 taken 952 times.
✗ Branch 9 → 15 not taken.
spice::compiler::EnumItemNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumItemNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumItemNode>:
✓ Branch 9 → 10 taken 4910 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ExprStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ExprStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ExprStmtNode>:
✓ Branch 9 → 10 taken 36635 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ParamLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ParamLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ParamLstNode>:
✓ Branch 9 → 10 taken 22956 times.
✗ Branch 9 → 15 not taken.
spice::compiler::BreakStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BreakStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BreakStmtNode>:
✓ Branch 9 → 10 taken 229 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ImportDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ImportDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ImportDefNode>:
✓ Branch 9 → 10 taken 2528 times.
✗ Branch 9 → 15 not taken.
spice::compiler::QualifierNode* spice::compiler::ASTBuilder::createNode<spice::compiler::QualifierNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::QualifierNode>:
✓ Branch 9 → 10 taken 90941 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ShiftExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ShiftExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ShiftExprNode>:
✓ Branch 9 → 10 taken 762 times.
✗ Branch 9 → 15 not taken.
spice::compiler::SignatureNode* spice::compiler::ASTBuilder::createNode<spice::compiler::SignatureNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::SignatureNode>:
✓ Branch 9 → 10 taken 1333 times.
✗ Branch 9 → 15 not taken.
spice::compiler::StructDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StructDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StructDefNode>:
✓ Branch 9 → 10 taken 2807 times.
✗ Branch 9 → 15 not taken.
spice::compiler::WhileLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::WhileLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::WhileLoopNode>:
✓ Branch 9 → 10 taken 1660 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AssertStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AssertStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AssertStmtNode>:
✓ Branch 9 → 10 taken 3378 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AssignExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AssignExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AssignExprNode>:
✓ Branch 9 → 10 taken 18862 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AtomicExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AtomicExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AtomicExprNode>:
✓ Branch 9 → 10 taken 229894 times.
✗ Branch 9 → 15 not taken.
spice::compiler::CaseBranchNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CaseBranchNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CaseBranchNode>:
✓ Branch 9 → 10 taken 662 times.
✗ Branch 9 → 15 not taken.
spice::compiler::LambdaAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaAttrNode>:
✓ Branch 9 → 10 taken 6 times.
✗ Branch 9 → 15 not taken.
spice::compiler::LambdaExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaExprNode>:
✓ Branch 9 → 10 taken 1 time.
✗ Branch 9 → 15 not taken.
spice::compiler::LambdaFuncNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaFuncNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaFuncNode>:
✓ Branch 9 → 10 taken 22 times.
✗ Branch 9 → 15 not taken.
spice::compiler::LambdaProcNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaProcNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaProcNode>:
✓ Branch 9 → 10 taken 72 times.
✗ Branch 9 → 15 not taken.
spice::compiler::MainFctDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::MainFctDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::MainFctDefNode>:
✓ Branch 9 → 10 taken 545 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ReturnStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ReturnStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ReturnStmtNode>:
✓ Branch 9 → 10 taken 24245 times.
✗ Branch 9 → 15 not taken.
spice::compiler::SwitchStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::SwitchStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::SwitchStmtNode>:
✓ Branch 9 → 10 taken 85 times.
✗ Branch 9 → 15 not taken.
spice::compiler::DoWhileLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DoWhileLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DoWhileLoopNode>:
✓ Branch 9 → 10 taken 16 times.
✗ Branch 9 → 15 not taken.
spice::compiler::EnumItemLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumItemLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumItemLstNode>:
✓ Branch 9 → 10 taken 369 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ForeachLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForeachLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForeachLoopNode>:
✓ Branch 9 → 10 taken 471 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ForwardDeclNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForwardDeclNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForwardDeclNode>:
✓ Branch 9 → 10 taken 7 times.
✗ Branch 9 → 15 not taken.
spice::compiler::TernaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TernaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TernaryExprNode>:
✓ Branch 9 → 10 taken 1142 times.
✗ Branch 9 → 15 not taken.
spice::compiler::TypeAltsLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeAltsLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeAltsLstNode>:
✓ Branch 9 → 10 taken 1923 times.
✗ Branch 9 → 15 not taken.
spice::compiler::UnsafeBlockNode* spice::compiler::ASTBuilder::createNode<spice::compiler::UnsafeBlockNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::UnsafeBlockNode>:
✓ Branch 9 → 10 taken 5321 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AdditiveExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AdditiveExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AdditiveExprNode>:
✓ Branch 9 → 10 taken 7827 times.
✗ Branch 9 → 15 not taken.
spice::compiler::BaseDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BaseDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BaseDataTypeNode>:
✓ Branch 9 → 10 taken 123230 times.
✗ Branch 9 → 15 not taken.
spice::compiler::CaseConstantNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CaseConstantNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CaseConstantNode>:
✓ Branch 9 → 10 taken 847 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ContinueStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ContinueStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ContinueStmtNode>:
✓ Branch 9 → 10 taken 403 times.
✗ Branch 9 → 15 not taken.
spice::compiler::EqualityExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EqualityExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EqualityExprNode>:
✓ Branch 9 → 10 taken 12926 times.
✗ Branch 9 → 15 not taken.
spice::compiler::GlobalVarDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::GlobalVarDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::GlobalVarDefNode>:
✓ Branch 9 → 10 taken 2368 times.
✗ Branch 9 → 15 not taken.
spice::compiler::InterfaceDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::InterfaceDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::InterfaceDefNode>:
✓ Branch 9 → 10 taken 366 times.
✗ Branch 9 → 15 not taken.
spice::compiler::QualifierLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::QualifierLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::QualifierLstNode>:
✓ Branch 9 → 10 taken 77064 times.
✗ Branch 9 → 15 not taken.
spice::compiler::BitwiseOrExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseOrExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseOrExprNode>:
✓ Branch 9 → 10 taken 269 times.
✗ Branch 9 → 15 not taken.
spice::compiler::DefaultBranchNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DefaultBranchNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DefaultBranchNode>:
✓ Branch 9 → 10 taken 69 times.
✗ Branch 9 → 15 not taken.
spice::compiler::LogicalOrExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LogicalOrExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LogicalOrExprNode>:
✓ Branch 9 → 10 taken 1920 times.
✗ Branch 9 → 15 not taken.
spice::compiler::BitwiseAndExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseAndExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseAndExprNode>:
✓ Branch 9 → 10 taken 56 times.
✗ Branch 9 → 15 not taken.
spice::compiler::BitwiseXorExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseXorExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseXorExprNode>:
✓ Branch 9 → 10 taken 33 times.
✗ Branch 9 → 15 not taken.
spice::compiler::CustomDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CustomDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CustomDataTypeNode>:
✓ Branch 9 → 10 taken 56600 times.
✗ Branch 9 → 15 not taken.
spice::compiler::GenericTypeDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::GenericTypeDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::GenericTypeDefNode>:
✓ Branch 9 → 10 taken 1923 times.
✗ Branch 9 → 15 not taken.
spice::compiler::LogicalAndExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LogicalAndExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LogicalAndExprNode>:
✓ Branch 9 → 10 taken 981 times.
✗ Branch 9 → 15 not taken.
spice::compiler::RelationalExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::RelationalExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::RelationalExprNode>:
✓ Branch 9 → 10 taken 8258 times.
✗ Branch 9 → 15 not taken.
spice::compiler::FallthroughStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FallthroughStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FallthroughStmtNode>:
✓ Branch 9 → 10 taken 6 times.
✗ Branch 9 → 15 not taken.
spice::compiler::PrefixUnaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::PrefixUnaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::PrefixUnaryExprNode>:
✓ Branch 9 → 10 taken 4337 times.
✗ Branch 9 → 15 not taken.
spice::compiler::TopLevelDefAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TopLevelDefAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TopLevelDefAttrNode>:
✓ Branch 9 → 10 taken 947 times.
✗ Branch 9 → 15 not taken.
spice::compiler::FunctionDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FunctionDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FunctionDataTypeNode>:
✓ Branch 9 → 10 taken 212 times.
✗ Branch 9 → 15 not taken.
spice::compiler::PostfixUnaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::PostfixUnaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::PostfixUnaryExprNode>:
✓ Branch 9 → 10 taken 59475 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AnonymousBlockStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AnonymousBlockStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AnonymousBlockStmtNode>:
✓ Branch 9 → 10 taken 43 times.
✗ Branch 9 → 15 not taken.
spice::compiler::MultiplicativeExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::MultiplicativeExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::MultiplicativeExprNode>:
✓ Branch 9 → 10 taken 3141 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ArrayInitializationNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ArrayInitializationNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ArrayInitializationNode>:
✓ Branch 9 → 10 taken 294 times.
✗ Branch 9 → 15 not taken.
spice::compiler::StructInstantiationNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StructInstantiationNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StructInstantiationNode>:
✓ Branch 9 → 10 taken 927 times.
✗ Branch 9 → 15 not taken.
spice::compiler::TypeLstWithEllipsisNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeLstWithEllipsisNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeLstWithEllipsisNode>:
✓ Branch 9 → 10 taken 2756 times.
✗ Branch 9 → 15 not taken.
spice::compiler::AttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AttrNode>:
✓ Branch 9 → 10 taken 3261 times.
✗ Branch 9 → 15 not taken.
spice::compiler::EntryNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EntryNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EntryNode>:
✓ Branch 9 → 10 taken 2414 times.
✗ Branch 9 → 14 not taken.
spice::compiler::FieldNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FieldNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FieldNode>:
✓ Branch 9 → 10 taken 5288 times.
✗ Branch 9 → 15 not taken.
spice::compiler::ValueNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ValueNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ValueNode>:
✓ Branch 9 → 10 taken 57036 times.
✗ Branch 9 → 15 not taken.
1359193 T *node = resourceManager.astNodeAlloc.allocate<T>(getCodeLoc(ctx));
146
78/156
spice::compiler::ArgLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ArgLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ArgLstNode>:
✓ Branch 10 → 11 taken 38889 times.
✗ Branch 10 → 16 not taken.
spice::compiler::FctDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctDefNode>:
✓ Branch 10 → 11 taken 19899 times.
✗ Branch 10 → 16 not taken.
spice::compiler::IfStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::IfStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::IfStmtNode>:
✓ Branch 10 → 11 taken 10859 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AttrLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AttrLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AttrLstNode>:
✓ Branch 10 → 11 taken 1637 times.
✗ Branch 10 → 16 not taken.
spice::compiler::EnumDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumDefNode>:
✓ Branch 10 → 11 taken 369 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ExtDeclNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ExtDeclNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ExtDeclNode>:
✓ Branch 10 → 11 taken 2963 times.
✗ Branch 10 → 16 not taken.
spice::compiler::FctCallNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctCallNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctCallNode>:
✓ Branch 10 → 11 taken 51774 times.
✗ Branch 10 → 16 not taken.
spice::compiler::FctNameNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctNameNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctNameNode>:
✓ Branch 10 → 11 taken 30433 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ForLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForLoopNode>:
✓ Branch 10 → 11 taken 2820 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ModAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ModAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ModAttrNode>:
✓ Branch 10 → 11 taken 684 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ProcDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ProcDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ProcDefNode>:
✓ Branch 10 → 11 taken 10534 times.
✗ Branch 10 → 16 not taken.
spice::compiler::StmtLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StmtLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StmtLstNode>:
✓ Branch 10 → 11 taken 53569 times.
✗ Branch 10 → 16 not taken.
spice::compiler::TypeLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeLstNode>:
✓ Branch 10 → 11 taken 19642 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AliasDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AliasDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AliasDefNode>:
✓ Branch 10 → 11 taken 342 times.
✗ Branch 10 → 16 not taken.
spice::compiler::CastExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CastExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CastExprNode>:
✓ Branch 10 → 11 taken 6524 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ConstantNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ConstantNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ConstantNode>:
✓ Branch 10 → 11 taken 46037 times.
✗ Branch 10 → 16 not taken.
spice::compiler::DataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DataTypeNode>:
✓ Branch 10 → 11 taken 123231 times.
✗ Branch 10 → 16 not taken.
spice::compiler::DeclStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DeclStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DeclStmtNode>:
✓ Branch 10 → 11 taken 50976 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ElseStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ElseStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ElseStmtNode>:
✓ Branch 10 → 11 taken 952 times.
✗ Branch 10 → 16 not taken.
spice::compiler::EnumItemNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumItemNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumItemNode>:
✓ Branch 10 → 11 taken 4910 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ExprStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ExprStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ExprStmtNode>:
✓ Branch 10 → 11 taken 36635 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ParamLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ParamLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ParamLstNode>:
✓ Branch 10 → 11 taken 22956 times.
✗ Branch 10 → 16 not taken.
spice::compiler::BreakStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BreakStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BreakStmtNode>:
✓ Branch 10 → 11 taken 229 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ImportDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ImportDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ImportDefNode>:
✓ Branch 10 → 11 taken 2528 times.
✗ Branch 10 → 16 not taken.
spice::compiler::QualifierNode* spice::compiler::ASTBuilder::createNode<spice::compiler::QualifierNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::QualifierNode>:
✓ Branch 10 → 11 taken 90941 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ShiftExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ShiftExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ShiftExprNode>:
✓ Branch 10 → 11 taken 762 times.
✗ Branch 10 → 16 not taken.
spice::compiler::SignatureNode* spice::compiler::ASTBuilder::createNode<spice::compiler::SignatureNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::SignatureNode>:
✓ Branch 10 → 11 taken 1333 times.
✗ Branch 10 → 16 not taken.
spice::compiler::StructDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StructDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StructDefNode>:
✓ Branch 10 → 11 taken 2807 times.
✗ Branch 10 → 16 not taken.
spice::compiler::WhileLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::WhileLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::WhileLoopNode>:
✓ Branch 10 → 11 taken 1660 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AssertStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AssertStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AssertStmtNode>:
✓ Branch 10 → 11 taken 3378 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AssignExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AssignExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AssignExprNode>:
✓ Branch 10 → 11 taken 18862 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AtomicExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AtomicExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AtomicExprNode>:
✓ Branch 10 → 11 taken 229894 times.
✗ Branch 10 → 16 not taken.
spice::compiler::CaseBranchNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CaseBranchNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CaseBranchNode>:
✓ Branch 10 → 11 taken 662 times.
✗ Branch 10 → 16 not taken.
spice::compiler::LambdaAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaAttrNode>:
✓ Branch 10 → 11 taken 6 times.
✗ Branch 10 → 16 not taken.
spice::compiler::LambdaExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaExprNode>:
✓ Branch 10 → 11 taken 1 time.
✗ Branch 10 → 16 not taken.
spice::compiler::LambdaFuncNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaFuncNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaFuncNode>:
✓ Branch 10 → 11 taken 22 times.
✗ Branch 10 → 16 not taken.
spice::compiler::LambdaProcNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaProcNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaProcNode>:
✓ Branch 10 → 11 taken 72 times.
✗ Branch 10 → 16 not taken.
spice::compiler::MainFctDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::MainFctDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::MainFctDefNode>:
✓ Branch 10 → 11 taken 545 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ReturnStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ReturnStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ReturnStmtNode>:
✓ Branch 10 → 11 taken 24245 times.
✗ Branch 10 → 16 not taken.
spice::compiler::SwitchStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::SwitchStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::SwitchStmtNode>:
✓ Branch 10 → 11 taken 85 times.
✗ Branch 10 → 16 not taken.
spice::compiler::DoWhileLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DoWhileLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DoWhileLoopNode>:
✓ Branch 10 → 11 taken 16 times.
✗ Branch 10 → 16 not taken.
spice::compiler::EnumItemLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumItemLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumItemLstNode>:
✓ Branch 10 → 11 taken 369 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ForeachLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForeachLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForeachLoopNode>:
✓ Branch 10 → 11 taken 471 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ForwardDeclNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForwardDeclNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForwardDeclNode>:
✓ Branch 10 → 11 taken 7 times.
✗ Branch 10 → 16 not taken.
spice::compiler::TernaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TernaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TernaryExprNode>:
✓ Branch 10 → 11 taken 1142 times.
✗ Branch 10 → 16 not taken.
spice::compiler::TypeAltsLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeAltsLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeAltsLstNode>:
✓ Branch 10 → 11 taken 1923 times.
✗ Branch 10 → 16 not taken.
spice::compiler::UnsafeBlockNode* spice::compiler::ASTBuilder::createNode<spice::compiler::UnsafeBlockNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::UnsafeBlockNode>:
✓ Branch 10 → 11 taken 5321 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AdditiveExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AdditiveExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AdditiveExprNode>:
✓ Branch 10 → 11 taken 7827 times.
✗ Branch 10 → 16 not taken.
spice::compiler::BaseDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BaseDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BaseDataTypeNode>:
✓ Branch 10 → 11 taken 123230 times.
✗ Branch 10 → 16 not taken.
spice::compiler::CaseConstantNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CaseConstantNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CaseConstantNode>:
✓ Branch 10 → 11 taken 847 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ContinueStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ContinueStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ContinueStmtNode>:
✓ Branch 10 → 11 taken 403 times.
✗ Branch 10 → 16 not taken.
spice::compiler::EqualityExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EqualityExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EqualityExprNode>:
✓ Branch 10 → 11 taken 12926 times.
✗ Branch 10 → 16 not taken.
spice::compiler::GlobalVarDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::GlobalVarDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::GlobalVarDefNode>:
✓ Branch 10 → 11 taken 2368 times.
✗ Branch 10 → 16 not taken.
spice::compiler::InterfaceDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::InterfaceDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::InterfaceDefNode>:
✓ Branch 10 → 11 taken 366 times.
✗ Branch 10 → 16 not taken.
spice::compiler::QualifierLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::QualifierLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::QualifierLstNode>:
✓ Branch 10 → 11 taken 77064 times.
✗ Branch 10 → 16 not taken.
spice::compiler::BitwiseOrExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseOrExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseOrExprNode>:
✓ Branch 10 → 11 taken 269 times.
✗ Branch 10 → 16 not taken.
spice::compiler::DefaultBranchNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DefaultBranchNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DefaultBranchNode>:
✓ Branch 10 → 11 taken 69 times.
✗ Branch 10 → 16 not taken.
spice::compiler::LogicalOrExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LogicalOrExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LogicalOrExprNode>:
✓ Branch 10 → 11 taken 1920 times.
✗ Branch 10 → 16 not taken.
spice::compiler::BitwiseAndExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseAndExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseAndExprNode>:
✓ Branch 10 → 11 taken 56 times.
✗ Branch 10 → 16 not taken.
spice::compiler::BitwiseXorExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseXorExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseXorExprNode>:
✓ Branch 10 → 11 taken 33 times.
✗ Branch 10 → 16 not taken.
spice::compiler::CustomDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CustomDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CustomDataTypeNode>:
✓ Branch 10 → 11 taken 56600 times.
✗ Branch 10 → 16 not taken.
spice::compiler::GenericTypeDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::GenericTypeDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::GenericTypeDefNode>:
✓ Branch 10 → 11 taken 1923 times.
✗ Branch 10 → 16 not taken.
spice::compiler::LogicalAndExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LogicalAndExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LogicalAndExprNode>:
✓ Branch 10 → 11 taken 981 times.
✗ Branch 10 → 16 not taken.
spice::compiler::RelationalExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::RelationalExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::RelationalExprNode>:
✓ Branch 10 → 11 taken 8258 times.
✗ Branch 10 → 16 not taken.
spice::compiler::FallthroughStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FallthroughStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FallthroughStmtNode>:
✓ Branch 10 → 11 taken 6 times.
✗ Branch 10 → 16 not taken.
spice::compiler::PrefixUnaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::PrefixUnaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::PrefixUnaryExprNode>:
✓ Branch 10 → 11 taken 4337 times.
✗ Branch 10 → 16 not taken.
spice::compiler::TopLevelDefAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TopLevelDefAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TopLevelDefAttrNode>:
✓ Branch 10 → 11 taken 947 times.
✗ Branch 10 → 16 not taken.
spice::compiler::FunctionDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FunctionDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FunctionDataTypeNode>:
✓ Branch 10 → 11 taken 212 times.
✗ Branch 10 → 16 not taken.
spice::compiler::PostfixUnaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::PostfixUnaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::PostfixUnaryExprNode>:
✓ Branch 10 → 11 taken 59475 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AnonymousBlockStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AnonymousBlockStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AnonymousBlockStmtNode>:
✓ Branch 10 → 11 taken 43 times.
✗ Branch 10 → 16 not taken.
spice::compiler::MultiplicativeExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::MultiplicativeExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::MultiplicativeExprNode>:
✓ Branch 10 → 11 taken 3141 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ArrayInitializationNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ArrayInitializationNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ArrayInitializationNode>:
✓ Branch 10 → 11 taken 294 times.
✗ Branch 10 → 16 not taken.
spice::compiler::StructInstantiationNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StructInstantiationNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StructInstantiationNode>:
✓ Branch 10 → 11 taken 927 times.
✗ Branch 10 → 16 not taken.
spice::compiler::TypeLstWithEllipsisNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeLstWithEllipsisNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeLstWithEllipsisNode>:
✓ Branch 10 → 11 taken 2756 times.
✗ Branch 10 → 16 not taken.
spice::compiler::AttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AttrNode>:
✓ Branch 10 → 11 taken 3261 times.
✗ Branch 10 → 16 not taken.
spice::compiler::EntryNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EntryNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EntryNode>:
✓ Branch 10 → 11 taken 2414 times.
✗ Branch 10 → 15 not taken.
spice::compiler::FieldNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FieldNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FieldNode>:
✓ Branch 10 → 11 taken 5288 times.
✗ Branch 10 → 16 not taken.
spice::compiler::ValueNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ValueNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ValueNode>:
✓ Branch 10 → 11 taken 57036 times.
✗ Branch 10 → 16 not taken.
1359193 resourceManager.nodeToNodeId[node] = currentNodeId++;
147 if constexpr (!std::is_same_v<T, EntryNode>)
148 1356779 node->parent = parentStack.top();
149 // This node is the parent for its children
150
78/156
spice::compiler::ArgLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ArgLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ArgLstNode>:
✓ Branch 12 → 13 taken 38889 times.
✗ Branch 12 → 17 not taken.
spice::compiler::FctDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctDefNode>:
✓ Branch 12 → 13 taken 19899 times.
✗ Branch 12 → 17 not taken.
spice::compiler::IfStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::IfStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::IfStmtNode>:
✓ Branch 12 → 13 taken 10859 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AttrLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AttrLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AttrLstNode>:
✓ Branch 12 → 13 taken 1637 times.
✗ Branch 12 → 17 not taken.
spice::compiler::EnumDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumDefNode>:
✓ Branch 12 → 13 taken 369 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ExtDeclNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ExtDeclNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ExtDeclNode>:
✓ Branch 12 → 13 taken 2963 times.
✗ Branch 12 → 17 not taken.
spice::compiler::FctCallNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctCallNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctCallNode>:
✓ Branch 12 → 13 taken 51774 times.
✗ Branch 12 → 17 not taken.
spice::compiler::FctNameNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FctNameNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FctNameNode>:
✓ Branch 12 → 13 taken 30433 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ForLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForLoopNode>:
✓ Branch 12 → 13 taken 2820 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ModAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ModAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ModAttrNode>:
✓ Branch 12 → 13 taken 684 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ProcDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ProcDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ProcDefNode>:
✓ Branch 12 → 13 taken 10534 times.
✗ Branch 12 → 17 not taken.
spice::compiler::StmtLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StmtLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StmtLstNode>:
✓ Branch 12 → 13 taken 53569 times.
✗ Branch 12 → 17 not taken.
spice::compiler::TypeLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeLstNode>:
✓ Branch 12 → 13 taken 19642 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AliasDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AliasDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AliasDefNode>:
✓ Branch 12 → 13 taken 342 times.
✗ Branch 12 → 17 not taken.
spice::compiler::CastExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CastExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CastExprNode>:
✓ Branch 12 → 13 taken 6524 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ConstantNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ConstantNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ConstantNode>:
✓ Branch 12 → 13 taken 46037 times.
✗ Branch 12 → 17 not taken.
spice::compiler::DataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DataTypeNode>:
✓ Branch 12 → 13 taken 123231 times.
✗ Branch 12 → 17 not taken.
spice::compiler::DeclStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DeclStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DeclStmtNode>:
✓ Branch 12 → 13 taken 50976 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ElseStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ElseStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ElseStmtNode>:
✓ Branch 12 → 13 taken 952 times.
✗ Branch 12 → 17 not taken.
spice::compiler::EnumItemNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumItemNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumItemNode>:
✓ Branch 12 → 13 taken 4910 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ExprStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ExprStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ExprStmtNode>:
✓ Branch 12 → 13 taken 36635 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ParamLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ParamLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ParamLstNode>:
✓ Branch 12 → 13 taken 22956 times.
✗ Branch 12 → 17 not taken.
spice::compiler::BreakStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BreakStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BreakStmtNode>:
✓ Branch 12 → 13 taken 229 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ImportDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ImportDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ImportDefNode>:
✓ Branch 12 → 13 taken 2528 times.
✗ Branch 12 → 17 not taken.
spice::compiler::QualifierNode* spice::compiler::ASTBuilder::createNode<spice::compiler::QualifierNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::QualifierNode>:
✓ Branch 12 → 13 taken 90941 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ShiftExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ShiftExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ShiftExprNode>:
✓ Branch 12 → 13 taken 762 times.
✗ Branch 12 → 17 not taken.
spice::compiler::SignatureNode* spice::compiler::ASTBuilder::createNode<spice::compiler::SignatureNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::SignatureNode>:
✓ Branch 12 → 13 taken 1333 times.
✗ Branch 12 → 17 not taken.
spice::compiler::StructDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StructDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StructDefNode>:
✓ Branch 12 → 13 taken 2807 times.
✗ Branch 12 → 17 not taken.
spice::compiler::WhileLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::WhileLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::WhileLoopNode>:
✓ Branch 12 → 13 taken 1660 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AssertStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AssertStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AssertStmtNode>:
✓ Branch 12 → 13 taken 3378 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AssignExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AssignExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AssignExprNode>:
✓ Branch 12 → 13 taken 18862 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AtomicExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AtomicExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AtomicExprNode>:
✓ Branch 12 → 13 taken 229894 times.
✗ Branch 12 → 17 not taken.
spice::compiler::CaseBranchNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CaseBranchNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CaseBranchNode>:
✓ Branch 12 → 13 taken 662 times.
✗ Branch 12 → 17 not taken.
spice::compiler::LambdaAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaAttrNode>:
✓ Branch 12 → 13 taken 6 times.
✗ Branch 12 → 17 not taken.
spice::compiler::LambdaExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaExprNode>:
✓ Branch 12 → 13 taken 1 time.
✗ Branch 12 → 17 not taken.
spice::compiler::LambdaFuncNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaFuncNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaFuncNode>:
✓ Branch 12 → 13 taken 22 times.
✗ Branch 12 → 17 not taken.
spice::compiler::LambdaProcNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LambdaProcNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LambdaProcNode>:
✓ Branch 12 → 13 taken 72 times.
✗ Branch 12 → 17 not taken.
spice::compiler::MainFctDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::MainFctDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::MainFctDefNode>:
✓ Branch 12 → 13 taken 545 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ReturnStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ReturnStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ReturnStmtNode>:
✓ Branch 12 → 13 taken 24245 times.
✗ Branch 12 → 17 not taken.
spice::compiler::SwitchStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::SwitchStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::SwitchStmtNode>:
✓ Branch 12 → 13 taken 85 times.
✗ Branch 12 → 17 not taken.
spice::compiler::DoWhileLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DoWhileLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DoWhileLoopNode>:
✓ Branch 12 → 13 taken 16 times.
✗ Branch 12 → 17 not taken.
spice::compiler::EnumItemLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EnumItemLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EnumItemLstNode>:
✓ Branch 12 → 13 taken 369 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ForeachLoopNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForeachLoopNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForeachLoopNode>:
✓ Branch 12 → 13 taken 471 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ForwardDeclNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ForwardDeclNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ForwardDeclNode>:
✓ Branch 12 → 13 taken 7 times.
✗ Branch 12 → 17 not taken.
spice::compiler::TernaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TernaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TernaryExprNode>:
✓ Branch 12 → 13 taken 1142 times.
✗ Branch 12 → 17 not taken.
spice::compiler::TypeAltsLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeAltsLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeAltsLstNode>:
✓ Branch 12 → 13 taken 1923 times.
✗ Branch 12 → 17 not taken.
spice::compiler::UnsafeBlockNode* spice::compiler::ASTBuilder::createNode<spice::compiler::UnsafeBlockNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::UnsafeBlockNode>:
✓ Branch 12 → 13 taken 5321 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AdditiveExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AdditiveExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AdditiveExprNode>:
✓ Branch 12 → 13 taken 7827 times.
✗ Branch 12 → 17 not taken.
spice::compiler::BaseDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BaseDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BaseDataTypeNode>:
✓ Branch 12 → 13 taken 123230 times.
✗ Branch 12 → 17 not taken.
spice::compiler::CaseConstantNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CaseConstantNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CaseConstantNode>:
✓ Branch 12 → 13 taken 847 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ContinueStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ContinueStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ContinueStmtNode>:
✓ Branch 12 → 13 taken 403 times.
✗ Branch 12 → 17 not taken.
spice::compiler::EqualityExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EqualityExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EqualityExprNode>:
✓ Branch 12 → 13 taken 12926 times.
✗ Branch 12 → 17 not taken.
spice::compiler::GlobalVarDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::GlobalVarDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::GlobalVarDefNode>:
✓ Branch 12 → 13 taken 2368 times.
✗ Branch 12 → 17 not taken.
spice::compiler::InterfaceDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::InterfaceDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::InterfaceDefNode>:
✓ Branch 12 → 13 taken 366 times.
✗ Branch 12 → 17 not taken.
spice::compiler::QualifierLstNode* spice::compiler::ASTBuilder::createNode<spice::compiler::QualifierLstNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::QualifierLstNode>:
✓ Branch 12 → 13 taken 77064 times.
✗ Branch 12 → 17 not taken.
spice::compiler::BitwiseOrExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseOrExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseOrExprNode>:
✓ Branch 12 → 13 taken 269 times.
✗ Branch 12 → 17 not taken.
spice::compiler::DefaultBranchNode* spice::compiler::ASTBuilder::createNode<spice::compiler::DefaultBranchNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::DefaultBranchNode>:
✓ Branch 12 → 13 taken 69 times.
✗ Branch 12 → 17 not taken.
spice::compiler::LogicalOrExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LogicalOrExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LogicalOrExprNode>:
✓ Branch 12 → 13 taken 1920 times.
✗ Branch 12 → 17 not taken.
spice::compiler::BitwiseAndExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseAndExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseAndExprNode>:
✓ Branch 12 → 13 taken 56 times.
✗ Branch 12 → 17 not taken.
spice::compiler::BitwiseXorExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::BitwiseXorExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::BitwiseXorExprNode>:
✓ Branch 12 → 13 taken 33 times.
✗ Branch 12 → 17 not taken.
spice::compiler::CustomDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::CustomDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::CustomDataTypeNode>:
✓ Branch 12 → 13 taken 56600 times.
✗ Branch 12 → 17 not taken.
spice::compiler::GenericTypeDefNode* spice::compiler::ASTBuilder::createNode<spice::compiler::GenericTypeDefNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::GenericTypeDefNode>:
✓ Branch 12 → 13 taken 1923 times.
✗ Branch 12 → 17 not taken.
spice::compiler::LogicalAndExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::LogicalAndExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::LogicalAndExprNode>:
✓ Branch 12 → 13 taken 981 times.
✗ Branch 12 → 17 not taken.
spice::compiler::RelationalExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::RelationalExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::RelationalExprNode>:
✓ Branch 12 → 13 taken 8258 times.
✗ Branch 12 → 17 not taken.
spice::compiler::FallthroughStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FallthroughStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FallthroughStmtNode>:
✓ Branch 12 → 13 taken 6 times.
✗ Branch 12 → 17 not taken.
spice::compiler::PrefixUnaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::PrefixUnaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::PrefixUnaryExprNode>:
✓ Branch 12 → 13 taken 4337 times.
✗ Branch 12 → 17 not taken.
spice::compiler::TopLevelDefAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TopLevelDefAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TopLevelDefAttrNode>:
✓ Branch 12 → 13 taken 947 times.
✗ Branch 12 → 17 not taken.
spice::compiler::FunctionDataTypeNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FunctionDataTypeNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FunctionDataTypeNode>:
✓ Branch 12 → 13 taken 212 times.
✗ Branch 12 → 17 not taken.
spice::compiler::PostfixUnaryExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::PostfixUnaryExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::PostfixUnaryExprNode>:
✓ Branch 12 → 13 taken 59475 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AnonymousBlockStmtNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AnonymousBlockStmtNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AnonymousBlockStmtNode>:
✓ Branch 12 → 13 taken 43 times.
✗ Branch 12 → 17 not taken.
spice::compiler::MultiplicativeExprNode* spice::compiler::ASTBuilder::createNode<spice::compiler::MultiplicativeExprNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::MultiplicativeExprNode>:
✓ Branch 12 → 13 taken 3141 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ArrayInitializationNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ArrayInitializationNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ArrayInitializationNode>:
✓ Branch 12 → 13 taken 294 times.
✗ Branch 12 → 17 not taken.
spice::compiler::StructInstantiationNode* spice::compiler::ASTBuilder::createNode<spice::compiler::StructInstantiationNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::StructInstantiationNode>:
✓ Branch 12 → 13 taken 927 times.
✗ Branch 12 → 17 not taken.
spice::compiler::TypeLstWithEllipsisNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TypeLstWithEllipsisNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TypeLstWithEllipsisNode>:
✓ Branch 12 → 13 taken 2756 times.
✗ Branch 12 → 17 not taken.
spice::compiler::AttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::AttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::AttrNode>:
✓ Branch 12 → 13 taken 3261 times.
✗ Branch 12 → 17 not taken.
spice::compiler::EntryNode* spice::compiler::ASTBuilder::createNode<spice::compiler::EntryNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::EntryNode>:
✓ Branch 11 → 12 taken 2414 times.
✗ Branch 11 → 16 not taken.
spice::compiler::FieldNode* spice::compiler::ASTBuilder::createNode<spice::compiler::FieldNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::FieldNode>:
✓ Branch 12 → 13 taken 5288 times.
✗ Branch 12 → 17 not taken.
spice::compiler::ValueNode* spice::compiler::ASTBuilder::createNode<spice::compiler::ValueNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::ValueNode>:
✓ Branch 12 → 13 taken 57036 times.
✗ Branch 12 → 17 not taken.
1359193 parentStack.push(node);
151 1359193 return node;
152 }
153
154 template <typename T>
155 ALWAYS_INLINE T *resumeForExpansion() const
156 requires std::is_base_of_v<ASTNode, T>
157 {
158
1/2
✓ Branch 3 → 4 taken 25677 times.
✗ Branch 3 → 5 not taken.
51354 return spice_pointer_cast<T *>(parentStack.top());
159 }
160
161 template <typename T>
162 ALWAYS_INLINE T *concludeNode(T *node)
163 requires std::is_base_of_v<ASTNode, T>
164 {
165 // This node is no longer the parent for its children
166
74/139
✓ Branch 5 → 6 taken 6 times.
✗ Branch 5 → 16 not taken.
✓ Branch 6 → 7 taken 23570 times.
✓ Branch 6 → 8 taken 6 times.
✗ Branch 6 → 19 not taken.
✓ Branch 7 → 8 taken 43015 times.
✓ Branch 7 → 9 taken 23570 times.
✗ Branch 7 → 20 not taken.
✓ Branch 8 → 9 taken 41645 times.
✓ Branch 8 → 10 taken 43015 times.
✗ Branch 8 → 21 not taken.
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 41645 times.
✓ Branch 10 → 11 taken 28492 times.
✗ Branch 10 → 23 not taken.
✗ Branch 10 → 24 not taken.
✗ Branch 10 → 26 not taken.
✓ Branch 11 → 12 taken 3599 times.
✓ Branch 11 → 13 taken 28492 times.
✗ Branch 11 → 25 not taken.
✗ Branch 11 → 27 not taken.
✓ Branch 12 → 13 taken 5542 times.
✓ Branch 12 → 14 taken 3599 times.
✗ Branch 12 → 23 not taken.
✗ Branch 12 → 26 not taken.
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 5542 times.
✓ Branch 14 → 15 taken 1 time.
✗ Branch 14 → 30 not taken.
✓ Branch 15 → 16 taken 4330 times.
✓ Branch 15 → 17 taken 1 time.
✗ Branch 15 → 29 not taken.
✗ Branch 15 → 31 not taken.
✓ Branch 16 → 17 taken 2528 times.
✓ Branch 16 → 18 taken 4330 times.
✗ Branch 16 → 29 not taken.
✓ Branch 17 → 18 taken 85 times.
✓ Branch 17 → 19 taken 2528 times.
✗ Branch 17 → 36 not taken.
✓ Branch 18 → 19 taken 64411 times.
✓ Branch 18 → 20 taken 85 times.
✗ Branch 18 → 34 not taken.
✗ Branch 18 → 35 not taken.
✗ Branch 18 → 37 not taken.
✓ Branch 19 → 20 taken 5288 times.
✓ Branch 19 → 21 taken 64411 times.
✗ Branch 19 → 36 not taken.
✓ Branch 20 → 21 taken 22956 times.
✓ Branch 20 → 22 taken 5288 times.
✗ Branch 20 → 33 not taken.
✓ Branch 21 → 22 taken 1302 times.
✓ Branch 21 → 23 taken 22956 times.
✗ Branch 21 → 34 not taken.
✗ Branch 21 → 40 not taken.
✗ Branch 22 → 23 not taken.
✓ Branch 22 → 24 taken 1302 times.
✓ Branch 23 → 24 taken 342 times.
✗ Branch 23 → 41 not taken.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 26 taken 342 times.
✓ Branch 25 → 26 taken 22 times.
✗ Branch 25 → 47 not taken.
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 28 taken 22 times.
✓ Branch 27 → 28 taken 7 times.
✗ Branch 27 → 44 not taken.
✗ Branch 28 → 29 not taken.
✓ Branch 28 → 30 taken 7 times.
✓ Branch 32 → 33 taken 30433 times.
✗ Branch 32 → 51 not taken.
✓ Branch 33 → 34 taken 77432 times.
✓ Branch 33 → 35 taken 30433 times.
✗ Branch 33 → 50 not taken.
✗ Branch 33 → 56 not taken.
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 36 taken 77432 times.
✓ Branch 41 → 42 taken 90941 times.
✗ Branch 41 → 52 not taken.
✗ Branch 42 → 43 not taken.
✓ Branch 42 → 44 taken 90941 times.
✓ Branch 45 → 46 taken 123230 times.
✗ Branch 45 → 61 not taken.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 48 taken 123230 times.
✓ Branch 47 → 48 taken 2963 times.
✗ Branch 47 → 67 not taken.
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 2963 times.
✓ Branch 50 → 51 taken 56600 times.
✗ Branch 50 → 72 not taken.
✓ Branch 51 → 52 taken 46035 times.
✓ Branch 51 → 53 taken 56600 times.
✗ Branch 51 → 70 not taken.
✓ Branch 52 → 53 taken 3260 times.
✓ Branch 52 → 54 taken 46035 times.
✗ Branch 52 → 80 not taken.
✓ Branch 53 → 54 taken 57883 times.
✓ Branch 53 → 55 taken 3260 times.
✗ Branch 53 → 76 not taken.
✗ Branch 53 → 84 not taken.
✓ Branch 54 → 55 taken 10534 times.
✓ Branch 54 → 56 taken 57883 times.
✗ Branch 54 → 82 not taken.
✗ Branch 55 → 56 not taken.
✓ Branch 55 → 57 taken 10534 times.
✓ Branch 57 → 58 taken 927 times.
✗ Branch 57 → 82 not taken.
✓ Branch 58 → 59 taken 19899 times.
✓ Branch 58 → 60 taken 927 times.
✗ Branch 58 → 89 not taken.
✗ Branch 59 → 60 not taken.
✓ Branch 59 → 61 taken 19899 times.
✓ Branch 61 → 62 taken 123230 times.
✗ Branch 61 → 93 not taken.
✗ Branch 62 → 63 not taken.
✓ Branch 62 → 64 taken 123230 times.
✓ Branch 63 → 64 taken 1333 times.
✗ Branch 63 → 102 not taken.
✓ Branch 64 → 65 taken 51774 times.
✓ Branch 64 → 66 taken 1333 times.
✗ Branch 64 → 89 not taken.
✗ Branch 65 → 66 not taken.
✓ Branch 65 → 67 taken 51774 times.
✓ Branch 83 → 84 taken 366 times.
✗ Branch 83 → 125 not taken.
✗ Branch 84 → 85 not taken.
✓ Branch 84 → 86 taken 366 times.
✓ Branch 93 → 94 taken 2806 times.
✗ Branch 93 → 138 not taken.
✗ Branch 94 → 95 not taken.
✓ Branch 94 → 96 taken 2806 times.
✓ Branch 114 → 115 taken 53565 times.
✗ Branch 114 → 166 not taken.
✗ Branch 115 → 116 not taken.
✓ Branch 115 → 117 taken 53565 times.
✓ Branch 145 → 146 taken 2408 times.
✗ Branch 145 → 208 not taken.
✗ Branch 146 → 147 not taken.
✓ Branch 146 → 148 taken 2408 times.
1002760 assert(parentStack.top() == node);
167
37/84
✓ Branch 8 → 9 taken 6 times.
✗ Branch 8 → 16 not taken.
✓ Branch 9 → 10 taken 23570 times.
✗ Branch 9 → 19 not taken.
✓ Branch 10 → 11 taken 43015 times.
✗ Branch 10 → 20 not taken.
✓ Branch 11 → 12 taken 41645 times.
✗ Branch 11 → 21 not taken.
✓ Branch 13 → 14 taken 28492 times.
✗ Branch 13 → 23 not taken.
✗ Branch 13 → 24 not taken.
✗ Branch 13 → 26 not taken.
✓ Branch 14 → 15 taken 3599 times.
✗ Branch 14 → 25 not taken.
✗ Branch 14 → 27 not taken.
✓ Branch 15 → 16 taken 5542 times.
✗ Branch 15 → 23 not taken.
✗ Branch 15 → 26 not taken.
✓ Branch 17 → 18 taken 1 time.
✗ Branch 17 → 30 not taken.
✓ Branch 18 → 19 taken 4330 times.
✗ Branch 18 → 29 not taken.
✗ Branch 18 → 31 not taken.
✓ Branch 19 → 20 taken 2528 times.
✗ Branch 19 → 29 not taken.
✓ Branch 20 → 21 taken 85 times.
✗ Branch 20 → 36 not taken.
✓ Branch 21 → 22 taken 64411 times.
✗ Branch 21 → 34 not taken.
✗ Branch 21 → 35 not taken.
✗ Branch 21 → 37 not taken.
✓ Branch 22 → 23 taken 5288 times.
✗ Branch 22 → 36 not taken.
✓ Branch 23 → 24 taken 22956 times.
✗ Branch 23 → 33 not taken.
✓ Branch 24 → 25 taken 1302 times.
✗ Branch 24 → 34 not taken.
✗ Branch 24 → 40 not taken.
✓ Branch 26 → 27 taken 342 times.
✗ Branch 26 → 41 not taken.
✓ Branch 28 → 29 taken 22 times.
✗ Branch 28 → 47 not taken.
✓ Branch 30 → 31 taken 7 times.
✗ Branch 30 → 44 not taken.
✓ Branch 35 → 36 taken 30433 times.
✗ Branch 35 → 51 not taken.
✓ Branch 36 → 37 taken 77432 times.
✗ Branch 36 → 50 not taken.
✗ Branch 36 → 56 not taken.
✓ Branch 44 → 45 taken 90941 times.
✗ Branch 44 → 52 not taken.
✓ Branch 48 → 49 taken 123230 times.
✗ Branch 48 → 61 not taken.
✓ Branch 50 → 51 taken 2963 times.
✗ Branch 50 → 67 not taken.
✓ Branch 53 → 54 taken 56600 times.
✗ Branch 53 → 72 not taken.
✓ Branch 54 → 55 taken 46035 times.
✗ Branch 54 → 70 not taken.
✓ Branch 55 → 56 taken 3260 times.
✗ Branch 55 → 80 not taken.
✓ Branch 56 → 57 taken 57883 times.
✗ Branch 56 → 76 not taken.
✗ Branch 56 → 84 not taken.
✓ Branch 57 → 58 taken 10534 times.
✗ Branch 57 → 82 not taken.
✓ Branch 60 → 61 taken 927 times.
✗ Branch 60 → 82 not taken.
✓ Branch 61 → 62 taken 19899 times.
✗ Branch 61 → 89 not taken.
✓ Branch 64 → 65 taken 123230 times.
✗ Branch 64 → 93 not taken.
✓ Branch 66 → 67 taken 1333 times.
✗ Branch 66 → 102 not taken.
✓ Branch 67 → 68 taken 51774 times.
✗ Branch 67 → 89 not taken.
✓ Branch 86 → 87 taken 366 times.
✗ Branch 86 → 125 not taken.
✓ Branch 96 → 97 taken 2806 times.
✗ Branch 96 → 138 not taken.
✓ Branch 117 → 118 taken 53565 times.
✗ Branch 117 → 166 not taken.
✓ Branch 148 → 149 taken 2408 times.
✗ Branch 148 → 208 not taken.
1002760 parentStack.pop();
168 1002760 return node;
169 }
170
171 template <typename T>
172 ALWAYS_INLINE ExprNode *concludeExprNode(T* node)
173 requires std::is_base_of_v<ExprNode, T>
174 {
175 // This node is no longer the parent for its children
176
24/45
✓ Branch 12 → 13 taken 3259 times.
✗ Branch 12 → 26 not taken.
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 3259 times.
✓ Branch 18 → 19 taken 12926 times.
✗ Branch 18 → 32 not taken.
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 21 taken 12926 times.
✓ Branch 23 → 24 taken 6524 times.
✗ Branch 23 → 42 not taken.
✓ Branch 24 → 25 taken 8258 times.
✓ Branch 24 → 26 taken 6524 times.
✗ Branch 24 → 38 not taken.
✗ Branch 25 → 26 not taken.
✓ Branch 25 → 27 taken 8258 times.
✓ Branch 29 → 30 taken 18862 times.
✗ Branch 29 → 49 not taken.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 18862 times.
✓ Branch 35 → 36 taken 1142 times.
✗ Branch 35 → 60 not taken.
✗ Branch 36 → 37 not taken.
✓ Branch 36 → 38 taken 1142 times.
✓ Branch 41 → 42 taken 59475 times.
✗ Branch 41 → 61 not taken.
✓ Branch 42 → 43 taken 7827 times.
✓ Branch 42 → 44 taken 59475 times.
✗ Branch 42 → 61 not taken.
✓ Branch 43 → 44 taken 4337 times.
✓ Branch 43 → 45 taken 7827 times.
✗ Branch 43 → 59 not taken.
✗ Branch 44 → 45 not taken.
✓ Branch 44 → 46 taken 4337 times.
✓ Branch 47 → 48 taken 3141 times.
✗ Branch 47 → 68 not taken.
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 3141 times.
✓ Branch 50 → 51 taken 762 times.
✗ Branch 50 → 69 not taken.
✗ Branch 51 → 52 not taken.
✓ Branch 51 → 53 taken 762 times.
✓ Branch 76 → 77 taken 229892 times.
✗ Branch 76 → 112 not taken.
✗ Branch 77 → 78 not taken.
✓ Branch 77 → 79 taken 229892 times.
356405 assert(parentStack.top() == node);
177
12/24
✓ Branch 15 → 16 taken 3259 times.
✗ Branch 15 → 26 not taken.
✓ Branch 21 → 22 taken 12926 times.
✗ Branch 21 → 32 not taken.
✓ Branch 26 → 27 taken 6524 times.
✗ Branch 26 → 42 not taken.
✓ Branch 27 → 28 taken 8258 times.
✗ Branch 27 → 38 not taken.
✓ Branch 32 → 33 taken 18862 times.
✗ Branch 32 → 49 not taken.
✓ Branch 38 → 39 taken 1142 times.
✗ Branch 38 → 60 not taken.
✓ Branch 44 → 45 taken 59475 times.
✗ Branch 44 → 61 not taken.
✓ Branch 45 → 46 taken 7827 times.
✗ Branch 45 → 61 not taken.
✓ Branch 46 → 47 taken 4337 times.
✗ Branch 46 → 59 not taken.
✓ Branch 50 → 51 taken 3141 times.
✗ Branch 50 → 68 not taken.
✓ Branch 53 → 54 taken 762 times.
✗ Branch 53 → 69 not taken.
✓ Branch 79 → 80 taken 229892 times.
✗ Branch 79 → 112 not taken.
356405 parentStack.pop();
178 356405 return node;
179 }
180
181 ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const {
182
1/3
✓ Branch 2 → 3 taken 1359193 times.
✗ Branch 2 → 14 not taken.
✗ Branch 2 → 15 not taken.
1359193 const size_t startIdx = ctx->start->getStartIndex();
183
2/5
✓ Branch 3 → 4 taken 1359193 times.
✗ Branch 3 → 6 not taken.
✓ Branch 4 → 5 taken 1359193 times.
✗ Branch 4 → 14 not taken.
✗ Branch 4 → 15 not taken.
1359193 const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx;
184
1/3
✓ Branch 7 → 8 taken 1359193 times.
✗ Branch 7 → 14 not taken.
✗ Branch 7 → 15 not taken.
1359193 return {ctx->start, startIdx, stopIdx, sourceFile};
185 }
186
187 int32_t parseInt(TerminalNode *terminal, bool isNegative = false);
188 int16_t parseShort(TerminalNode *terminal, bool isNegative = false);
189 int64_t parseLong(TerminalNode *terminal, bool isNegative = false);
190 int8_t parseChar(TerminalNode *terminal) const;
191 static std::string parseString(std::string input);
192 template <typename T> T parseNumeric(TerminalNode *terminal, const NumericParserCallback<T> &cb);
193 static void replaceEscapeChars(std::string &input);
194 std::string getIdentifier(TerminalNode *terminal, bool isTypeIdentifier) const;
195 };
196
197 } // namespace spice::compiler
198