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.5% 373 / 0 / 711

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 85674 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 85674 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 13 → 6 taken 1168 times.
✓ Branch 13 → 14 taken 874 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 13 → 6 taken 2832 times.
✓ Branch 13 → 14 taken 1406 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 13 → 6 taken 13201 times.
✓ Branch 13 → 14 taken 9158 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 13 → 6 taken 14816 times.
✓ Branch 13 → 14 taken 9745 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 13 → 6 taken 1186 times.
✓ Branch 13 → 14 taken 78 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 13 → 6 taken 39688 times.
✓ Branch 13 → 14 taken 32976 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 13 → 6 taken 8392 times.
✓ Branch 13 → 14 taken 4196 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 13 → 6 taken 25716 times.
✓ Branch 13 → 14 taken 16109 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 13 → 6 taken 53 times.
✓ Branch 13 → 14 taken 12 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 13 → 6 taken 234 times.
✓ Branch 13 → 14 taken 101 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 13 → 6 taken 70 times.
✓ Branch 13 → 14 taken 53 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 13 → 6 taken 69 times.
✓ Branch 13 → 14 taken 34 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 13 → 6 taken 568 times.
✓ Branch 13 → 14 taken 267 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 13 → 6 taken 23 times.
✓ Branch 13 → 14 taken 11 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 13 → 6 taken 173 times.
✓ Branch 13 → 14 taken 86 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 13 → 6 taken 2427 times.
✓ Branch 13 → 14 taken 1060 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 13 → 6 taken 11082 times.
✓ Branch 13 → 14 taken 5541 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 13 → 6 taken 8381 times.
✓ Branch 13 → 14 taken 3966 times.
215752 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 7 → 8 taken 1167 times.
✓ Branch 7 → 17 taken 1 time.
✓ Branch 8 → 9 taken 1167 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 1167 times.
✗ Branch 9 → 15 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 7 → 8 taken 2832 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 2832 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 2832 times.
✗ Branch 9 → 15 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 7 → 8 taken 13201 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 13201 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 13201 times.
✗ Branch 9 → 15 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 7 → 8 taken 14816 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 14816 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 14816 times.
✗ Branch 9 → 15 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 7 → 8 taken 1186 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 1186 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 1186 times.
✗ Branch 9 → 15 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 7 → 8 taken 39688 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 39688 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 39688 times.
✗ Branch 9 → 15 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 7 → 8 taken 8392 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 8392 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 8392 times.
✗ Branch 9 → 15 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 7 → 8 taken 25716 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 25716 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 25716 times.
✗ Branch 9 → 15 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 7 → 8 taken 53 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 53 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 53 times.
✗ Branch 9 → 15 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 7 → 8 taken 234 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 234 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 234 times.
✗ Branch 9 → 15 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 7 → 8 taken 70 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 70 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 70 times.
✗ Branch 9 → 15 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 7 → 8 taken 69 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 69 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 69 times.
✗ Branch 9 → 15 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 7 → 8 taken 568 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 568 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 568 times.
✗ Branch 9 → 15 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 7 → 8 taken 23 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 23 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 23 times.
✗ Branch 9 → 15 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 7 → 8 taken 173 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 173 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 173 times.
✗ Branch 9 → 15 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 7 → 8 taken 2427 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 2427 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 2427 times.
✗ Branch 9 → 15 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 7 → 8 taken 11082 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 11082 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 11082 times.
✗ Branch 9 → 15 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 7 → 8 taken 8381 times.
✗ Branch 7 → 17 not taken.
✓ Branch 8 → 9 taken 8381 times.
✗ Branch 8 → 15 not taken.
✓ Branch 9 → 10 taken 8381 times.
✗ Branch 9 → 15 not taken.
130079 tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr)));
137 85673 }
138
139 template <typename T>
140 574017 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 16109 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 8410 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 4450 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 875 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 78 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 1102 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 20132 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 12748 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 1473 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 381 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 4338 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 23133 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 8152 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 109 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 2958 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 21766 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 52181 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 22148 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 250 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 1186 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 15778 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 9745 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 127 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 650 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 39688 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 101 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 243 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 756 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 839 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 780 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 8192 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 100544 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 53 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 5 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 16 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 20 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 445 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 10179 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 12 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 8 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 78 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 124 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 494 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 1006 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 2741 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 3966 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 52180 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 70 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 213 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 5541 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 1262 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 107 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 32976 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 86 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 6 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 1060 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 34 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 11 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 19264 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 1006 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 267 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 4196 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 1508 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 102 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 26214 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 33 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 1406 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 75 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 233 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 1060 times.
✗ Branch 9 → 15 not taken.
spice::compiler::TopLevelDefinitionAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TopLevelDefinitionAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TopLevelDefinitionAttrNode>:
✓ Branch 9 → 10 taken 489 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 1168 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 1251 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 1587 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 22036 times.
✗ Branch 9 → 15 not taken.
574017 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 16109 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 8410 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 4450 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 875 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 78 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 1102 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 20132 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 12748 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 1473 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 381 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 4338 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 23133 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 8152 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 109 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 2958 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 21766 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 52181 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 22148 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 250 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 1186 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 15778 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 9745 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 127 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 650 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 39688 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 101 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 243 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 756 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 839 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 780 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 8192 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 100544 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 53 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 5 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 16 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 20 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 445 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 10179 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 12 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 8 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 78 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 124 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 494 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 1006 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 2741 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 3966 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 52180 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 70 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 213 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 5541 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 1262 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 107 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 32976 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 86 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 6 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 1060 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 34 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 11 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 19264 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 1006 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 267 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 4196 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 1508 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 102 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 26214 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 33 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 1406 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 75 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 233 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 1060 times.
✗ Branch 10 → 16 not taken.
spice::compiler::TopLevelDefinitionAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TopLevelDefinitionAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TopLevelDefinitionAttrNode>:
✓ Branch 10 → 11 taken 489 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 1168 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 1251 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 1587 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 22036 times.
✗ Branch 10 → 16 not taken.
574017 resourceManager.nodeToNodeId[node] = currentNodeId++;
146 if constexpr (!std::is_same_v<T, EntryNode>)
147 572766 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 16109 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 8410 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 4450 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 875 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 78 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 1102 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 20132 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 12748 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 1473 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 381 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 4338 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 23133 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 8152 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 109 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 2958 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 21766 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 52181 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 22148 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 250 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 1186 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 15778 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 9745 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 127 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 650 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 39688 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 101 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 243 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 756 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 839 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 780 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 8192 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 100544 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 53 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 5 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 16 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 20 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 445 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 10179 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 12 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 8 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 78 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 124 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 494 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 1006 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 2741 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 3966 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 52180 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 70 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 213 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 5541 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 1262 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 107 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 32976 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 86 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 6 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 1060 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 34 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 11 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 19264 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 1006 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 267 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 4196 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 1508 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 102 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 26214 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 33 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 1406 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 75 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 233 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 1060 times.
✗ Branch 12 → 17 not taken.
spice::compiler::TopLevelDefinitionAttrNode* spice::compiler::ASTBuilder::createNode<spice::compiler::TopLevelDefinitionAttrNode>(antlr4::ParserRuleContext const*) requires is_base_of_v<spice::compiler::ASTNode, spice::compiler::TopLevelDefinitionAttrNode>:
✓ Branch 12 → 13 taken 489 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 1168 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 1251 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 1587 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 22036 times.
✗ Branch 12 → 17 not taken.
574017 parentStack.push(node);
150 574017 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 11646 times.
✗ Branch 3 → 5 not taken.
23292 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
34/68
✗ Branch 6 → 7 not taken.
✓ Branch 6 → 8 taken 6 times.
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 10110 times.
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 19047 times.
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 17169 times.
✗ Branch 11 → 12 not taken.
✓ Branch 11 → 13 taken 11904 times.
✗ Branch 12 → 13 not taken.
✓ Branch 12 → 14 taken 1853 times.
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 11271 times.
✗ Branch 14 → 15 not taken.
✓ Branch 14 → 16 taken 385 times.
✗ Branch 15 → 16 not taken.
✓ Branch 15 → 17 taken 1 time.
✗ Branch 16 → 17 not taken.
✓ Branch 16 → 18 taken 1030 times.
✗ Branch 17 → 18 not taken.
✓ Branch 17 → 19 taken 650 times.
✗ Branch 18 → 19 not taken.
✓ Branch 18 → 20 taken 12 times.
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 21 taken 27958 times.
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 22 taken 1587 times.
✗ Branch 22 → 23 not taken.
✓ Branch 22 → 24 taken 461 times.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 26 taken 109 times.
✗ Branch 26 → 27 not taken.
✓ Branch 26 → 28 taken 33069 times.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 12748 times.
✗ Branch 34 → 35 not taken.
✓ Branch 34 → 36 taken 39688 times.
✗ Branch 40 → 41 not taken.
✓ Branch 40 → 42 taken 20366 times.
✗ Branch 46 → 47 not taken.
✓ Branch 46 → 48 taken 52180 times.
✗ Branch 47 → 48 not taken.
✓ Branch 47 → 49 taken 4571 times.
✗ Branch 48 → 49 not taken.
✓ Branch 48 → 50 taken 21764 times.
✗ Branch 50 → 51 not taken.
✓ Branch 50 → 52 taken 70 times.
✗ Branch 51 → 52 not taken.
✓ Branch 51 → 53 taken 8410 times.
✗ Branch 52 → 53 not taken.
✓ Branch 52 → 54 taken 1167 times.
✗ Branch 53 → 54 not taken.
✓ Branch 53 → 55 taken 20132 times.
✗ Branch 54 → 55 not taken.
✓ Branch 54 → 56 taken 22036 times.
✗ Branch 63 → 64 not taken.
✓ Branch 63 → 65 taken 52180 times.
✗ Branch 64 → 65 not taken.
✓ Branch 64 → 66 taken 243 times.
✗ Branch 68 → 69 not taken.
✓ Branch 68 → 70 taken 107 times.
✗ Branch 78 → 79 not taken.
✓ Branch 78 → 80 taken 755 times.
✗ Branch 107 → 108 not taken.
✓ Branch 107 → 109 taken 23129 times.
✗ Branch 129 → 130 not taken.
✓ Branch 129 → 131 taken 1245 times.
417413 assert(parentStack.top() == node);
166 417413 parentStack.pop();
167 417413 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
12/24
✗ Branch 13 → 14 not taken.
✓ Branch 13 → 15 taken 1458 times.
✗ Branch 19 → 20 not taken.
✓ Branch 19 → 21 taken 5541 times.
✗ Branch 24 → 25 not taken.
✓ Branch 24 → 26 taken 2958 times.
✗ Branch 25 → 26 not taken.
✓ Branch 25 → 27 taken 4196 times.
✗ Branch 30 → 31 not taken.
✓ Branch 30 → 32 taken 8192 times.
✗ Branch 35 → 36 not taken.
✓ Branch 35 → 37 taken 3966 times.
✗ Branch 36 → 37 not taken.
✓ Branch 36 → 38 taken 494 times.
✗ Branch 40 → 41 not taken.
✓ Branch 40 → 42 taken 1406 times.
✗ Branch 42 → 43 not taken.
✓ Branch 42 → 44 taken 26214 times.
✗ Branch 43 → 44 not taken.
✓ Branch 43 → 45 taken 101 times.
✗ Branch 44 → 45 not taken.
✓ Branch 44 → 46 taken 1508 times.
✗ Branch 73 → 74 not taken.
✓ Branch 73 → 75 taken 100542 times.
156576 assert(parentStack.top() == node);
176 156576 parentStack.pop();
177 156576 return node;
178 }
179
180 ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const {
181
1/3
✓ Branch 2 → 3 taken 574017 times.
✗ Branch 2 → 14 not taken.
✗ Branch 2 → 15 not taken.
574017 const size_t startIdx = ctx->start->getStartIndex();
182
2/5
✓ Branch 3 → 4 taken 574017 times.
✗ Branch 3 → 6 not taken.
✓ Branch 4 → 5 taken 574017 times.
✗ Branch 4 → 14 not taken.
✗ Branch 4 → 15 not taken.
574017 const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx;
183
1/3
✓ Branch 7 → 8 taken 574017 times.
✗ Branch 7 → 14 not taken.
✗ Branch 7 → 15 not taken.
574017 return {ctx->start, startIdx, stopIdx, sourceFile};
184 }
185
186 int32_t parseInt(TerminalNode *terminal);
187 int16_t parseShort(TerminalNode *terminal);
188 int64_t parseLong(TerminalNode *terminal);
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