GCC Code Coverage Report


Directory: ../
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 561 / 0 / 561
Functions: 100.0% 95 / 0 / 95
Branches: 52.0% 471 / 0 / 905

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 visitEnumDef(SpiceParser::EnumDefContext *ctx) override;
50 std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override;
51 std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override;
52 std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override;
53 std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override;
54 std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override;
55 std::any visitForHead(SpiceParser::ForHeadContext *ctx) override;
56 std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override;
57 std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override;
58 std::any visitWhileLoop(SpiceParser::WhileLoopContext *ctx) override;
59 std::any visitDoWhileLoop(SpiceParser::DoWhileLoopContext *ctx) override;
60 std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override;
61 std::any visitElseStmt(SpiceParser::ElseStmtContext *ctx) override;
62 std::any visitSwitchStmt(SpiceParser::SwitchStmtContext *ctx) override;
63 std::any visitCaseBranch(SpiceParser::CaseBranchContext *ctx) override;
64 std::any visitDefaultBranch(SpiceParser::DefaultBranchContext *ctx) override;
65 std::any visitAnonymousBlockStmt(SpiceParser::AnonymousBlockStmtContext *ctx) override;
66 std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override;
67 std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override;
68 std::any visitTypeLstWithEllipsis(SpiceParser::TypeLstWithEllipsisContext *ctx) override;
69 std::any visitTypeAltsLst(SpiceParser::TypeAltsLstContext *ctx) override;
70 std::any visitParamLst(SpiceParser::ParamLstContext *ctx) override;
71 std::any visitArgLst(SpiceParser::ArgLstContext *ctx) override;
72 std::any visitEnumItemLst(SpiceParser::EnumItemLstContext *ctx) override;
73 std::any visitEnumItem(SpiceParser::EnumItemContext *ctx) override;
74 std::any visitField(SpiceParser::FieldContext *ctx) override;
75 std::any visitSignature(SpiceParser::SignatureContext *ctx) override;
76 std::any visitStmt(SpiceParser::StmtContext *ctx) override;
77 std::any visitDeclStmt(SpiceParser::DeclStmtContext *ctx) override;
78 std::any visitExprStmt(SpiceParser::ExprStmtContext *ctx) override;
79 std::any visitQualifierLst(SpiceParser::QualifierLstContext *ctx) override;
80 std::any visitQualifier(SpiceParser::QualifierContext *ctx) override;
81 std::any visitTopLevelDefAttr(SpiceParser::TopLevelDefAttrContext *ctx) override;
82 std::any visitLambdaAttr(SpiceParser::LambdaAttrContext *ctx) override;
83 std::any visitModAttr(SpiceParser::ModAttrContext *ctx) override;
84 std::any visitAttrLst(SpiceParser::AttrLstContext *ctx) override;
85 std::any visitAttr(SpiceParser::AttrContext *ctx) override;
86 std::any visitCaseConstant(SpiceParser::CaseConstantContext *ctx) override;
87 std::any visitReturnStmt(SpiceParser::ReturnStmtContext *ctx) override;
88 std::any visitBreakStmt(SpiceParser::BreakStmtContext *ctx) override;
89 std::any visitContinueStmt(SpiceParser::ContinueStmtContext *ctx) override;
90 std::any visitFallthroughStmt(SpiceParser::FallthroughStmtContext *ctx) override;
91 std::any visitAssertStmt(SpiceParser::AssertStmtContext *ctx) override;
92 std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override;
93 std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override;
94 std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override;
95 std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override;
96 std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override;
97 std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override;
98 std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override;
99 std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override;
100 std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override;
101 std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override;
102 std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override;
103 std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override;
104 std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override;
105 std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override;
106 std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override;
107 std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override;
108 std::any visitValue(SpiceParser::ValueContext *ctx) override;
109 std::any visitFctCall(SpiceParser::FctCallContext *ctx) override;
110 std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override;
111 std::any visitStructInstantiation(SpiceParser::StructInstantiationContext *ctx) override;
112 std::any visitLambdaFunc(SpiceParser::LambdaFuncContext *ctx) override;
113 std::any visitLambdaProc(SpiceParser::LambdaProcContext *ctx) override;
114 std::any visitLambdaExpr(SpiceParser::LambdaExprContext *ctx) override;
115 std::any visitConstant(SpiceParser::ConstantContext *ctx) override;
116 std::any visitDataType(SpiceParser::DataTypeContext *ctx) override;
117 std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override;
118 std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override;
119 std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override;
120 std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override;
121 std::any visitOverloadableOp(SpiceParser::OverloadableOpContext *ctx) override;
122
123 private:
124 // Members
125 antlr4::ANTLRInputStream *inputStream;
126 std::stack<ASTNode *> parentStack;
127 size_t currentNodeId = 0;
128
129 // Private methods
130 template <typename SrcTy, typename TgtTy>
131 200295 void fetchChildrenIntoVector(std::vector<TgtTy> &tgt, const std::vector<SrcTy> &src)
132 requires(std::is_pointer_v<SrcTy> && std::is_pointer_v<TgtTy>)
133 {
134 200295 tgt.reserve(src.size());
135
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 3285 times.
✓ Branch 21 → 22 taken 1635 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 6438 times.
✓ Branch 21 → 22 taken 3183 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 30873 times.
✓ Branch 21 → 22 taken 21784 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 33721 times.
✓ Branch 21 → 22 taken 23015 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 91332 times.
✓ Branch 21 → 22 taken 77402 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 16534 times.
✓ Branch 21 → 22 taken 8267 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 59976 times.
✓ Branch 21 → 22 taken 39091 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 1752 times.
✓ Branch 21 → 22 taken 759 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 2325 times.
✓ Branch 21 → 22 taken 985 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 543 times.
✓ Branch 21 → 22 taken 271 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 4478 times.
✓ Branch 21 → 22 taken 1926 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 25896 times.
✓ Branch 21 → 22 taken 12948 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 16565 times.
✓ Branch 21 → 22 taken 7823 times.
700906 for (SrcTy shiftExpr : src)
136
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 3284 times.
✓ Branch 8 → 25 taken 1 time.
✓ Branch 9 → 10 taken 3284 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 3284 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 6438 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 6438 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 6438 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 30873 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 30873 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 30873 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 33721 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 33721 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 33721 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 91332 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 91332 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 91332 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 16534 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 16534 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 16534 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 59976 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 59976 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 59976 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 1752 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 1752 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 1752 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 2325 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 2325 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 2325 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 543 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 543 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 543 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 4478 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 4478 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 4478 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 25896 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 25896 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 25896 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 16565 times.
✗ Branch 8 → 25 not taken.
✓ Branch 9 → 10 taken 16565 times.
✗ Branch 9 → 23 not taken.
✓ Branch 10 → 11 taken 16565 times.
✗ Branch 10 → 23 not taken.
300317 tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr)));
137 200294 }
138
139 template <typename T>
140 1365582 T *createNode(const ParserRuleContext *ctx)
141 requires std::is_base_of_v<ASTNode, T>
142 {
143 // Create the new node
144
77/154
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 39091 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 19937 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 10912 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 1636 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 2971 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 52065 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 30528 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 2828 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 688 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 10591 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 53773 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 19855 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 343 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 6598 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 46119 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 123931 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 51275 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 958 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 36849 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 23015 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 2517 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 91332 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 759 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 1317 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 2808 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 3353 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 18914 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 230865 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 73 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 537 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 24293 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 470 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 1150 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 1929 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 5379 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 7823 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 123930 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 12948 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 2379 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 365 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 77402 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 271 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 1926 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 56886 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 1929 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 985 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 8267 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 4449 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 942 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 217 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 59882 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 35 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 3183 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 300 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 2763 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 3285 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 2405 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 5311 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 57370 times.
✗ Branch 9 → 15 not taken.
1365582 T *node = resourceManager.astNodeAlloc.allocate<T>(getCodeLoc(ctx));
145
77/154
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 39091 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 19937 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 10912 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 1636 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 2971 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 52065 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 30528 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 2828 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 688 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 10591 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 53773 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 19855 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 343 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 6598 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 46119 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 123931 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 51275 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 958 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 36849 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 23015 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 2517 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 91332 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 759 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 1317 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 2808 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 3353 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 18914 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 230865 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 73 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 537 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 24293 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 470 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 1150 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 1929 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 5379 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 7823 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 123930 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 12948 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 2379 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 365 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 77402 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 271 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 1926 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 56886 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 1929 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 985 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 8267 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 4449 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 942 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 217 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 59882 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 35 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 3183 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 300 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 2763 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 3285 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 2405 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 5311 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 57370 times.
✗ Branch 10 → 16 not taken.
1365582 resourceManager.nodeToNodeId[node] = currentNodeId++;
146 if constexpr (!std::is_same_v<T, EntryNode>)
147 1363177 node->parent = parentStack.top();
148 // This node is the parent for its children
149
77/154
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 39091 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 19937 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 10912 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 1636 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 2971 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 52065 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 30528 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 2828 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 688 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 10591 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 53773 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 19855 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 343 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 6598 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 46119 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 123931 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 51275 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 958 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 36849 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 23015 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 2517 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 91332 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 759 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 1317 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 2808 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 3353 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 18914 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 230865 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 73 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 537 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 24293 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 470 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 1150 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 1929 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 5379 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 7823 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 123930 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 12948 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 2379 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 365 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 77402 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 271 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 1926 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 56886 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 1929 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 985 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 8267 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 4449 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 942 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 217 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 59882 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 35 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 3183 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 300 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 2763 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 3285 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 2405 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 5311 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 57370 times.
✗ Branch 12 → 17 not taken.
1365582 parentStack.push(node);
150 1365582 return node;
151 }
152
153 template <typename T>
154 ALWAYS_INLINE T *resumeForExpansion() const
155 requires std::is_base_of_v<ASTNode, T>
156 {
157
1/2
✓ Branch 3 → 4 taken 25750 times.
✗ Branch 3 → 5 not taken.
51500 return spice_pointer_cast<T *>(parentStack.top());
158 }
159
160 template <typename T>
161 ALWAYS_INLINE T *concludeNode(T *node)
162 requires std::is_base_of_v<ASTNode, T>
163 {
164 // This node is no longer the parent for its children
165
72/135
✓ Branch 5 → 6 taken 6 times.
✗ Branch 5 → 16 not taken.
✓ Branch 6 → 7 taken 23788 times.
✓ Branch 6 → 8 taken 6 times.
✗ Branch 6 → 19 not taken.
✓ Branch 7 → 8 taken 43274 times.
✓ Branch 7 → 9 taken 23788 times.
✗ Branch 7 → 20 not taken.
✓ Branch 8 → 9 taken 41854 times.
✓ Branch 8 → 10 taken 43274 times.
✗ Branch 8 → 21 not taken.
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 41854 times.
✓ Branch 10 → 11 taken 28553 times.
✗ Branch 10 → 23 not taken.
✗ Branch 10 → 24 not taken.
✗ Branch 10 → 26 not taken.
✓ Branch 11 → 12 taken 3605 times.
✓ Branch 11 → 13 taken 28553 times.
✗ Branch 11 → 25 not taken.
✗ Branch 11 → 27 not taken.
✓ Branch 12 → 13 taken 5542 times.
✓ Branch 12 → 14 taken 3605 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 4311 times.
✓ Branch 15 → 17 taken 1 time.
✗ Branch 15 → 29 not taken.
✗ Branch 15 → 31 not taken.
✓ Branch 16 → 17 taken 2517 times.
✓ Branch 16 → 18 taken 4311 times.
✗ Branch 16 → 29 not taken.
✓ Branch 17 → 18 taken 85 times.
✓ Branch 17 → 19 taken 2517 times.
✗ Branch 17 → 36 not taken.
✓ Branch 18 → 19 taken 64779 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 5311 times.
✓ Branch 19 → 21 taken 64779 times.
✗ Branch 19 → 36 not taken.
✓ Branch 20 → 21 taken 23015 times.
✓ Branch 20 → 22 taken 5311 times.
✗ Branch 20 → 33 not taken.
✓ Branch 21 → 22 taken 1299 times.
✓ Branch 21 → 23 taken 23015 times.
✗ Branch 21 → 34 not taken.
✗ Branch 21 → 40 not taken.
✗ Branch 22 → 23 not taken.
✓ Branch 22 → 24 taken 1299 times.
✓ Branch 23 → 24 taken 343 times.
✗ Branch 23 → 41 not taken.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 26 taken 343 times.
✓ Branch 25 → 26 taken 22 times.
✗ Branch 25 → 47 not taken.
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 28 taken 22 times.
✓ Branch 32 → 33 taken 30528 times.
✗ Branch 32 → 51 not taken.
✓ Branch 33 → 34 taken 77770 times.
✓ Branch 33 → 35 taken 30528 times.
✗ Branch 33 → 50 not taken.
✗ Branch 33 → 56 not taken.
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 36 taken 77770 times.
✓ Branch 41 → 42 taken 91332 times.
✗ Branch 41 → 52 not taken.
✗ Branch 42 → 43 not taken.
✓ Branch 42 → 44 taken 91332 times.
✓ Branch 45 → 46 taken 123930 times.
✗ Branch 45 → 61 not taken.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 48 taken 123930 times.
✓ Branch 47 → 48 taken 2971 times.
✗ Branch 47 → 67 not taken.
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 2971 times.
✓ Branch 50 → 51 taken 56886 times.
✗ Branch 50 → 72 not taken.
✓ Branch 51 → 52 taken 46117 times.
✓ Branch 51 → 53 taken 56886 times.
✗ Branch 51 → 70 not taken.
✓ Branch 52 → 53 taken 3284 times.
✓ Branch 52 → 54 taken 46117 times.
✗ Branch 52 → 80 not taken.
✓ Branch 53 → 54 taken 58217 times.
✓ Branch 53 → 55 taken 3284 times.
✗ Branch 53 → 76 not taken.
✗ Branch 53 → 84 not taken.
✓ Branch 54 → 55 taken 10591 times.
✓ Branch 54 → 56 taken 58217 times.
✗ Branch 54 → 82 not taken.
✗ Branch 55 → 56 not taken.
✓ Branch 55 → 57 taken 10591 times.
✓ Branch 57 → 58 taken 927 times.
✗ Branch 57 → 82 not taken.
✓ Branch 58 → 59 taken 19937 times.
✓ Branch 58 → 60 taken 927 times.
✗ Branch 58 → 89 not taken.
✗ Branch 59 → 60 not taken.
✓ Branch 59 → 61 taken 19937 times.
✓ Branch 61 → 62 taken 123930 times.
✗ Branch 61 → 93 not taken.
✗ Branch 62 → 63 not taken.
✓ Branch 62 → 64 taken 123930 times.
✓ Branch 63 → 64 taken 1317 times.
✗ Branch 63 → 102 not taken.
✓ Branch 64 → 65 taken 52065 times.
✓ Branch 64 → 66 taken 1317 times.
✗ Branch 64 → 89 not taken.
✗ Branch 65 → 66 not taken.
✓ Branch 65 → 67 taken 52065 times.
✓ Branch 83 → 84 taken 365 times.
✗ Branch 83 → 125 not taken.
✗ Branch 84 → 85 not taken.
✓ Branch 84 → 86 taken 365 times.
✓ Branch 93 → 94 taken 2807 times.
✗ Branch 93 → 138 not taken.
✗ Branch 94 → 95 not taken.
✓ Branch 94 → 96 taken 2807 times.
✓ Branch 114 → 115 taken 53769 times.
✗ Branch 114 → 166 not taken.
✗ Branch 115 → 116 not taken.
✓ Branch 115 → 117 taken 53769 times.
✓ Branch 136 → 137 taken 2399 times.
✗ Branch 136 → 195 not taken.
✗ Branch 137 → 138 not taken.
✓ Branch 137 → 139 taken 2399 times.
1007447 assert(parentStack.top() == node);
166
36/82
✓ Branch 8 → 9 taken 6 times.
✗ Branch 8 → 16 not taken.
✓ Branch 9 → 10 taken 23788 times.
✗ Branch 9 → 19 not taken.
✓ Branch 10 → 11 taken 43274 times.
✗ Branch 10 → 20 not taken.
✓ Branch 11 → 12 taken 41854 times.
✗ Branch 11 → 21 not taken.
✓ Branch 13 → 14 taken 28553 times.
✗ Branch 13 → 23 not taken.
✗ Branch 13 → 24 not taken.
✗ Branch 13 → 26 not taken.
✓ Branch 14 → 15 taken 3605 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 4311 times.
✗ Branch 18 → 29 not taken.
✗ Branch 18 → 31 not taken.
✓ Branch 19 → 20 taken 2517 times.
✗ Branch 19 → 29 not taken.
✓ Branch 20 → 21 taken 85 times.
✗ Branch 20 → 36 not taken.
✓ Branch 21 → 22 taken 64779 times.
✗ Branch 21 → 34 not taken.
✗ Branch 21 → 35 not taken.
✗ Branch 21 → 37 not taken.
✓ Branch 22 → 23 taken 5311 times.
✗ Branch 22 → 36 not taken.
✓ Branch 23 → 24 taken 23015 times.
✗ Branch 23 → 33 not taken.
✓ Branch 24 → 25 taken 1299 times.
✗ Branch 24 → 34 not taken.
✗ Branch 24 → 40 not taken.
✓ Branch 26 → 27 taken 343 times.
✗ Branch 26 → 41 not taken.
✓ Branch 28 → 29 taken 22 times.
✗ Branch 28 → 47 not taken.
✓ Branch 35 → 36 taken 30528 times.
✗ Branch 35 → 51 not taken.
✓ Branch 36 → 37 taken 77770 times.
✗ Branch 36 → 50 not taken.
✗ Branch 36 → 56 not taken.
✓ Branch 44 → 45 taken 91332 times.
✗ Branch 44 → 52 not taken.
✓ Branch 48 → 49 taken 123930 times.
✗ Branch 48 → 61 not taken.
✓ Branch 50 → 51 taken 2971 times.
✗ Branch 50 → 67 not taken.
✓ Branch 53 → 54 taken 56886 times.
✗ Branch 53 → 72 not taken.
✓ Branch 54 → 55 taken 46117 times.
✗ Branch 54 → 70 not taken.
✓ Branch 55 → 56 taken 3284 times.
✗ Branch 55 → 80 not taken.
✓ Branch 56 → 57 taken 58217 times.
✗ Branch 56 → 76 not taken.
✗ Branch 56 → 84 not taken.
✓ Branch 57 → 58 taken 10591 times.
✗ Branch 57 → 82 not taken.
✓ Branch 60 → 61 taken 927 times.
✗ Branch 60 → 82 not taken.
✓ Branch 61 → 62 taken 19937 times.
✗ Branch 61 → 89 not taken.
✓ Branch 64 → 65 taken 123930 times.
✗ Branch 64 → 93 not taken.
✓ Branch 66 → 67 taken 1317 times.
✗ Branch 66 → 102 not taken.
✓ Branch 67 → 68 taken 52065 times.
✗ Branch 67 → 89 not taken.
✓ Branch 86 → 87 taken 365 times.
✗ Branch 86 → 125 not taken.
✓ Branch 96 → 97 taken 2807 times.
✗ Branch 96 → 138 not taken.
✓ Branch 117 → 118 taken 53769 times.
✗ Branch 117 → 166 not taken.
✓ Branch 139 → 140 taken 2399 times.
✗ Branch 139 → 195 not taken.
1007447 parentStack.pop();
167 1007447 return node;
168 }
169
170 template <typename T>
171 ALWAYS_INLINE ExprNode *concludeExprNode(T* node)
172 requires std::is_base_of_v<ExprNode, T>
173 {
174 // This node is no longer the parent for its children
175
24/45
✓ Branch 12 → 13 taken 3271 times.
✗ Branch 12 → 26 not taken.
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 3271 times.
✓ Branch 18 → 19 taken 12948 times.
✗ Branch 18 → 32 not taken.
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 21 taken 12948 times.
✓ Branch 23 → 24 taken 6598 times.
✗ Branch 23 → 42 not taken.
✓ Branch 24 → 25 taken 8267 times.
✓ Branch 24 → 26 taken 6598 times.
✗ Branch 24 → 38 not taken.
✗ Branch 25 → 26 not taken.
✓ Branch 25 → 27 taken 8267 times.
✓ Branch 29 → 30 taken 18914 times.
✗ Branch 29 → 49 not taken.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 18914 times.
✓ Branch 35 → 36 taken 1150 times.
✗ Branch 35 → 60 not taken.
✗ Branch 36 → 37 not taken.
✓ Branch 36 → 38 taken 1150 times.
✓ Branch 41 → 42 taken 59882 times.
✗ Branch 41 → 61 not taken.
✓ Branch 42 → 43 taken 7823 times.
✓ Branch 42 → 44 taken 59882 times.
✗ Branch 42 → 61 not taken.
✓ Branch 43 → 44 taken 4449 times.
✓ Branch 43 → 45 taken 7823 times.
✗ Branch 43 → 59 not taken.
✗ Branch 44 → 45 not taken.
✓ Branch 44 → 46 taken 4449 times.
✓ Branch 47 → 48 taken 3183 times.
✗ Branch 47 → 68 not taken.
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 3183 times.
✓ Branch 50 → 51 taken 759 times.
✗ Branch 50 → 69 not taken.
✗ Branch 51 → 52 not taken.
✓ Branch 51 → 53 taken 759 times.
✓ Branch 76 → 77 taken 230863 times.
✗ Branch 76 → 112 not taken.
✗ Branch 77 → 78 not taken.
✓ Branch 77 → 79 taken 230863 times.
358107 assert(parentStack.top() == node);
176
12/24
✓ Branch 15 → 16 taken 3271 times.
✗ Branch 15 → 26 not taken.
✓ Branch 21 → 22 taken 12948 times.
✗ Branch 21 → 32 not taken.
✓ Branch 26 → 27 taken 6598 times.
✗ Branch 26 → 42 not taken.
✓ Branch 27 → 28 taken 8267 times.
✗ Branch 27 → 38 not taken.
✓ Branch 32 → 33 taken 18914 times.
✗ Branch 32 → 49 not taken.
✓ Branch 38 → 39 taken 1150 times.
✗ Branch 38 → 60 not taken.
✓ Branch 44 → 45 taken 59882 times.
✗ Branch 44 → 61 not taken.
✓ Branch 45 → 46 taken 7823 times.
✗ Branch 45 → 61 not taken.
✓ Branch 46 → 47 taken 4449 times.
✗ Branch 46 → 59 not taken.
✓ Branch 50 → 51 taken 3183 times.
✗ Branch 50 → 68 not taken.
✓ Branch 53 → 54 taken 759 times.
✗ Branch 53 → 69 not taken.
✓ Branch 79 → 80 taken 230863 times.
✗ Branch 79 → 112 not taken.
358107 parentStack.pop();
177 358107 return node;
178 }
179
180 ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const {
181
1/3
✓ Branch 2 → 3 taken 1365582 times.
✗ Branch 2 → 14 not taken.
✗ Branch 2 → 15 not taken.
1365582 const size_t startIdx = ctx->start->getStartIndex();
182
2/5
✓ Branch 3 → 4 taken 1365582 times.
✗ Branch 3 → 6 not taken.
✓ Branch 4 → 5 taken 1365582 times.
✗ Branch 4 → 14 not taken.
✗ Branch 4 → 15 not taken.
1365582 const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx;
183
1/3
✓ Branch 7 → 8 taken 1365582 times.
✗ Branch 7 → 14 not taken.
✗ Branch 7 → 15 not taken.
1365582 return {ctx->start, startIdx, stopIdx, sourceFile};
184 }
185
186 int32_t parseInt(TerminalNode *terminal, bool isNegative = false);
187 int16_t parseShort(TerminalNode *terminal, bool isNegative = false);
188 int64_t parseLong(TerminalNode *terminal, bool isNegative = false);
189 int8_t parseChar(TerminalNode *terminal) const;
190 static std::string parseString(std::string input);
191 template <typename T> T parseNumeric(TerminalNode *terminal, const NumericParserCallback<T> &cb);
192 static void replaceEscapeChars(std::string &input);
193 std::string getIdentifier(TerminalNode *terminal, bool isTypeIdentifier) const;
194 };
195
196 } // namespace spice::compiler
197