GCC Code Coverage Report


Directory: ../
File: src/ast/ASTBuilder.h
Date: 2025-08-26 18:26:32
Exec Total Coverage
Lines: 17 17 100.0%
Functions: 103 103 100.0%
Branches: 437 870 50.2%

Line Branch Exec Source
1 // Copyright (c) 2021-2025 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 visitBuiltinCall(SpiceParser::BuiltinCallContext *ctx) override;
93 std::any visitPrintfCall(SpiceParser::PrintfCallContext *ctx) override;
94 std::any visitSizeOfCall(SpiceParser::SizeOfCallContext *ctx) override;
95 std::any visitAlignOfCall(SpiceParser::AlignOfCallContext *ctx) override;
96 std::any visitTypeIdCall(SpiceParser::TypeIdCallContext *ctx) override;
97 std::any visitLenCall(SpiceParser::LenCallContext *ctx) override;
98 std::any visitPanicCall(SpiceParser::PanicCallContext *ctx) override;
99 std::any visitSysCall(SpiceParser::SysCallContext *ctx) override;
100 std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override;
101 std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override;
102 std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override;
103 std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override;
104 std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override;
105 std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override;
106 std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override;
107 std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override;
108 std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override;
109 std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override;
110 std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override;
111 std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override;
112 std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override;
113 std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override;
114 std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override;
115 std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override;
116 std::any visitValue(SpiceParser::ValueContext *ctx) override;
117 std::any visitFctCall(SpiceParser::FctCallContext *ctx) override;
118 std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override;
119 std::any visitStructInstantiation(SpiceParser::StructInstantiationContext *ctx) override;
120 std::any visitLambdaFunc(SpiceParser::LambdaFuncContext *ctx) override;
121 std::any visitLambdaProc(SpiceParser::LambdaProcContext *ctx) override;
122 std::any visitLambdaExpr(SpiceParser::LambdaExprContext *ctx) override;
123 std::any visitConstant(SpiceParser::ConstantContext *ctx) override;
124 std::any visitDataType(SpiceParser::DataTypeContext *ctx) override;
125 std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override;
126 std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override;
127 std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override;
128 std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override;
129 std::any visitOverloadableOp(SpiceParser::OverloadableOpContext *ctx) override;
130
131 private:
132 // Members
133 antlr4::ANTLRInputStream *inputStream;
134 std::stack<ASTNode *> parentStack;
135
136 // Private methods
137 template <typename SrcTy, typename TgtTy>
138 719442 void fetchChildrenIntoVector(std::vector<TgtTy> &tgt, const std::vector<SrcTy> &src)
139 requires(std::is_pointer_v<SrcTy> && std::is_pointer_v<TgtTy>)
140 {
141 719442 tgt.reserve(src.size());
142
2/2
✓ Branch 0 (13→6) taken 753906 times.
✓ Branch 1 (13→14) taken 719421 times.
1473327 for (SrcTy shiftExpr : src)
143
4/6
✓ Branch 0 (7→8) taken 753885 times.
✓ Branch 1 (7→17) taken 21 times.
✓ Branch 2 (8→9) taken 753885 times.
✗ Branch 3 (8→15) not taken.
✓ Branch 4 (9→10) taken 753885 times.
✗ Branch 5 (9→15) not taken.
753906 tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr)));
144 719421 }
145
146 template <typename T>
147 1469339 T *createNode(const ParserRuleContext *ctx)
148 requires std::is_base_of_v<ASTNode, T>
149 {
150 // Create the new node
151
1/2
✓ Branch 0 (9→10) taken 1469339 times.
✗ Branch 1 (9→14) not taken.
1469339 T *node = resourceManager.astNodeAlloc.allocate<T>(getCodeLoc(ctx));
152 if constexpr (!std::is_same_v<T, EntryNode>)
153 1468275 node->parent = parentStack.top();
154 // This node is the parent for its children
155
1/2
✓ Branch 0 (11→12) taken 1469339 times.
✗ Branch 1 (11→15) not taken.
1469339 parentStack.push(node);
156 1469339 return node;
157 }
158
159 template <typename T>
160 ALWAYS_INLINE T *resumeForExpansion() const
161 requires std::is_base_of_v<ASTNode, T>
162 {
163
4/8
✓ Branch 0 (3→4) taken 1559 times.
✗ Branch 1 (3→5) not taken.
✓ Branch 2 (3→4) taken 6616 times.
✗ Branch 3 (3→5) not taken.
✓ Branch 4 (3→4) taken 100 times.
✗ Branch 5 (3→5) not taken.
✓ Branch 6 (3→4) taken 1237 times.
✗ Branch 7 (3→5) not taken.
19024 return spice_pointer_cast<T *>(parentStack.top());
164 }
165
166 template <typename T>
167 ALWAYS_INLINE T *concludeNode(T *node)
168 requires std::is_base_of_v<ASTNode, T>
169 {
170 // This node is no longer the parent for its children
171
85/170
✗ Branch 0 (19→20) not taken.
✓ Branch 1 (19→21) taken 82 times.
✗ Branch 2 (40→41) not taken.
✓ Branch 3 (40→42) taken 14671 times.
✗ Branch 4 (46→47) not taken.
✓ Branch 5 (46→48) taken 41529 times.
✗ Branch 6 (63→64) not taken.
✓ Branch 7 (63→65) taken 41529 times.
✗ Branch 8 (15→16) not taken.
✓ Branch 9 (15→17) taken 1 times.
✗ Branch 10 (22→23) not taken.
✓ Branch 11 (22→24) taken 27 times.
✗ Branch 12 (26→27) not taken.
✓ Branch 13 (26→28) taken 12 times.
✗ Branch 14 (47→48) not taken.
✓ Branch 15 (47→49) taken 213 times.
✗ Branch 16 (11→12) not taken.
✓ Branch 17 (11→13) taken 70 times.
✗ Branch 18 (53→54) not taken.
✓ Branch 19 (53→55) taken 14347 times.
✗ Branch 20 (48→49) not taken.
✓ Branch 21 (48→50) taken 16509 times.
✗ Branch 22 (54→55) not taken.
✓ Branch 23 (54→56) taken 15841 times.
✗ Branch 24 (80→81) not taken.
✓ Branch 25 (80→82) taken 80716 times.
✗ Branch 26 (38→39) not taken.
✓ Branch 27 (38→40) taken 102330 times.
✗ Branch 28 (40→41) not taken.
✓ Branch 29 (40→42) taken 81833 times.
✗ Branch 30 (20→21) not taken.
✓ Branch 31 (20→22) taken 76549 times.
✗ Branch 32 (34→35) not taken.
✓ Branch 33 (34→36) taken 75348 times.
✗ Branch 34 (29→30) not taken.
✓ Branch 35 (29→31) taken 71621 times.
✗ Branch 36 (37→38) not taken.
✓ Branch 37 (37→39) taken 71506 times.
✗ Branch 38 (19→20) not taken.
✓ Branch 39 (19→21) taken 68022 times.
✗ Branch 40 (13→14) not taken.
✓ Branch 41 (13→15) taken 63426 times.
✗ Branch 42 (7→8) not taken.
✓ Branch 43 (7→9) taken 63402 times.
✗ Branch 44 (7→8) not taken.
✓ Branch 45 (7→9) taken 63393 times.
✗ Branch 46 (7→8) not taken.
✓ Branch 47 (7→9) taken 63325 times.
✗ Branch 48 (7→8) not taken.
✓ Branch 49 (7→9) taken 63086 times.
✗ Branch 50 (7→8) not taken.
✓ Branch 51 (7→9) taken 61945 times.
✗ Branch 52 (30→31) not taken.
✓ Branch 53 (30→32) taken 61112 times.
✗ Branch 54 (26→27) not taken.
✓ Branch 55 (26→28) taken 67552 times.
✗ Branch 56 (7→8) not taken.
✓ Branch 57 (7→9) taken 1 times.
✗ Branch 58 (8→9) not taken.
✓ Branch 59 (8→10) taken 805 times.
✗ Branch 60 (8→9) not taken.
✓ Branch 61 (8→10) taken 119 times.
✗ Branch 62 (16→17) not taken.
✓ Branch 63 (16→18) taken 2 times.
✗ Branch 64 (16→17) not taken.
✓ Branch 65 (16→18) taken 11 times.
✗ Branch 66 (16→17) not taken.
✓ Branch 67 (16→18) taken 217 times.
✗ Branch 68 (15→16) not taken.
✓ Branch 69 (15→17) taken 799 times.
✗ Branch 70 (54→55) not taken.
✓ Branch 71 (54→56) taken 1954 times.
✗ Branch 72 (16→17) not taken.
✓ Branch 73 (16→18) taken 687 times.
✗ Branch 74 (6→7) not taken.
✓ Branch 75 (6→8) taken 6 times.
✗ Branch 76 (13→14) not taken.
✓ Branch 77 (13→15) taken 183 times.
✗ Branch 78 (13→14) not taken.
✓ Branch 79 (13→15) taken 105 times.
✗ Branch 80 (11→12) not taken.
✓ Branch 81 (11→13) taken 8541 times.
✗ Branch 82 (50→51) not taken.
✓ Branch 83 (50→52) taken 70 times.
✗ Branch 84 (52→53) not taken.
✓ Branch 85 (52→54) taken 1176 times.
✗ Branch 86 (7→8) not taken.
✓ Branch 87 (7→9) taken 733 times.
✗ Branch 88 (14→15) not taken.
✓ Branch 89 (14→16) taken 16 times.
✗ Branch 90 (8→9) not taken.
✓ Branch 91 (8→10) taken 413 times.
✗ Branch 92 (14→15) not taken.
✓ Branch 93 (14→16) taken 304 times.
✗ Branch 94 (34→35) not taken.
✓ Branch 95 (34→36) taken 32671 times.
✗ Branch 96 (26→27) not taken.
✓ Branch 97 (26→28) taken 26924 times.
✗ Branch 98 (8→9) not taken.
✓ Branch 99 (8→10) taken 12455 times.
✗ Branch 100 (19→20) not taken.
✓ Branch 101 (19→21) taken 18208 times.
✗ Branch 102 (64→65) not taken.
✓ Branch 103 (64→66) taken 194 times.
✗ Branch 104 (20→21) not taken.
✓ Branch 105 (20→22) taken 1321 times.
✗ Branch 106 (13→14) not taken.
✓ Branch 107 (13→15) taken 742 times.
✗ Branch 108 (7→8) not taken.
✓ Branch 109 (7→9) taken 66 times.
✗ Branch 110 (9→10) not taken.
✓ Branch 111 (9→11) taken 11321 times.
✗ Branch 112 (13→14) not taken.
✓ Branch 113 (13→15) taken 8024 times.
✗ Branch 114 (7→8) not taken.
✓ Branch 115 (7→9) taken 815 times.
✗ Branch 116 (9→10) not taken.
✓ Branch 117 (9→11) taken 882 times.
✗ Branch 118 (7→8) not taken.
✓ Branch 119 (7→9) taken 5598 times.
✗ Branch 120 (107→108) not taken.
✓ Branch 121 (107→109) taken 19078 times.
✗ Branch 122 (8→9) not taken.
✓ Branch 123 (8→10) taken 28 times.
✗ Branch 124 (8→9) not taken.
✓ Branch 125 (8→10) taken 6 times.
✗ Branch 126 (11→12) not taken.
✓ Branch 127 (11→13) taken 53 times.
✗ Branch 128 (18→19) not taken.
✓ Branch 129 (18→20) taken 12 times.
✗ Branch 130 (16→17) not taken.
✓ Branch 131 (16→18) taken 176 times.
✗ Branch 132 (19→20) not taken.
✓ Branch 133 (19→21) taken 3655 times.
✗ Branch 134 (12→13) not taken.
✓ Branch 135 (12→14) taken 9 times.
✗ Branch 136 (12→13) not taken.
✓ Branch 137 (12→14) taken 690 times.
✗ Branch 138 (11→12) not taken.
✓ Branch 139 (11→13) taken 100 times.
✗ Branch 140 (11→12) not taken.
✓ Branch 141 (11→13) taken 1237 times.
✗ Branch 142 (8→9) not taken.
✓ Branch 143 (8→10) taken 2316 times.
✗ Branch 144 (17→18) not taken.
✓ Branch 145 (17→19) taken 526 times.
✗ Branch 146 (40→41) not taken.
✓ Branch 147 (40→42) taken 922 times.
✗ Branch 148 (19→20) not taken.
✓ Branch 149 (19→21) taken 1161 times.
✗ Branch 150 (24→25) not taken.
✓ Branch 151 (24→26) taken 67 times.
✗ Branch 152 (12→13) not taken.
✓ Branch 153 (12→14) taken 815 times.
✗ Branch 154 (26→27) not taken.
✓ Branch 155 (26→28) taken 66 times.
✗ Branch 156 (68→69) not taken.
✓ Branch 157 (68→70) taken 85 times.
✗ Branch 158 (78→79) not taken.
✓ Branch 159 (78→80) taken 614 times.
✗ Branch 160 (30→31) not taken.
✓ Branch 161 (30→32) taken 10425 times.
✗ Branch 162 (47→48) not taken.
✓ Branch 163 (47→49) taken 3442 times.
✗ Branch 164 (51→52) not taken.
✓ Branch 165 (51→53) taken 6983 times.
✗ Branch 166 (22→23) not taken.
✓ Branch 167 (22→24) taken 397 times.
✗ Branch 168 (129→130) not taken.
✓ Branch 169 (129→131) taken 1058 times.
1469281 assert(parentStack.top() == node);
172 1469281 parentStack.pop();
173 1469281 return node;
174 }
175
176 ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const {
177
85/170
✓ Branch 0 (2→3) taken 82 times.
✗ Branch 1 (2→14) not taken.
✓ Branch 2 (2→3) taken 14671 times.
✗ Branch 3 (2→14) not taken.
✓ Branch 4 (2→3) taken 41529 times.
✗ Branch 5 (2→14) not taken.
✓ Branch 6 (2→3) taken 41530 times.
✗ Branch 7 (2→14) not taken.
✓ Branch 8 (2→3) taken 1 times.
✗ Branch 9 (2→14) not taken.
✓ Branch 10 (2→3) taken 27 times.
✗ Branch 11 (2→14) not taken.
✓ Branch 12 (2→3) taken 12 times.
✗ Branch 13 (2→14) not taken.
✓ Branch 14 (2→3) taken 213 times.
✗ Branch 15 (2→14) not taken.
✓ Branch 16 (2→3) taken 70 times.
✗ Branch 17 (2→14) not taken.
✓ Branch 18 (2→3) taken 14347 times.
✗ Branch 19 (2→14) not taken.
✓ Branch 20 (2→3) taken 16511 times.
✗ Branch 21 (2→14) not taken.
✓ Branch 22 (2→3) taken 15841 times.
✗ Branch 23 (2→14) not taken.
✓ Branch 24 (2→3) taken 80718 times.
✗ Branch 25 (2→14) not taken.
✓ Branch 26 (2→3) taken 102332 times.
✗ Branch 27 (2→14) not taken.
✓ Branch 28 (2→3) taken 81835 times.
✗ Branch 29 (2→14) not taken.
✓ Branch 30 (2→3) taken 76551 times.
✗ Branch 31 (2→14) not taken.
✓ Branch 32 (2→3) taken 75350 times.
✗ Branch 33 (2→14) not taken.
✓ Branch 34 (2→3) taken 71623 times.
✗ Branch 35 (2→14) not taken.
✓ Branch 36 (2→3) taken 71508 times.
✗ Branch 37 (2→14) not taken.
✓ Branch 38 (2→3) taken 68024 times.
✗ Branch 39 (2→14) not taken.
✓ Branch 40 (2→3) taken 63428 times.
✗ Branch 41 (2→14) not taken.
✓ Branch 42 (2→3) taken 63404 times.
✗ Branch 43 (2→14) not taken.
✓ Branch 44 (2→3) taken 63395 times.
✗ Branch 45 (2→14) not taken.
✓ Branch 46 (2→3) taken 63327 times.
✗ Branch 47 (2→14) not taken.
✓ Branch 48 (2→3) taken 63088 times.
✗ Branch 49 (2→14) not taken.
✓ Branch 50 (2→3) taken 61947 times.
✗ Branch 51 (2→14) not taken.
✓ Branch 52 (2→3) taken 61114 times.
✗ Branch 53 (2→14) not taken.
✓ Branch 54 (2→3) taken 67554 times.
✗ Branch 55 (2→14) not taken.
✓ Branch 56 (2→3) taken 1 times.
✗ Branch 57 (2→14) not taken.
✓ Branch 58 (2→3) taken 805 times.
✗ Branch 59 (2→14) not taken.
✓ Branch 60 (2→3) taken 119 times.
✗ Branch 61 (2→14) not taken.
✓ Branch 62 (2→3) taken 2 times.
✗ Branch 63 (2→14) not taken.
✓ Branch 64 (2→3) taken 11 times.
✗ Branch 65 (2→14) not taken.
✓ Branch 66 (2→3) taken 217 times.
✗ Branch 67 (2→14) not taken.
✓ Branch 68 (2→3) taken 799 times.
✗ Branch 69 (2→14) not taken.
✓ Branch 70 (2→3) taken 1954 times.
✗ Branch 71 (2→14) not taken.
✓ Branch 72 (2→3) taken 687 times.
✗ Branch 73 (2→14) not taken.
✓ Branch 74 (2→3) taken 6 times.
✗ Branch 75 (2→14) not taken.
✓ Branch 76 (2→3) taken 183 times.
✗ Branch 77 (2→14) not taken.
✓ Branch 78 (2→3) taken 105 times.
✗ Branch 79 (2→14) not taken.
✓ Branch 80 (2→3) taken 8541 times.
✗ Branch 81 (2→14) not taken.
✓ Branch 82 (2→3) taken 70 times.
✗ Branch 83 (2→14) not taken.
✓ Branch 84 (2→3) taken 1177 times.
✗ Branch 85 (2→14) not taken.
✓ Branch 86 (2→3) taken 734 times.
✗ Branch 87 (2→14) not taken.
✓ Branch 88 (2→3) taken 16 times.
✗ Branch 89 (2→14) not taken.
✓ Branch 90 (2→3) taken 413 times.
✗ Branch 91 (2→14) not taken.
✓ Branch 92 (2→3) taken 305 times.
✗ Branch 93 (2→14) not taken.
✓ Branch 94 (2→3) taken 32671 times.
✗ Branch 95 (2→14) not taken.
✓ Branch 96 (2→3) taken 26925 times.
✗ Branch 97 (2→14) not taken.
✓ Branch 98 (2→3) taken 12455 times.
✗ Branch 99 (2→14) not taken.
✓ Branch 100 (2→3) taken 18212 times.
✗ Branch 101 (2→14) not taken.
✓ Branch 102 (2→3) taken 194 times.
✗ Branch 103 (2→14) not taken.
✓ Branch 104 (2→3) taken 1321 times.
✗ Branch 105 (2→14) not taken.
✓ Branch 106 (2→3) taken 742 times.
✗ Branch 107 (2→14) not taken.
✓ Branch 108 (2→3) taken 66 times.
✗ Branch 109 (2→14) not taken.
✓ Branch 110 (2→3) taken 11321 times.
✗ Branch 111 (2→14) not taken.
✓ Branch 112 (2→3) taken 8024 times.
✗ Branch 113 (2→14) not taken.
✓ Branch 114 (2→3) taken 815 times.
✗ Branch 115 (2→14) not taken.
✓ Branch 116 (2→3) taken 882 times.
✗ Branch 117 (2→14) not taken.
✓ Branch 118 (2→3) taken 5598 times.
✗ Branch 119 (2→14) not taken.
✓ Branch 120 (2→3) taken 19082 times.
✗ Branch 121 (2→14) not taken.
✓ Branch 122 (2→3) taken 28 times.
✗ Branch 123 (2→14) not taken.
✓ Branch 124 (2→3) taken 6 times.
✗ Branch 125 (2→14) not taken.
✓ Branch 126 (2→3) taken 53 times.
✗ Branch 127 (2→14) not taken.
✓ Branch 128 (2→3) taken 12 times.
✗ Branch 129 (2→14) not taken.
✓ Branch 130 (2→3) taken 176 times.
✗ Branch 131 (2→14) not taken.
✓ Branch 132 (2→3) taken 3655 times.
✗ Branch 133 (2→14) not taken.
✓ Branch 134 (2→3) taken 9 times.
✗ Branch 135 (2→14) not taken.
✓ Branch 136 (2→3) taken 690 times.
✗ Branch 137 (2→14) not taken.
✓ Branch 138 (2→3) taken 100 times.
✗ Branch 139 (2→14) not taken.
✓ Branch 140 (2→3) taken 1237 times.
✗ Branch 141 (2→14) not taken.
✓ Branch 142 (2→3) taken 2316 times.
✗ Branch 143 (2→14) not taken.
✓ Branch 144 (2→3) taken 526 times.
✗ Branch 145 (2→14) not taken.
✓ Branch 146 (2→3) taken 922 times.
✗ Branch 147 (2→14) not taken.
✓ Branch 148 (2→3) taken 1161 times.
✗ Branch 149 (2→14) not taken.
✓ Branch 150 (2→3) taken 67 times.
✗ Branch 151 (2→14) not taken.
✓ Branch 152 (2→3) taken 815 times.
✗ Branch 153 (2→14) not taken.
✓ Branch 154 (2→3) taken 66 times.
✗ Branch 155 (2→14) not taken.
✓ Branch 156 (2→3) taken 85 times.
✗ Branch 157 (2→14) not taken.
✓ Branch 158 (2→3) taken 615 times.
✗ Branch 159 (2→14) not taken.
✓ Branch 160 (2→3) taken 10425 times.
✗ Branch 161 (2→14) not taken.
✓ Branch 162 (2→3) taken 3442 times.
✗ Branch 163 (2→14) not taken.
✓ Branch 164 (2→3) taken 6983 times.
✗ Branch 165 (2→14) not taken.
✓ Branch 166 (2→3) taken 401 times.
✗ Branch 167 (2→14) not taken.
✓ Branch 168 (2→3) taken 1064 times.
✗ Branch 169 (2→13) not taken.
1469339 const size_t startIdx = ctx->start->getStartIndex();
178
170/340
✓ Branch 0 (3→4) taken 82 times.
✗ Branch 1 (3→6) not taken.
✓ Branch 2 (4→5) taken 82 times.
✗ Branch 3 (4→14) not taken.
✓ Branch 4 (3→4) taken 14671 times.
✗ Branch 5 (3→6) not taken.
✓ Branch 6 (4→5) taken 14671 times.
✗ Branch 7 (4→14) not taken.
✓ Branch 8 (3→4) taken 41529 times.
✗ Branch 9 (3→6) not taken.
✓ Branch 10 (4→5) taken 41529 times.
✗ Branch 11 (4→14) not taken.
✓ Branch 12 (3→4) taken 41530 times.
✗ Branch 13 (3→6) not taken.
✓ Branch 14 (4→5) taken 41530 times.
✗ Branch 15 (4→14) not taken.
✓ Branch 16 (3→4) taken 1 times.
✗ Branch 17 (3→6) not taken.
✓ Branch 18 (4→5) taken 1 times.
✗ Branch 19 (4→14) not taken.
✓ Branch 20 (3→4) taken 27 times.
✗ Branch 21 (3→6) not taken.
✓ Branch 22 (4→5) taken 27 times.
✗ Branch 23 (4→14) not taken.
✓ Branch 24 (3→4) taken 12 times.
✗ Branch 25 (3→6) not taken.
✓ Branch 26 (4→5) taken 12 times.
✗ Branch 27 (4→14) not taken.
✓ Branch 28 (3→4) taken 213 times.
✗ Branch 29 (3→6) not taken.
✓ Branch 30 (4→5) taken 213 times.
✗ Branch 31 (4→14) not taken.
✓ Branch 32 (3→4) taken 70 times.
✗ Branch 33 (3→6) not taken.
✓ Branch 34 (4→5) taken 70 times.
✗ Branch 35 (4→14) not taken.
✓ Branch 36 (3→4) taken 14347 times.
✗ Branch 37 (3→6) not taken.
✓ Branch 38 (4→5) taken 14347 times.
✗ Branch 39 (4→14) not taken.
✓ Branch 40 (3→4) taken 16511 times.
✗ Branch 41 (3→6) not taken.
✓ Branch 42 (4→5) taken 16511 times.
✗ Branch 43 (4→14) not taken.
✓ Branch 44 (3→4) taken 15841 times.
✗ Branch 45 (3→6) not taken.
✓ Branch 46 (4→5) taken 15841 times.
✗ Branch 47 (4→14) not taken.
✓ Branch 48 (3→4) taken 80718 times.
✗ Branch 49 (3→6) not taken.
✓ Branch 50 (4→5) taken 80718 times.
✗ Branch 51 (4→14) not taken.
✓ Branch 52 (3→4) taken 102332 times.
✗ Branch 53 (3→6) not taken.
✓ Branch 54 (4→5) taken 102332 times.
✗ Branch 55 (4→14) not taken.
✓ Branch 56 (3→4) taken 81835 times.
✗ Branch 57 (3→6) not taken.
✓ Branch 58 (4→5) taken 81835 times.
✗ Branch 59 (4→14) not taken.
✓ Branch 60 (3→4) taken 76551 times.
✗ Branch 61 (3→6) not taken.
✓ Branch 62 (4→5) taken 76551 times.
✗ Branch 63 (4→14) not taken.
✓ Branch 64 (3→4) taken 75350 times.
✗ Branch 65 (3→6) not taken.
✓ Branch 66 (4→5) taken 75350 times.
✗ Branch 67 (4→14) not taken.
✓ Branch 68 (3→4) taken 71623 times.
✗ Branch 69 (3→6) not taken.
✓ Branch 70 (4→5) taken 71623 times.
✗ Branch 71 (4→14) not taken.
✓ Branch 72 (3→4) taken 71508 times.
✗ Branch 73 (3→6) not taken.
✓ Branch 74 (4→5) taken 71508 times.
✗ Branch 75 (4→14) not taken.
✓ Branch 76 (3→4) taken 68024 times.
✗ Branch 77 (3→6) not taken.
✓ Branch 78 (4→5) taken 68024 times.
✗ Branch 79 (4→14) not taken.
✓ Branch 80 (3→4) taken 63428 times.
✗ Branch 81 (3→6) not taken.
✓ Branch 82 (4→5) taken 63428 times.
✗ Branch 83 (4→14) not taken.
✓ Branch 84 (3→4) taken 63404 times.
✗ Branch 85 (3→6) not taken.
✓ Branch 86 (4→5) taken 63404 times.
✗ Branch 87 (4→14) not taken.
✓ Branch 88 (3→4) taken 63395 times.
✗ Branch 89 (3→6) not taken.
✓ Branch 90 (4→5) taken 63395 times.
✗ Branch 91 (4→14) not taken.
✓ Branch 92 (3→4) taken 63327 times.
✗ Branch 93 (3→6) not taken.
✓ Branch 94 (4→5) taken 63327 times.
✗ Branch 95 (4→14) not taken.
✓ Branch 96 (3→4) taken 63088 times.
✗ Branch 97 (3→6) not taken.
✓ Branch 98 (4→5) taken 63088 times.
✗ Branch 99 (4→14) not taken.
✓ Branch 100 (3→4) taken 61947 times.
✗ Branch 101 (3→6) not taken.
✓ Branch 102 (4→5) taken 61947 times.
✗ Branch 103 (4→14) not taken.
✓ Branch 104 (3→4) taken 61114 times.
✗ Branch 105 (3→6) not taken.
✓ Branch 106 (4→5) taken 61114 times.
✗ Branch 107 (4→14) not taken.
✓ Branch 108 (3→4) taken 67554 times.
✗ Branch 109 (3→6) not taken.
✓ Branch 110 (4→5) taken 67554 times.
✗ Branch 111 (4→14) not taken.
✓ Branch 112 (3→4) taken 1 times.
✗ Branch 113 (3→6) not taken.
✓ Branch 114 (4→5) taken 1 times.
✗ Branch 115 (4→14) not taken.
✓ Branch 116 (3→4) taken 805 times.
✗ Branch 117 (3→6) not taken.
✓ Branch 118 (4→5) taken 805 times.
✗ Branch 119 (4→14) not taken.
✓ Branch 120 (3→4) taken 119 times.
✗ Branch 121 (3→6) not taken.
✓ Branch 122 (4→5) taken 119 times.
✗ Branch 123 (4→14) not taken.
✓ Branch 124 (3→4) taken 2 times.
✗ Branch 125 (3→6) not taken.
✓ Branch 126 (4→5) taken 2 times.
✗ Branch 127 (4→14) not taken.
✓ Branch 128 (3→4) taken 11 times.
✗ Branch 129 (3→6) not taken.
✓ Branch 130 (4→5) taken 11 times.
✗ Branch 131 (4→14) not taken.
✓ Branch 132 (3→4) taken 217 times.
✗ Branch 133 (3→6) not taken.
✓ Branch 134 (4→5) taken 217 times.
✗ Branch 135 (4→14) not taken.
✓ Branch 136 (3→4) taken 799 times.
✗ Branch 137 (3→6) not taken.
✓ Branch 138 (4→5) taken 799 times.
✗ Branch 139 (4→14) not taken.
✓ Branch 140 (3→4) taken 1954 times.
✗ Branch 141 (3→6) not taken.
✓ Branch 142 (4→5) taken 1954 times.
✗ Branch 143 (4→14) not taken.
✓ Branch 144 (3→4) taken 687 times.
✗ Branch 145 (3→6) not taken.
✓ Branch 146 (4→5) taken 687 times.
✗ Branch 147 (4→14) not taken.
✓ Branch 148 (3→4) taken 6 times.
✗ Branch 149 (3→6) not taken.
✓ Branch 150 (4→5) taken 6 times.
✗ Branch 151 (4→14) not taken.
✓ Branch 152 (3→4) taken 183 times.
✗ Branch 153 (3→6) not taken.
✓ Branch 154 (4→5) taken 183 times.
✗ Branch 155 (4→14) not taken.
✓ Branch 156 (3→4) taken 105 times.
✗ Branch 157 (3→6) not taken.
✓ Branch 158 (4→5) taken 105 times.
✗ Branch 159 (4→14) not taken.
✓ Branch 160 (3→4) taken 8541 times.
✗ Branch 161 (3→6) not taken.
✓ Branch 162 (4→5) taken 8541 times.
✗ Branch 163 (4→14) not taken.
✓ Branch 164 (3→4) taken 70 times.
✗ Branch 165 (3→6) not taken.
✓ Branch 166 (4→5) taken 70 times.
✗ Branch 167 (4→14) not taken.
✓ Branch 168 (3→4) taken 1177 times.
✗ Branch 169 (3→6) not taken.
✓ Branch 170 (4→5) taken 1177 times.
✗ Branch 171 (4→14) not taken.
✓ Branch 172 (3→4) taken 734 times.
✗ Branch 173 (3→6) not taken.
✓ Branch 174 (4→5) taken 734 times.
✗ Branch 175 (4→14) not taken.
✓ Branch 176 (3→4) taken 16 times.
✗ Branch 177 (3→6) not taken.
✓ Branch 178 (4→5) taken 16 times.
✗ Branch 179 (4→14) not taken.
✓ Branch 180 (3→4) taken 413 times.
✗ Branch 181 (3→6) not taken.
✓ Branch 182 (4→5) taken 413 times.
✗ Branch 183 (4→14) not taken.
✓ Branch 184 (3→4) taken 305 times.
✗ Branch 185 (3→6) not taken.
✓ Branch 186 (4→5) taken 305 times.
✗ Branch 187 (4→14) not taken.
✓ Branch 188 (3→4) taken 32671 times.
✗ Branch 189 (3→6) not taken.
✓ Branch 190 (4→5) taken 32671 times.
✗ Branch 191 (4→14) not taken.
✓ Branch 192 (3→4) taken 26925 times.
✗ Branch 193 (3→6) not taken.
✓ Branch 194 (4→5) taken 26925 times.
✗ Branch 195 (4→14) not taken.
✓ Branch 196 (3→4) taken 12455 times.
✗ Branch 197 (3→6) not taken.
✓ Branch 198 (4→5) taken 12455 times.
✗ Branch 199 (4→14) not taken.
✓ Branch 200 (3→4) taken 18212 times.
✗ Branch 201 (3→6) not taken.
✓ Branch 202 (4→5) taken 18212 times.
✗ Branch 203 (4→14) not taken.
✓ Branch 204 (3→4) taken 194 times.
✗ Branch 205 (3→6) not taken.
✓ Branch 206 (4→5) taken 194 times.
✗ Branch 207 (4→14) not taken.
✓ Branch 208 (3→4) taken 1321 times.
✗ Branch 209 (3→6) not taken.
✓ Branch 210 (4→5) taken 1321 times.
✗ Branch 211 (4→14) not taken.
✓ Branch 212 (3→4) taken 742 times.
✗ Branch 213 (3→6) not taken.
✓ Branch 214 (4→5) taken 742 times.
✗ Branch 215 (4→14) not taken.
✓ Branch 216 (3→4) taken 66 times.
✗ Branch 217 (3→6) not taken.
✓ Branch 218 (4→5) taken 66 times.
✗ Branch 219 (4→14) not taken.
✓ Branch 220 (3→4) taken 11321 times.
✗ Branch 221 (3→6) not taken.
✓ Branch 222 (4→5) taken 11321 times.
✗ Branch 223 (4→14) not taken.
✓ Branch 224 (3→4) taken 8024 times.
✗ Branch 225 (3→6) not taken.
✓ Branch 226 (4→5) taken 8024 times.
✗ Branch 227 (4→14) not taken.
✓ Branch 228 (3→4) taken 815 times.
✗ Branch 229 (3→6) not taken.
✓ Branch 230 (4→5) taken 815 times.
✗ Branch 231 (4→14) not taken.
✓ Branch 232 (3→4) taken 882 times.
✗ Branch 233 (3→6) not taken.
✓ Branch 234 (4→5) taken 882 times.
✗ Branch 235 (4→14) not taken.
✓ Branch 236 (3→4) taken 5598 times.
✗ Branch 237 (3→6) not taken.
✓ Branch 238 (4→5) taken 5598 times.
✗ Branch 239 (4→14) not taken.
✓ Branch 240 (3→4) taken 19082 times.
✗ Branch 241 (3→6) not taken.
✓ Branch 242 (4→5) taken 19082 times.
✗ Branch 243 (4→14) not taken.
✓ Branch 244 (3→4) taken 28 times.
✗ Branch 245 (3→6) not taken.
✓ Branch 246 (4→5) taken 28 times.
✗ Branch 247 (4→14) not taken.
✓ Branch 248 (3→4) taken 6 times.
✗ Branch 249 (3→6) not taken.
✓ Branch 250 (4→5) taken 6 times.
✗ Branch 251 (4→14) not taken.
✓ Branch 252 (3→4) taken 53 times.
✗ Branch 253 (3→6) not taken.
✓ Branch 254 (4→5) taken 53 times.
✗ Branch 255 (4→14) not taken.
✓ Branch 256 (3→4) taken 12 times.
✗ Branch 257 (3→6) not taken.
✓ Branch 258 (4→5) taken 12 times.
✗ Branch 259 (4→14) not taken.
✓ Branch 260 (3→4) taken 176 times.
✗ Branch 261 (3→6) not taken.
✓ Branch 262 (4→5) taken 176 times.
✗ Branch 263 (4→14) not taken.
✓ Branch 264 (3→4) taken 3655 times.
✗ Branch 265 (3→6) not taken.
✓ Branch 266 (4→5) taken 3655 times.
✗ Branch 267 (4→14) not taken.
✓ Branch 268 (3→4) taken 9 times.
✗ Branch 269 (3→6) not taken.
✓ Branch 270 (4→5) taken 9 times.
✗ Branch 271 (4→14) not taken.
✓ Branch 272 (3→4) taken 690 times.
✗ Branch 273 (3→6) not taken.
✓ Branch 274 (4→5) taken 690 times.
✗ Branch 275 (4→14) not taken.
✓ Branch 276 (3→4) taken 100 times.
✗ Branch 277 (3→6) not taken.
✓ Branch 278 (4→5) taken 100 times.
✗ Branch 279 (4→14) not taken.
✓ Branch 280 (3→4) taken 1237 times.
✗ Branch 281 (3→6) not taken.
✓ Branch 282 (4→5) taken 1237 times.
✗ Branch 283 (4→14) not taken.
✓ Branch 284 (3→4) taken 2316 times.
✗ Branch 285 (3→6) not taken.
✓ Branch 286 (4→5) taken 2316 times.
✗ Branch 287 (4→14) not taken.
✓ Branch 288 (3→4) taken 526 times.
✗ Branch 289 (3→6) not taken.
✓ Branch 290 (4→5) taken 526 times.
✗ Branch 291 (4→14) not taken.
✓ Branch 292 (3→4) taken 922 times.
✗ Branch 293 (3→6) not taken.
✓ Branch 294 (4→5) taken 922 times.
✗ Branch 295 (4→14) not taken.
✓ Branch 296 (3→4) taken 1161 times.
✗ Branch 297 (3→6) not taken.
✓ Branch 298 (4→5) taken 1161 times.
✗ Branch 299 (4→14) not taken.
✓ Branch 300 (3→4) taken 67 times.
✗ Branch 301 (3→6) not taken.
✓ Branch 302 (4→5) taken 67 times.
✗ Branch 303 (4→14) not taken.
✓ Branch 304 (3→4) taken 815 times.
✗ Branch 305 (3→6) not taken.
✓ Branch 306 (4→5) taken 815 times.
✗ Branch 307 (4→14) not taken.
✓ Branch 308 (3→4) taken 66 times.
✗ Branch 309 (3→6) not taken.
✓ Branch 310 (4→5) taken 66 times.
✗ Branch 311 (4→14) not taken.
✓ Branch 312 (3→4) taken 85 times.
✗ Branch 313 (3→6) not taken.
✓ Branch 314 (4→5) taken 85 times.
✗ Branch 315 (4→14) not taken.
✓ Branch 316 (3→4) taken 615 times.
✗ Branch 317 (3→6) not taken.
✓ Branch 318 (4→5) taken 615 times.
✗ Branch 319 (4→14) not taken.
✓ Branch 320 (3→4) taken 10425 times.
✗ Branch 321 (3→6) not taken.
✓ Branch 322 (4→5) taken 10425 times.
✗ Branch 323 (4→14) not taken.
✓ Branch 324 (3→4) taken 3442 times.
✗ Branch 325 (3→6) not taken.
✓ Branch 326 (4→5) taken 3442 times.
✗ Branch 327 (4→14) not taken.
✓ Branch 328 (3→4) taken 6983 times.
✗ Branch 329 (3→6) not taken.
✓ Branch 330 (4→5) taken 6983 times.
✗ Branch 331 (4→14) not taken.
✓ Branch 332 (3→4) taken 401 times.
✗ Branch 333 (3→6) not taken.
✓ Branch 334 (4→5) taken 401 times.
✗ Branch 335 (4→14) not taken.
✓ Branch 336 (3→4) taken 1064 times.
✗ Branch 337 (3→6) not taken.
✓ Branch 338 (4→5) taken 1064 times.
✗ Branch 339 (4→13) not taken.
1469339 const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx;
179
85/170
✓ Branch 0 (7→8) taken 82 times.
✗ Branch 1 (7→14) not taken.
✓ Branch 2 (7→8) taken 14671 times.
✗ Branch 3 (7→14) not taken.
✓ Branch 4 (7→8) taken 41529 times.
✗ Branch 5 (7→14) not taken.
✓ Branch 6 (7→8) taken 41530 times.
✗ Branch 7 (7→14) not taken.
✓ Branch 8 (7→8) taken 1 times.
✗ Branch 9 (7→14) not taken.
✓ Branch 10 (7→8) taken 27 times.
✗ Branch 11 (7→14) not taken.
✓ Branch 12 (7→8) taken 12 times.
✗ Branch 13 (7→14) not taken.
✓ Branch 14 (7→8) taken 213 times.
✗ Branch 15 (7→14) not taken.
✓ Branch 16 (7→8) taken 70 times.
✗ Branch 17 (7→14) not taken.
✓ Branch 18 (7→8) taken 14347 times.
✗ Branch 19 (7→14) not taken.
✓ Branch 20 (7→8) taken 16511 times.
✗ Branch 21 (7→14) not taken.
✓ Branch 22 (7→8) taken 15841 times.
✗ Branch 23 (7→14) not taken.
✓ Branch 24 (7→8) taken 80718 times.
✗ Branch 25 (7→14) not taken.
✓ Branch 26 (7→8) taken 102332 times.
✗ Branch 27 (7→14) not taken.
✓ Branch 28 (7→8) taken 81835 times.
✗ Branch 29 (7→14) not taken.
✓ Branch 30 (7→8) taken 76551 times.
✗ Branch 31 (7→14) not taken.
✓ Branch 32 (7→8) taken 75350 times.
✗ Branch 33 (7→14) not taken.
✓ Branch 34 (7→8) taken 71623 times.
✗ Branch 35 (7→14) not taken.
✓ Branch 36 (7→8) taken 71508 times.
✗ Branch 37 (7→14) not taken.
✓ Branch 38 (7→8) taken 68024 times.
✗ Branch 39 (7→14) not taken.
✓ Branch 40 (7→8) taken 63428 times.
✗ Branch 41 (7→14) not taken.
✓ Branch 42 (7→8) taken 63404 times.
✗ Branch 43 (7→14) not taken.
✓ Branch 44 (7→8) taken 63395 times.
✗ Branch 45 (7→14) not taken.
✓ Branch 46 (7→8) taken 63327 times.
✗ Branch 47 (7→14) not taken.
✓ Branch 48 (7→8) taken 63088 times.
✗ Branch 49 (7→14) not taken.
✓ Branch 50 (7→8) taken 61947 times.
✗ Branch 51 (7→14) not taken.
✓ Branch 52 (7→8) taken 61114 times.
✗ Branch 53 (7→14) not taken.
✓ Branch 54 (7→8) taken 67554 times.
✗ Branch 55 (7→14) not taken.
✓ Branch 56 (7→8) taken 1 times.
✗ Branch 57 (7→14) not taken.
✓ Branch 58 (7→8) taken 805 times.
✗ Branch 59 (7→14) not taken.
✓ Branch 60 (7→8) taken 119 times.
✗ Branch 61 (7→14) not taken.
✓ Branch 62 (7→8) taken 2 times.
✗ Branch 63 (7→14) not taken.
✓ Branch 64 (7→8) taken 11 times.
✗ Branch 65 (7→14) not taken.
✓ Branch 66 (7→8) taken 217 times.
✗ Branch 67 (7→14) not taken.
✓ Branch 68 (7→8) taken 799 times.
✗ Branch 69 (7→14) not taken.
✓ Branch 70 (7→8) taken 1954 times.
✗ Branch 71 (7→14) not taken.
✓ Branch 72 (7→8) taken 687 times.
✗ Branch 73 (7→14) not taken.
✓ Branch 74 (7→8) taken 6 times.
✗ Branch 75 (7→14) not taken.
✓ Branch 76 (7→8) taken 183 times.
✗ Branch 77 (7→14) not taken.
✓ Branch 78 (7→8) taken 105 times.
✗ Branch 79 (7→14) not taken.
✓ Branch 80 (7→8) taken 8541 times.
✗ Branch 81 (7→14) not taken.
✓ Branch 82 (7→8) taken 70 times.
✗ Branch 83 (7→14) not taken.
✓ Branch 84 (7→8) taken 1177 times.
✗ Branch 85 (7→14) not taken.
✓ Branch 86 (7→8) taken 734 times.
✗ Branch 87 (7→14) not taken.
✓ Branch 88 (7→8) taken 16 times.
✗ Branch 89 (7→14) not taken.
✓ Branch 90 (7→8) taken 413 times.
✗ Branch 91 (7→14) not taken.
✓ Branch 92 (7→8) taken 305 times.
✗ Branch 93 (7→14) not taken.
✓ Branch 94 (7→8) taken 32671 times.
✗ Branch 95 (7→14) not taken.
✓ Branch 96 (7→8) taken 26925 times.
✗ Branch 97 (7→14) not taken.
✓ Branch 98 (7→8) taken 12455 times.
✗ Branch 99 (7→14) not taken.
✓ Branch 100 (7→8) taken 18212 times.
✗ Branch 101 (7→14) not taken.
✓ Branch 102 (7→8) taken 194 times.
✗ Branch 103 (7→14) not taken.
✓ Branch 104 (7→8) taken 1321 times.
✗ Branch 105 (7→14) not taken.
✓ Branch 106 (7→8) taken 742 times.
✗ Branch 107 (7→14) not taken.
✓ Branch 108 (7→8) taken 66 times.
✗ Branch 109 (7→14) not taken.
✓ Branch 110 (7→8) taken 11321 times.
✗ Branch 111 (7→14) not taken.
✓ Branch 112 (7→8) taken 8024 times.
✗ Branch 113 (7→14) not taken.
✓ Branch 114 (7→8) taken 815 times.
✗ Branch 115 (7→14) not taken.
✓ Branch 116 (7→8) taken 882 times.
✗ Branch 117 (7→14) not taken.
✓ Branch 118 (7→8) taken 5598 times.
✗ Branch 119 (7→14) not taken.
✓ Branch 120 (7→8) taken 19082 times.
✗ Branch 121 (7→14) not taken.
✓ Branch 122 (7→8) taken 28 times.
✗ Branch 123 (7→14) not taken.
✓ Branch 124 (7→8) taken 6 times.
✗ Branch 125 (7→14) not taken.
✓ Branch 126 (7→8) taken 53 times.
✗ Branch 127 (7→14) not taken.
✓ Branch 128 (7→8) taken 12 times.
✗ Branch 129 (7→14) not taken.
✓ Branch 130 (7→8) taken 176 times.
✗ Branch 131 (7→14) not taken.
✓ Branch 132 (7→8) taken 3655 times.
✗ Branch 133 (7→14) not taken.
✓ Branch 134 (7→8) taken 9 times.
✗ Branch 135 (7→14) not taken.
✓ Branch 136 (7→8) taken 690 times.
✗ Branch 137 (7→14) not taken.
✓ Branch 138 (7→8) taken 100 times.
✗ Branch 139 (7→14) not taken.
✓ Branch 140 (7→8) taken 1237 times.
✗ Branch 141 (7→14) not taken.
✓ Branch 142 (7→8) taken 2316 times.
✗ Branch 143 (7→14) not taken.
✓ Branch 144 (7→8) taken 526 times.
✗ Branch 145 (7→14) not taken.
✓ Branch 146 (7→8) taken 922 times.
✗ Branch 147 (7→14) not taken.
✓ Branch 148 (7→8) taken 1161 times.
✗ Branch 149 (7→14) not taken.
✓ Branch 150 (7→8) taken 67 times.
✗ Branch 151 (7→14) not taken.
✓ Branch 152 (7→8) taken 815 times.
✗ Branch 153 (7→14) not taken.
✓ Branch 154 (7→8) taken 66 times.
✗ Branch 155 (7→14) not taken.
✓ Branch 156 (7→8) taken 85 times.
✗ Branch 157 (7→14) not taken.
✓ Branch 158 (7→8) taken 615 times.
✗ Branch 159 (7→14) not taken.
✓ Branch 160 (7→8) taken 10425 times.
✗ Branch 161 (7→14) not taken.
✓ Branch 162 (7→8) taken 3442 times.
✗ Branch 163 (7→14) not taken.
✓ Branch 164 (7→8) taken 6983 times.
✗ Branch 165 (7→14) not taken.
✓ Branch 166 (7→8) taken 401 times.
✗ Branch 167 (7→14) not taken.
✓ Branch 168 (7→8) taken 1064 times.
✗ Branch 169 (7→13) not taken.
1469339 return {ctx->start, startIdx, stopIdx, sourceFile};
180 }
181
182 int32_t parseInt(TerminalNode *terminal);
183 int16_t parseShort(TerminalNode *terminal);
184 int64_t parseLong(TerminalNode *terminal);
185 int8_t parseChar(TerminalNode *terminal) const;
186 static std::string parseString(std::string input);
187 template <typename T> T parseNumeric(TerminalNode *terminal, const NumericParserCallback<T> &cb);
188 static void replaceEscapeChars(std::string &input);
189 std::string getIdentifier(TerminalNode *terminal, bool isTypeIdentifier) const;
190 };
191
192 } // namespace spice::compiler
193