GCC Code Coverage Report


Directory: ../
File: src/ast/ASTBuilder.h
Date: 2025-02-05 01:09:36
Exec Total Coverage
Lines: 17 17 100.0%
Functions: 101 101 100.0%
Branches: 427 850 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:
31 // Private type defs
32 using TerminalNode = antlr4::tree::TerminalNode;
33 using ParserRuleContext = antlr4::ParserRuleContext;
34 template <typename T> using NumericParserCallback = std::function<T(const std::string &, short, bool)>;
35
36 public:
37 // Constructors
38 ASTBuilder(GlobalResourceManager &resourceManager, SourceFile *sourceFile, antlr4::ANTLRInputStream *inputStream);
39
40 // Public methods
41 std::any visitEntry(SpiceParser::EntryContext *ctx) override;
42 std::any visitMainFunctionDef(SpiceParser::MainFunctionDefContext *ctx) override;
43 std::any visitFunctionDef(SpiceParser::FunctionDefContext *ctx) override;
44 std::any visitProcedureDef(SpiceParser::ProcedureDefContext *ctx) override;
45 std::any visitFctName(SpiceParser::FctNameContext *ctx) override;
46 std::any visitGenericTypeDef(SpiceParser::GenericTypeDefContext *ctx) override;
47 std::any visitAliasDef(SpiceParser::AliasDefContext *ctx) override;
48 std::any visitStructDef(SpiceParser::StructDefContext *ctx) override;
49 std::any visitInterfaceDef(SpiceParser::InterfaceDefContext *ctx) override;
50 std::any visitEnumDef(SpiceParser::EnumDefContext *ctx) override;
51 std::any visitGlobalVarDef(SpiceParser::GlobalVarDefContext *ctx) override;
52 std::any visitExtDecl(SpiceParser::ExtDeclContext *ctx) override;
53 std::any visitImportDef(SpiceParser::ImportDefContext *ctx) override;
54 std::any visitUnsafeBlock(SpiceParser::UnsafeBlockContext *ctx) override;
55 std::any visitForLoop(SpiceParser::ForLoopContext *ctx) override;
56 std::any visitForHead(SpiceParser::ForHeadContext *ctx) override;
57 std::any visitForeachLoop(SpiceParser::ForeachLoopContext *ctx) override;
58 std::any visitForeachHead(SpiceParser::ForeachHeadContext *ctx) override;
59 std::any visitWhileLoop(SpiceParser::WhileLoopContext *ctx) override;
60 std::any visitDoWhileLoop(SpiceParser::DoWhileLoopContext *ctx) override;
61 std::any visitIfStmt(SpiceParser::IfStmtContext *ctx) override;
62 std::any visitElseStmt(SpiceParser::ElseStmtContext *ctx) override;
63 std::any visitSwitchStmt(SpiceParser::SwitchStmtContext *ctx) override;
64 std::any visitCaseBranch(SpiceParser::CaseBranchContext *ctx) override;
65 std::any visitDefaultBranch(SpiceParser::DefaultBranchContext *ctx) override;
66 std::any visitAnonymousBlockStmt(SpiceParser::AnonymousBlockStmtContext *ctx) override;
67 std::any visitStmtLst(SpiceParser::StmtLstContext *ctx) override;
68 std::any visitTypeLst(SpiceParser::TypeLstContext *ctx) override;
69 std::any 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 visitLenCall(SpiceParser::LenCallContext *ctx) override;
97 std::any visitPanicCall(SpiceParser::PanicCallContext *ctx) override;
98 std::any visitSysCall(SpiceParser::SysCallContext *ctx) override;
99 std::any visitAssignExpr(SpiceParser::AssignExprContext *ctx) override;
100 std::any visitTernaryExpr(SpiceParser::TernaryExprContext *ctx) override;
101 std::any visitLogicalOrExpr(SpiceParser::LogicalOrExprContext *ctx) override;
102 std::any visitLogicalAndExpr(SpiceParser::LogicalAndExprContext *ctx) override;
103 std::any visitBitwiseOrExpr(SpiceParser::BitwiseOrExprContext *ctx) override;
104 std::any visitBitwiseXorExpr(SpiceParser::BitwiseXorExprContext *ctx) override;
105 std::any visitBitwiseAndExpr(SpiceParser::BitwiseAndExprContext *ctx) override;
106 std::any visitEqualityExpr(SpiceParser::EqualityExprContext *ctx) override;
107 std::any visitRelationalExpr(SpiceParser::RelationalExprContext *ctx) override;
108 std::any visitShiftExpr(SpiceParser::ShiftExprContext *ctx) override;
109 std::any visitAdditiveExpr(SpiceParser::AdditiveExprContext *ctx) override;
110 std::any visitMultiplicativeExpr(SpiceParser::MultiplicativeExprContext *ctx) override;
111 std::any visitCastExpr(SpiceParser::CastExprContext *ctx) override;
112 std::any visitPrefixUnaryExpr(SpiceParser::PrefixUnaryExprContext *ctx) override;
113 std::any visitPostfixUnaryExpr(SpiceParser::PostfixUnaryExprContext *ctx) override;
114 std::any visitAtomicExpr(SpiceParser::AtomicExprContext *ctx) override;
115 std::any visitValue(SpiceParser::ValueContext *ctx) override;
116 std::any visitFctCall(SpiceParser::FctCallContext *ctx) override;
117 std::any visitArrayInitialization(SpiceParser::ArrayInitializationContext *ctx) override;
118 std::any visitStructInstantiation(SpiceParser::StructInstantiationContext *ctx) override;
119 std::any visitLambdaFunc(SpiceParser::LambdaFuncContext *ctx) override;
120 std::any visitLambdaProc(SpiceParser::LambdaProcContext *ctx) override;
121 std::any visitLambdaExpr(SpiceParser::LambdaExprContext *ctx) override;
122 std::any visitConstant(SpiceParser::ConstantContext *ctx) override;
123 std::any visitDataType(SpiceParser::DataTypeContext *ctx) override;
124 std::any visitBaseDataType(SpiceParser::BaseDataTypeContext *ctx) override;
125 std::any visitCustomDataType(SpiceParser::CustomDataTypeContext *ctx) override;
126 std::any visitFunctionDataType(SpiceParser::FunctionDataTypeContext *ctx) override;
127 std::any visitAssignOp(SpiceParser::AssignOpContext *ctx) override;
128 std::any visitOverloadableOp(SpiceParser::OverloadableOpContext *ctx) override;
129
130 private:
131 // Members
132 antlr4::ANTLRInputStream *inputStream;
133 std::stack<ASTNode *> parentStack;
134
135 // Private methods
136 template <typename SrcTy, typename TgtTy>
137 613918 void fetchChildrenIntoVector(std::vector<TgtTy> &tgt, const std::vector<SrcTy> &src)
138 requires(std::is_pointer_v<SrcTy> && std::is_pointer_v<TgtTy>)
139 {
140 613918 tgt.reserve(src.size());
141
2/2
✓ Branch 0 (13→6) taken 644244 times.
✓ Branch 1 (13→14) taken 613897 times.
1258141 for (SrcTy shiftExpr : src)
142
4/6
✓ Branch 0 (7→8) taken 644223 times.
✓ Branch 1 (7→17) taken 21 times.
✓ Branch 2 (8→9) taken 644223 times.
✗ Branch 3 (8→15) not taken.
✓ Branch 4 (9→10) taken 644223 times.
✗ Branch 5 (9→15) not taken.
644244 tgt.push_back(std::any_cast<TgtTy>(visit(shiftExpr)));
143 613897 }
144
145 template <typename T>
146 1268394 T *createNode(const ParserRuleContext *ctx)
147 requires std::is_base_of_v<ASTNode, T>
148 {
149 // Create the new node
150
1/2
✓ Branch 0 (9→10) taken 1268394 times.
✗ Branch 1 (9→14) not taken.
1268394 T *node = resourceManager.astNodeAlloc.allocate<T>(getCodeLoc(ctx));
151 if constexpr (!std::is_same_v<T, EntryNode>)
152 1267375 node->parent = parentStack.top();
153 // This node is the parent for its children
154
1/2
✓ Branch 0 (11→12) taken 1268394 times.
✗ Branch 1 (11→15) not taken.
1268394 parentStack.push(node);
155 1268394 return node;
156 }
157
158 template <typename T>
159 ALWAYS_INLINE T *resumeForExpansion() const
160 requires std::is_base_of_v<ASTNode, T>
161 {
162
4/8
✓ Branch 0 (3→4) taken 1501 times.
✗ Branch 1 (3→5) not taken.
✓ Branch 2 (3→4) taken 5806 times.
✗ Branch 3 (3→5) not taken.
✓ Branch 4 (3→4) taken 88 times.
✗ Branch 5 (3→5) not taken.
✓ Branch 6 (3→4) taken 1036 times.
✗ Branch 7 (3→5) not taken.
16862 return spice_pointer_cast<T *>(parentStack.top());
163 }
164
165 template <typename T>
166 ALWAYS_INLINE T *concludeNode(T *node)
167 requires std::is_base_of_v<ASTNode, T>
168 {
169 // This node is no longer the parent for its children
170
83/166
✗ Branch 0 (19→20) not taken.
✓ Branch 1 (19→21) taken 94 times.
✗ Branch 2 (40→41) not taken.
✓ Branch 3 (40→42) taken 13021 times.
✗ Branch 4 (46→47) not taken.
✓ Branch 5 (46→48) taken 36372 times.
✗ Branch 6 (63→64) not taken.
✓ Branch 7 (63→65) taken 36372 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 211 times.
✗ Branch 16 (11→12) not taken.
✓ Branch 17 (11→13) taken 66 times.
✗ Branch 18 (53→54) not taken.
✓ Branch 19 (53→55) taken 12893 times.
✗ Branch 20 (48→49) not taken.
✓ Branch 21 (48→50) taken 14493 times.
✗ Branch 22 (54→55) not taken.
✓ Branch 23 (54→56) taken 14122 times.
✗ Branch 24 (80→81) not taken.
✓ Branch 25 (80→82) taken 71343 times.
✗ Branch 26 (38→39) not taken.
✓ Branch 27 (38→40) taken 90757 times.
✗ Branch 28 (40→41) not taken.
✓ Branch 29 (40→42) taken 72392 times.
✗ Branch 30 (15→16) not taken.
✓ Branch 31 (15→17) taken 65537 times.
✗ Branch 32 (34→35) not taken.
✓ Branch 33 (34→36) taken 64421 times.
✗ Branch 34 (29→30) not taken.
✓ Branch 35 (29→31) taken 61216 times.
✗ Branch 36 (37→38) not taken.
✓ Branch 37 (37→39) taken 61155 times.
✗ Branch 38 (19→20) not taken.
✓ Branch 39 (19→21) taken 58222 times.
✗ Branch 40 (13→14) not taken.
✓ Branch 41 (13→15) taken 53831 times.
✗ Branch 42 (7→8) not taken.
✓ Branch 43 (7→9) taken 53804 times.
✗ Branch 44 (7→8) not taken.
✓ Branch 45 (7→9) taken 53800 times.
✗ Branch 46 (7→8) not taken.
✓ Branch 47 (7→9) taken 53736 times.
✗ Branch 48 (7→8) not taken.
✓ Branch 49 (7→9) taken 53507 times.
✗ Branch 50 (7→8) not taken.
✓ Branch 51 (7→9) taken 52398 times.
✗ Branch 52 (30→31) not taken.
✓ Branch 53 (30→32) taken 51805 times.
✗ Branch 54 (26→27) not taken.
✓ Branch 55 (26→28) taken 57446 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 686 times.
✗ Branch 60 (8→9) not taken.
✓ Branch 61 (8→10) taken 33 times.
✗ Branch 62 (16→17) not taken.
✓ Branch 63 (16→18) taken 11 times.
✗ Branch 64 (16→17) not taken.
✓ Branch 65 (16→18) taken 199 times.
✗ Branch 66 (15→16) not taken.
✓ Branch 67 (15→17) taken 711 times.
✗ Branch 68 (47→48) not taken.
✓ Branch 69 (47→49) taken 1641 times.
✗ Branch 70 (16→17) not taken.
✓ Branch 71 (16→18) taken 634 times.
✗ Branch 72 (6→7) not taken.
✓ Branch 73 (6→8) taken 6 times.
✗ Branch 74 (13→14) not taken.
✓ Branch 75 (13→15) taken 179 times.
✗ Branch 76 (13→14) not taken.
✓ Branch 77 (13→15) taken 102 times.
✗ Branch 78 (11→12) not taken.
✓ Branch 79 (11→13) taken 7588 times.
✗ Branch 80 (50→51) not taken.
✓ Branch 81 (50→52) taken 70 times.
✗ Branch 82 (52→53) not taken.
✓ Branch 83 (52→54) taken 1185 times.
✗ Branch 84 (7→8) not taken.
✓ Branch 85 (7→9) taken 746 times.
✗ Branch 86 (14→15) not taken.
✓ Branch 87 (14→16) taken 16 times.
✗ Branch 88 (8→9) not taken.
✓ Branch 89 (8→10) taken 436 times.
✗ Branch 90 (14→15) not taken.
✓ Branch 91 (14→16) taken 294 times.
✗ Branch 92 (34→35) not taken.
✓ Branch 93 (34→36) taken 28300 times.
✗ Branch 94 (26→27) not taken.
✓ Branch 95 (26→28) taken 23621 times.
✗ Branch 96 (8→9) not taken.
✓ Branch 97 (8→10) taken 10868 times.
✗ Branch 98 (19→20) not taken.
✓ Branch 99 (19→21) taken 15880 times.
✗ Branch 100 (64→65) not taken.
✓ Branch 101 (64→66) taken 188 times.
✗ Branch 102 (20→21) not taken.
✓ Branch 103 (20→22) taken 1272 times.
✗ Branch 104 (13→14) not taken.
✓ Branch 105 (13→15) taken 741 times.
✗ Branch 106 (7→8) not taken.
✓ Branch 107 (7→9) taken 66 times.
✗ Branch 108 (9→10) not taken.
✓ Branch 109 (9→11) taken 10178 times.
✗ Branch 110 (13→14) not taken.
✓ Branch 111 (13→15) taken 6694 times.
✗ Branch 112 (7→8) not taken.
✓ Branch 113 (7→9) taken 761 times.
✗ Branch 114 (7→8) not taken.
✓ Branch 115 (7→9) taken 4963 times.
✗ Branch 116 (107→108) not taken.
✓ Branch 117 (107→109) taken 16786 times.
✗ Branch 118 (8→9) not taken.
✓ Branch 119 (8→10) taken 27 times.
✗ Branch 120 (8→9) not taken.
✓ Branch 121 (8→10) taken 6 times.
✗ Branch 122 (11→12) not taken.
✓ Branch 123 (11→13) taken 53 times.
✗ Branch 124 (18→19) not taken.
✓ Branch 125 (18→20) taken 12 times.
✗ Branch 126 (16→17) not taken.
✓ Branch 127 (16→18) taken 171 times.
✗ Branch 128 (19→20) not taken.
✓ Branch 129 (19→21) taken 3401 times.
✗ Branch 130 (12→13) not taken.
✓ Branch 131 (12→14) taken 9 times.
✗ Branch 132 (12→13) not taken.
✓ Branch 133 (12→14) taken 576 times.
✗ Branch 134 (11→12) not taken.
✓ Branch 135 (11→13) taken 88 times.
✗ Branch 136 (11→12) not taken.
✓ Branch 137 (11→13) taken 1036 times.
✗ Branch 138 (8→9) not taken.
✓ Branch 139 (8→10) taken 2079 times.
✗ Branch 140 (17→18) not taken.
✓ Branch 141 (17→19) taken 476 times.
✗ Branch 142 (41→42) not taken.
✓ Branch 143 (41→43) taken 853 times.
✗ Branch 144 (19→20) not taken.
✓ Branch 145 (19→21) taken 765 times.
✗ Branch 146 (24→25) not taken.
✓ Branch 147 (24→26) taken 47 times.
✗ Branch 148 (12→13) not taken.
✓ Branch 149 (12→14) taken 761 times.
✗ Branch 150 (26→27) not taken.
✓ Branch 151 (26→28) taken 66 times.
✗ Branch 152 (68→69) not taken.
✓ Branch 153 (68→70) taken 82 times.
✗ Branch 154 (78→79) not taken.
✓ Branch 155 (78→80) taken 589 times.
✗ Branch 156 (30→31) not taken.
✓ Branch 157 (30→32) taken 8964 times.
✗ Branch 158 (47→48) not taken.
✓ Branch 159 (47→49) taken 2956 times.
✗ Branch 160 (51→52) not taken.
✓ Branch 161 (51→53) taken 6008 times.
✗ Branch 162 (22→23) not taken.
✓ Branch 163 (22→24) taken 389 times.
✗ Branch 164 (129→130) not taken.
✓ Branch 165 (129→131) taken 1014 times.
1268338 assert(parentStack.top() == node);
171 1268338 parentStack.pop();
172 1268338 return node;
173 }
174
175 ALWAYS_INLINE CodeLoc getCodeLoc(const ParserRuleContext *ctx) const {
176
83/166
✓ Branch 0 (2→3) taken 94 times.
✗ Branch 1 (2→14) not taken.
✓ Branch 2 (2→3) taken 13021 times.
✗ Branch 3 (2→14) not taken.
✓ Branch 4 (2→3) taken 36372 times.
✗ Branch 5 (2→14) not taken.
✓ Branch 6 (2→3) taken 36373 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 211 times.
✗ Branch 15 (2→14) not taken.
✓ Branch 16 (2→3) taken 66 times.
✗ Branch 17 (2→14) not taken.
✓ Branch 18 (2→3) taken 12893 times.
✗ Branch 19 (2→14) not taken.
✓ Branch 20 (2→3) taken 14495 times.
✗ Branch 21 (2→14) not taken.
✓ Branch 22 (2→3) taken 14122 times.
✗ Branch 23 (2→14) not taken.
✓ Branch 24 (2→3) taken 71345 times.
✗ Branch 25 (2→14) not taken.
✓ Branch 26 (2→3) taken 90759 times.
✗ Branch 27 (2→14) not taken.
✓ Branch 28 (2→3) taken 72394 times.
✗ Branch 29 (2→14) not taken.
✓ Branch 30 (2→3) taken 65539 times.
✗ Branch 31 (2→14) not taken.
✓ Branch 32 (2→3) taken 64423 times.
✗ Branch 33 (2→14) not taken.
✓ Branch 34 (2→3) taken 61218 times.
✗ Branch 35 (2→14) not taken.
✓ Branch 36 (2→3) taken 61157 times.
✗ Branch 37 (2→14) not taken.
✓ Branch 38 (2→3) taken 58224 times.
✗ Branch 39 (2→14) not taken.
✓ Branch 40 (2→3) taken 53833 times.
✗ Branch 41 (2→14) not taken.
✓ Branch 42 (2→3) taken 53806 times.
✗ Branch 43 (2→14) not taken.
✓ Branch 44 (2→3) taken 53802 times.
✗ Branch 45 (2→14) not taken.
✓ Branch 46 (2→3) taken 53738 times.
✗ Branch 47 (2→14) not taken.
✓ Branch 48 (2→3) taken 53509 times.
✗ Branch 49 (2→14) not taken.
✓ Branch 50 (2→3) taken 52400 times.
✗ Branch 51 (2→14) not taken.
✓ Branch 52 (2→3) taken 51807 times.
✗ Branch 53 (2→14) not taken.
✓ Branch 54 (2→3) taken 57448 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 686 times.
✗ Branch 59 (2→14) not taken.
✓ Branch 60 (2→3) taken 33 times.
✗ Branch 61 (2→14) not taken.
✓ Branch 62 (2→3) taken 11 times.
✗ Branch 63 (2→14) not taken.
✓ Branch 64 (2→3) taken 199 times.
✗ Branch 65 (2→14) not taken.
✓ Branch 66 (2→3) taken 711 times.
✗ Branch 67 (2→14) not taken.
✓ Branch 68 (2→3) taken 1641 times.
✗ Branch 69 (2→14) not taken.
✓ Branch 70 (2→3) taken 634 times.
✗ Branch 71 (2→14) not taken.
✓ Branch 72 (2→3) taken 6 times.
✗ Branch 73 (2→14) not taken.
✓ Branch 74 (2→3) taken 179 times.
✗ Branch 75 (2→14) not taken.
✓ Branch 76 (2→3) taken 102 times.
✗ Branch 77 (2→14) not taken.
✓ Branch 78 (2→3) taken 7588 times.
✗ Branch 79 (2→14) not taken.
✓ Branch 80 (2→3) taken 70 times.
✗ Branch 81 (2→14) not taken.
✓ Branch 82 (2→3) taken 1186 times.
✗ Branch 83 (2→14) not taken.
✓ Branch 84 (2→3) taken 747 times.
✗ Branch 85 (2→14) not taken.
✓ Branch 86 (2→3) taken 16 times.
✗ Branch 87 (2→14) not taken.
✓ Branch 88 (2→3) taken 436 times.
✗ Branch 89 (2→14) not taken.
✓ Branch 90 (2→3) taken 295 times.
✗ Branch 91 (2→14) not taken.
✓ Branch 92 (2→3) taken 28300 times.
✗ Branch 93 (2→14) not taken.
✓ Branch 94 (2→3) taken 23622 times.
✗ Branch 95 (2→14) not taken.
✓ Branch 96 (2→3) taken 10868 times.
✗ Branch 97 (2→14) not taken.
✓ Branch 98 (2→3) taken 15884 times.
✗ Branch 99 (2→14) not taken.
✓ Branch 100 (2→3) taken 188 times.
✗ Branch 101 (2→14) not taken.
✓ Branch 102 (2→3) taken 1272 times.
✗ Branch 103 (2→14) not taken.
✓ Branch 104 (2→3) taken 741 times.
✗ Branch 105 (2→14) not taken.
✓ Branch 106 (2→3) taken 66 times.
✗ Branch 107 (2→14) not taken.
✓ Branch 108 (2→3) taken 10178 times.
✗ Branch 109 (2→14) not taken.
✓ Branch 110 (2→3) taken 6694 times.
✗ Branch 111 (2→14) not taken.
✓ Branch 112 (2→3) taken 761 times.
✗ Branch 113 (2→14) not taken.
✓ Branch 114 (2→3) taken 4963 times.
✗ Branch 115 (2→14) not taken.
✓ Branch 116 (2→3) taken 16790 times.
✗ Branch 117 (2→14) not taken.
✓ Branch 118 (2→3) taken 27 times.
✗ Branch 119 (2→14) not taken.
✓ Branch 120 (2→3) taken 6 times.
✗ Branch 121 (2→14) not taken.
✓ Branch 122 (2→3) taken 53 times.
✗ Branch 123 (2→14) not taken.
✓ Branch 124 (2→3) taken 12 times.
✗ Branch 125 (2→14) not taken.
✓ Branch 126 (2→3) taken 171 times.
✗ Branch 127 (2→14) not taken.
✓ Branch 128 (2→3) taken 3401 times.
✗ Branch 129 (2→14) not taken.
✓ Branch 130 (2→3) taken 9 times.
✗ Branch 131 (2→14) not taken.
✓ Branch 132 (2→3) taken 576 times.
✗ Branch 133 (2→14) not taken.
✓ Branch 134 (2→3) taken 88 times.
✗ Branch 135 (2→14) not taken.
✓ Branch 136 (2→3) taken 1036 times.
✗ Branch 137 (2→14) not taken.
✓ Branch 138 (2→3) taken 2079 times.
✗ Branch 139 (2→14) not taken.
✓ Branch 140 (2→3) taken 476 times.
✗ Branch 141 (2→14) not taken.
✓ Branch 142 (2→3) taken 853 times.
✗ Branch 143 (2→14) not taken.
✓ Branch 144 (2→3) taken 765 times.
✗ Branch 145 (2→14) not taken.
✓ Branch 146 (2→3) taken 47 times.
✗ Branch 147 (2→14) not taken.
✓ Branch 148 (2→3) taken 761 times.
✗ Branch 149 (2→14) not taken.
✓ Branch 150 (2→3) taken 66 times.
✗ Branch 151 (2→14) not taken.
✓ Branch 152 (2→3) taken 82 times.
✗ Branch 153 (2→14) not taken.
✓ Branch 154 (2→3) taken 589 times.
✗ Branch 155 (2→14) not taken.
✓ Branch 156 (2→3) taken 8964 times.
✗ Branch 157 (2→14) not taken.
✓ Branch 158 (2→3) taken 2956 times.
✗ Branch 159 (2→14) not taken.
✓ Branch 160 (2→3) taken 6008 times.
✗ Branch 161 (2→14) not taken.
✓ Branch 162 (2→3) taken 393 times.
✗ Branch 163 (2→14) not taken.
✓ Branch 164 (2→3) taken 1019 times.
✗ Branch 165 (2→13) not taken.
1268394 const size_t startIdx = ctx->start->getStartIndex();
177
166/332
✓ Branch 0 (3→4) taken 94 times.
✗ Branch 1 (3→6) not taken.
✓ Branch 2 (4→5) taken 94 times.
✗ Branch 3 (4→14) not taken.
✓ Branch 4 (3→4) taken 13021 times.
✗ Branch 5 (3→6) not taken.
✓ Branch 6 (4→5) taken 13021 times.
✗ Branch 7 (4→14) not taken.
✓ Branch 8 (3→4) taken 36372 times.
✗ Branch 9 (3→6) not taken.
✓ Branch 10 (4→5) taken 36372 times.
✗ Branch 11 (4→14) not taken.
✓ Branch 12 (3→4) taken 36373 times.
✗ Branch 13 (3→6) not taken.
✓ Branch 14 (4→5) taken 36373 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 211 times.
✗ Branch 29 (3→6) not taken.
✓ Branch 30 (4→5) taken 211 times.
✗ Branch 31 (4→14) not taken.
✓ Branch 32 (3→4) taken 66 times.
✗ Branch 33 (3→6) not taken.
✓ Branch 34 (4→5) taken 66 times.
✗ Branch 35 (4→14) not taken.
✓ Branch 36 (3→4) taken 12893 times.
✗ Branch 37 (3→6) not taken.
✓ Branch 38 (4→5) taken 12893 times.
✗ Branch 39 (4→14) not taken.
✓ Branch 40 (3→4) taken 14495 times.
✗ Branch 41 (3→6) not taken.
✓ Branch 42 (4→5) taken 14495 times.
✗ Branch 43 (4→14) not taken.
✓ Branch 44 (3→4) taken 14122 times.
✗ Branch 45 (3→6) not taken.
✓ Branch 46 (4→5) taken 14122 times.
✗ Branch 47 (4→14) not taken.
✓ Branch 48 (3→4) taken 71345 times.
✗ Branch 49 (3→6) not taken.
✓ Branch 50 (4→5) taken 71345 times.
✗ Branch 51 (4→14) not taken.
✓ Branch 52 (3→4) taken 90759 times.
✗ Branch 53 (3→6) not taken.
✓ Branch 54 (4→5) taken 90759 times.
✗ Branch 55 (4→14) not taken.
✓ Branch 56 (3→4) taken 72394 times.
✗ Branch 57 (3→6) not taken.
✓ Branch 58 (4→5) taken 72394 times.
✗ Branch 59 (4→14) not taken.
✓ Branch 60 (3→4) taken 65539 times.
✗ Branch 61 (3→6) not taken.
✓ Branch 62 (4→5) taken 65539 times.
✗ Branch 63 (4→14) not taken.
✓ Branch 64 (3→4) taken 64423 times.
✗ Branch 65 (3→6) not taken.
✓ Branch 66 (4→5) taken 64423 times.
✗ Branch 67 (4→14) not taken.
✓ Branch 68 (3→4) taken 61218 times.
✗ Branch 69 (3→6) not taken.
✓ Branch 70 (4→5) taken 61218 times.
✗ Branch 71 (4→14) not taken.
✓ Branch 72 (3→4) taken 61157 times.
✗ Branch 73 (3→6) not taken.
✓ Branch 74 (4→5) taken 61157 times.
✗ Branch 75 (4→14) not taken.
✓ Branch 76 (3→4) taken 58224 times.
✗ Branch 77 (3→6) not taken.
✓ Branch 78 (4→5) taken 58224 times.
✗ Branch 79 (4→14) not taken.
✓ Branch 80 (3→4) taken 53833 times.
✗ Branch 81 (3→6) not taken.
✓ Branch 82 (4→5) taken 53833 times.
✗ Branch 83 (4→14) not taken.
✓ Branch 84 (3→4) taken 53806 times.
✗ Branch 85 (3→6) not taken.
✓ Branch 86 (4→5) taken 53806 times.
✗ Branch 87 (4→14) not taken.
✓ Branch 88 (3→4) taken 53802 times.
✗ Branch 89 (3→6) not taken.
✓ Branch 90 (4→5) taken 53802 times.
✗ Branch 91 (4→14) not taken.
✓ Branch 92 (3→4) taken 53738 times.
✗ Branch 93 (3→6) not taken.
✓ Branch 94 (4→5) taken 53738 times.
✗ Branch 95 (4→14) not taken.
✓ Branch 96 (3→4) taken 53509 times.
✗ Branch 97 (3→6) not taken.
✓ Branch 98 (4→5) taken 53509 times.
✗ Branch 99 (4→14) not taken.
✓ Branch 100 (3→4) taken 52400 times.
✗ Branch 101 (3→6) not taken.
✓ Branch 102 (4→5) taken 52400 times.
✗ Branch 103 (4→14) not taken.
✓ Branch 104 (3→4) taken 51807 times.
✗ Branch 105 (3→6) not taken.
✓ Branch 106 (4→5) taken 51807 times.
✗ Branch 107 (4→14) not taken.
✓ Branch 108 (3→4) taken 57448 times.
✗ Branch 109 (3→6) not taken.
✓ Branch 110 (4→5) taken 57448 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 686 times.
✗ Branch 117 (3→6) not taken.
✓ Branch 118 (4→5) taken 686 times.
✗ Branch 119 (4→14) not taken.
✓ Branch 120 (3→4) taken 33 times.
✗ Branch 121 (3→6) not taken.
✓ Branch 122 (4→5) taken 33 times.
✗ Branch 123 (4→14) not taken.
✓ Branch 124 (3→4) taken 11 times.
✗ Branch 125 (3→6) not taken.
✓ Branch 126 (4→5) taken 11 times.
✗ Branch 127 (4→14) not taken.
✓ Branch 128 (3→4) taken 199 times.
✗ Branch 129 (3→6) not taken.
✓ Branch 130 (4→5) taken 199 times.
✗ Branch 131 (4→14) not taken.
✓ Branch 132 (3→4) taken 711 times.
✗ Branch 133 (3→6) not taken.
✓ Branch 134 (4→5) taken 711 times.
✗ Branch 135 (4→14) not taken.
✓ Branch 136 (3→4) taken 1641 times.
✗ Branch 137 (3→6) not taken.
✓ Branch 138 (4→5) taken 1641 times.
✗ Branch 139 (4→14) not taken.
✓ Branch 140 (3→4) taken 634 times.
✗ Branch 141 (3→6) not taken.
✓ Branch 142 (4→5) taken 634 times.
✗ Branch 143 (4→14) not taken.
✓ Branch 144 (3→4) taken 6 times.
✗ Branch 145 (3→6) not taken.
✓ Branch 146 (4→5) taken 6 times.
✗ Branch 147 (4→14) not taken.
✓ Branch 148 (3→4) taken 179 times.
✗ Branch 149 (3→6) not taken.
✓ Branch 150 (4→5) taken 179 times.
✗ Branch 151 (4→14) not taken.
✓ Branch 152 (3→4) taken 102 times.
✗ Branch 153 (3→6) not taken.
✓ Branch 154 (4→5) taken 102 times.
✗ Branch 155 (4→14) not taken.
✓ Branch 156 (3→4) taken 7588 times.
✗ Branch 157 (3→6) not taken.
✓ Branch 158 (4→5) taken 7588 times.
✗ Branch 159 (4→14) not taken.
✓ Branch 160 (3→4) taken 70 times.
✗ Branch 161 (3→6) not taken.
✓ Branch 162 (4→5) taken 70 times.
✗ Branch 163 (4→14) not taken.
✓ Branch 164 (3→4) taken 1186 times.
✗ Branch 165 (3→6) not taken.
✓ Branch 166 (4→5) taken 1186 times.
✗ Branch 167 (4→14) not taken.
✓ Branch 168 (3→4) taken 747 times.
✗ Branch 169 (3→6) not taken.
✓ Branch 170 (4→5) taken 747 times.
✗ Branch 171 (4→14) not taken.
✓ Branch 172 (3→4) taken 16 times.
✗ Branch 173 (3→6) not taken.
✓ Branch 174 (4→5) taken 16 times.
✗ Branch 175 (4→14) not taken.
✓ Branch 176 (3→4) taken 436 times.
✗ Branch 177 (3→6) not taken.
✓ Branch 178 (4→5) taken 436 times.
✗ Branch 179 (4→14) not taken.
✓ Branch 180 (3→4) taken 295 times.
✗ Branch 181 (3→6) not taken.
✓ Branch 182 (4→5) taken 295 times.
✗ Branch 183 (4→14) not taken.
✓ Branch 184 (3→4) taken 28300 times.
✗ Branch 185 (3→6) not taken.
✓ Branch 186 (4→5) taken 28300 times.
✗ Branch 187 (4→14) not taken.
✓ Branch 188 (3→4) taken 23622 times.
✗ Branch 189 (3→6) not taken.
✓ Branch 190 (4→5) taken 23622 times.
✗ Branch 191 (4→14) not taken.
✓ Branch 192 (3→4) taken 10868 times.
✗ Branch 193 (3→6) not taken.
✓ Branch 194 (4→5) taken 10868 times.
✗ Branch 195 (4→14) not taken.
✓ Branch 196 (3→4) taken 15884 times.
✗ Branch 197 (3→6) not taken.
✓ Branch 198 (4→5) taken 15884 times.
✗ Branch 199 (4→14) not taken.
✓ Branch 200 (3→4) taken 188 times.
✗ Branch 201 (3→6) not taken.
✓ Branch 202 (4→5) taken 188 times.
✗ Branch 203 (4→14) not taken.
✓ Branch 204 (3→4) taken 1272 times.
✗ Branch 205 (3→6) not taken.
✓ Branch 206 (4→5) taken 1272 times.
✗ Branch 207 (4→14) not taken.
✓ Branch 208 (3→4) taken 741 times.
✗ Branch 209 (3→6) not taken.
✓ Branch 210 (4→5) taken 741 times.
✗ Branch 211 (4→14) not taken.
✓ Branch 212 (3→4) taken 66 times.
✗ Branch 213 (3→6) not taken.
✓ Branch 214 (4→5) taken 66 times.
✗ Branch 215 (4→14) not taken.
✓ Branch 216 (3→4) taken 10178 times.
✗ Branch 217 (3→6) not taken.
✓ Branch 218 (4→5) taken 10178 times.
✗ Branch 219 (4→14) not taken.
✓ Branch 220 (3→4) taken 6694 times.
✗ Branch 221 (3→6) not taken.
✓ Branch 222 (4→5) taken 6694 times.
✗ Branch 223 (4→14) not taken.
✓ Branch 224 (3→4) taken 761 times.
✗ Branch 225 (3→6) not taken.
✓ Branch 226 (4→5) taken 761 times.
✗ Branch 227 (4→14) not taken.
✓ Branch 228 (3→4) taken 4963 times.
✗ Branch 229 (3→6) not taken.
✓ Branch 230 (4→5) taken 4963 times.
✗ Branch 231 (4→14) not taken.
✓ Branch 232 (3→4) taken 16790 times.
✗ Branch 233 (3→6) not taken.
✓ Branch 234 (4→5) taken 16790 times.
✗ Branch 235 (4→14) not taken.
✓ Branch 236 (3→4) taken 27 times.
✗ Branch 237 (3→6) not taken.
✓ Branch 238 (4→5) taken 27 times.
✗ Branch 239 (4→14) not taken.
✓ Branch 240 (3→4) taken 6 times.
✗ Branch 241 (3→6) not taken.
✓ Branch 242 (4→5) taken 6 times.
✗ Branch 243 (4→14) not taken.
✓ Branch 244 (3→4) taken 53 times.
✗ Branch 245 (3→6) not taken.
✓ Branch 246 (4→5) taken 53 times.
✗ Branch 247 (4→14) not taken.
✓ Branch 248 (3→4) taken 12 times.
✗ Branch 249 (3→6) not taken.
✓ Branch 250 (4→5) taken 12 times.
✗ Branch 251 (4→14) not taken.
✓ Branch 252 (3→4) taken 171 times.
✗ Branch 253 (3→6) not taken.
✓ Branch 254 (4→5) taken 171 times.
✗ Branch 255 (4→14) not taken.
✓ Branch 256 (3→4) taken 3401 times.
✗ Branch 257 (3→6) not taken.
✓ Branch 258 (4→5) taken 3401 times.
✗ Branch 259 (4→14) not taken.
✓ Branch 260 (3→4) taken 9 times.
✗ Branch 261 (3→6) not taken.
✓ Branch 262 (4→5) taken 9 times.
✗ Branch 263 (4→14) not taken.
✓ Branch 264 (3→4) taken 576 times.
✗ Branch 265 (3→6) not taken.
✓ Branch 266 (4→5) taken 576 times.
✗ Branch 267 (4→14) not taken.
✓ Branch 268 (3→4) taken 88 times.
✗ Branch 269 (3→6) not taken.
✓ Branch 270 (4→5) taken 88 times.
✗ Branch 271 (4→14) not taken.
✓ Branch 272 (3→4) taken 1036 times.
✗ Branch 273 (3→6) not taken.
✓ Branch 274 (4→5) taken 1036 times.
✗ Branch 275 (4→14) not taken.
✓ Branch 276 (3→4) taken 2079 times.
✗ Branch 277 (3→6) not taken.
✓ Branch 278 (4→5) taken 2079 times.
✗ Branch 279 (4→14) not taken.
✓ Branch 280 (3→4) taken 476 times.
✗ Branch 281 (3→6) not taken.
✓ Branch 282 (4→5) taken 476 times.
✗ Branch 283 (4→14) not taken.
✓ Branch 284 (3→4) taken 853 times.
✗ Branch 285 (3→6) not taken.
✓ Branch 286 (4→5) taken 853 times.
✗ Branch 287 (4→14) not taken.
✓ Branch 288 (3→4) taken 765 times.
✗ Branch 289 (3→6) not taken.
✓ Branch 290 (4→5) taken 765 times.
✗ Branch 291 (4→14) not taken.
✓ Branch 292 (3→4) taken 47 times.
✗ Branch 293 (3→6) not taken.
✓ Branch 294 (4→5) taken 47 times.
✗ Branch 295 (4→14) not taken.
✓ Branch 296 (3→4) taken 761 times.
✗ Branch 297 (3→6) not taken.
✓ Branch 298 (4→5) taken 761 times.
✗ Branch 299 (4→14) not taken.
✓ Branch 300 (3→4) taken 66 times.
✗ Branch 301 (3→6) not taken.
✓ Branch 302 (4→5) taken 66 times.
✗ Branch 303 (4→14) not taken.
✓ Branch 304 (3→4) taken 82 times.
✗ Branch 305 (3→6) not taken.
✓ Branch 306 (4→5) taken 82 times.
✗ Branch 307 (4→14) not taken.
✓ Branch 308 (3→4) taken 589 times.
✗ Branch 309 (3→6) not taken.
✓ Branch 310 (4→5) taken 589 times.
✗ Branch 311 (4→14) not taken.
✓ Branch 312 (3→4) taken 8964 times.
✗ Branch 313 (3→6) not taken.
✓ Branch 314 (4→5) taken 8964 times.
✗ Branch 315 (4→14) not taken.
✓ Branch 316 (3→4) taken 2956 times.
✗ Branch 317 (3→6) not taken.
✓ Branch 318 (4→5) taken 2956 times.
✗ Branch 319 (4→14) not taken.
✓ Branch 320 (3→4) taken 6008 times.
✗ Branch 321 (3→6) not taken.
✓ Branch 322 (4→5) taken 6008 times.
✗ Branch 323 (4→14) not taken.
✓ Branch 324 (3→4) taken 393 times.
✗ Branch 325 (3→6) not taken.
✓ Branch 326 (4→5) taken 393 times.
✗ Branch 327 (4→14) not taken.
✓ Branch 328 (3→4) taken 1019 times.
✗ Branch 329 (3→6) not taken.
✓ Branch 330 (4→5) taken 1019 times.
✗ Branch 331 (4→13) not taken.
1268394 const size_t stopIdx = ctx->stop ? ctx->stop->getStopIndex() : startIdx;
178
83/166
✓ Branch 0 (7→8) taken 94 times.
✗ Branch 1 (7→14) not taken.
✓ Branch 2 (7→8) taken 13021 times.
✗ Branch 3 (7→14) not taken.
✓ Branch 4 (7→8) taken 36372 times.
✗ Branch 5 (7→14) not taken.
✓ Branch 6 (7→8) taken 36373 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 211 times.
✗ Branch 15 (7→14) not taken.
✓ Branch 16 (7→8) taken 66 times.
✗ Branch 17 (7→14) not taken.
✓ Branch 18 (7→8) taken 12893 times.
✗ Branch 19 (7→14) not taken.
✓ Branch 20 (7→8) taken 14495 times.
✗ Branch 21 (7→14) not taken.
✓ Branch 22 (7→8) taken 14122 times.
✗ Branch 23 (7→14) not taken.
✓ Branch 24 (7→8) taken 71345 times.
✗ Branch 25 (7→14) not taken.
✓ Branch 26 (7→8) taken 90759 times.
✗ Branch 27 (7→14) not taken.
✓ Branch 28 (7→8) taken 72394 times.
✗ Branch 29 (7→14) not taken.
✓ Branch 30 (7→8) taken 65539 times.
✗ Branch 31 (7→14) not taken.
✓ Branch 32 (7→8) taken 64423 times.
✗ Branch 33 (7→14) not taken.
✓ Branch 34 (7→8) taken 61218 times.
✗ Branch 35 (7→14) not taken.
✓ Branch 36 (7→8) taken 61157 times.
✗ Branch 37 (7→14) not taken.
✓ Branch 38 (7→8) taken 58224 times.
✗ Branch 39 (7→14) not taken.
✓ Branch 40 (7→8) taken 53833 times.
✗ Branch 41 (7→14) not taken.
✓ Branch 42 (7→8) taken 53806 times.
✗ Branch 43 (7→14) not taken.
✓ Branch 44 (7→8) taken 53802 times.
✗ Branch 45 (7→14) not taken.
✓ Branch 46 (7→8) taken 53738 times.
✗ Branch 47 (7→14) not taken.
✓ Branch 48 (7→8) taken 53509 times.
✗ Branch 49 (7→14) not taken.
✓ Branch 50 (7→8) taken 52400 times.
✗ Branch 51 (7→14) not taken.
✓ Branch 52 (7→8) taken 51807 times.
✗ Branch 53 (7→14) not taken.
✓ Branch 54 (7→8) taken 57448 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 686 times.
✗ Branch 59 (7→14) not taken.
✓ Branch 60 (7→8) taken 33 times.
✗ Branch 61 (7→14) not taken.
✓ Branch 62 (7→8) taken 11 times.
✗ Branch 63 (7→14) not taken.
✓ Branch 64 (7→8) taken 199 times.
✗ Branch 65 (7→14) not taken.
✓ Branch 66 (7→8) taken 711 times.
✗ Branch 67 (7→14) not taken.
✓ Branch 68 (7→8) taken 1641 times.
✗ Branch 69 (7→14) not taken.
✓ Branch 70 (7→8) taken 634 times.
✗ Branch 71 (7→14) not taken.
✓ Branch 72 (7→8) taken 6 times.
✗ Branch 73 (7→14) not taken.
✓ Branch 74 (7→8) taken 179 times.
✗ Branch 75 (7→14) not taken.
✓ Branch 76 (7→8) taken 102 times.
✗ Branch 77 (7→14) not taken.
✓ Branch 78 (7→8) taken 7588 times.
✗ Branch 79 (7→14) not taken.
✓ Branch 80 (7→8) taken 70 times.
✗ Branch 81 (7→14) not taken.
✓ Branch 82 (7→8) taken 1186 times.
✗ Branch 83 (7→14) not taken.
✓ Branch 84 (7→8) taken 747 times.
✗ Branch 85 (7→14) not taken.
✓ Branch 86 (7→8) taken 16 times.
✗ Branch 87 (7→14) not taken.
✓ Branch 88 (7→8) taken 436 times.
✗ Branch 89 (7→14) not taken.
✓ Branch 90 (7→8) taken 295 times.
✗ Branch 91 (7→14) not taken.
✓ Branch 92 (7→8) taken 28300 times.
✗ Branch 93 (7→14) not taken.
✓ Branch 94 (7→8) taken 23622 times.
✗ Branch 95 (7→14) not taken.
✓ Branch 96 (7→8) taken 10868 times.
✗ Branch 97 (7→14) not taken.
✓ Branch 98 (7→8) taken 15884 times.
✗ Branch 99 (7→14) not taken.
✓ Branch 100 (7→8) taken 188 times.
✗ Branch 101 (7→14) not taken.
✓ Branch 102 (7→8) taken 1272 times.
✗ Branch 103 (7→14) not taken.
✓ Branch 104 (7→8) taken 741 times.
✗ Branch 105 (7→14) not taken.
✓ Branch 106 (7→8) taken 66 times.
✗ Branch 107 (7→14) not taken.
✓ Branch 108 (7→8) taken 10178 times.
✗ Branch 109 (7→14) not taken.
✓ Branch 110 (7→8) taken 6694 times.
✗ Branch 111 (7→14) not taken.
✓ Branch 112 (7→8) taken 761 times.
✗ Branch 113 (7→14) not taken.
✓ Branch 114 (7→8) taken 4963 times.
✗ Branch 115 (7→14) not taken.
✓ Branch 116 (7→8) taken 16790 times.
✗ Branch 117 (7→14) not taken.
✓ Branch 118 (7→8) taken 27 times.
✗ Branch 119 (7→14) not taken.
✓ Branch 120 (7→8) taken 6 times.
✗ Branch 121 (7→14) not taken.
✓ Branch 122 (7→8) taken 53 times.
✗ Branch 123 (7→14) not taken.
✓ Branch 124 (7→8) taken 12 times.
✗ Branch 125 (7→14) not taken.
✓ Branch 126 (7→8) taken 171 times.
✗ Branch 127 (7→14) not taken.
✓ Branch 128 (7→8) taken 3401 times.
✗ Branch 129 (7→14) not taken.
✓ Branch 130 (7→8) taken 9 times.
✗ Branch 131 (7→14) not taken.
✓ Branch 132 (7→8) taken 576 times.
✗ Branch 133 (7→14) not taken.
✓ Branch 134 (7→8) taken 88 times.
✗ Branch 135 (7→14) not taken.
✓ Branch 136 (7→8) taken 1036 times.
✗ Branch 137 (7→14) not taken.
✓ Branch 138 (7→8) taken 2079 times.
✗ Branch 139 (7→14) not taken.
✓ Branch 140 (7→8) taken 476 times.
✗ Branch 141 (7→14) not taken.
✓ Branch 142 (7→8) taken 853 times.
✗ Branch 143 (7→14) not taken.
✓ Branch 144 (7→8) taken 765 times.
✗ Branch 145 (7→14) not taken.
✓ Branch 146 (7→8) taken 47 times.
✗ Branch 147 (7→14) not taken.
✓ Branch 148 (7→8) taken 761 times.
✗ Branch 149 (7→14) not taken.
✓ Branch 150 (7→8) taken 66 times.
✗ Branch 151 (7→14) not taken.
✓ Branch 152 (7→8) taken 82 times.
✗ Branch 153 (7→14) not taken.
✓ Branch 154 (7→8) taken 589 times.
✗ Branch 155 (7→14) not taken.
✓ Branch 156 (7→8) taken 8964 times.
✗ Branch 157 (7→14) not taken.
✓ Branch 158 (7→8) taken 2956 times.
✗ Branch 159 (7→14) not taken.
✓ Branch 160 (7→8) taken 6008 times.
✗ Branch 161 (7→14) not taken.
✓ Branch 162 (7→8) taken 393 times.
✗ Branch 163 (7→14) not taken.
✓ Branch 164 (7→8) taken 1019 times.
✗ Branch 165 (7→13) not taken.
1268394 return {ctx->start, startIdx, stopIdx, sourceFile};
179 }
180
181 int32_t parseInt(TerminalNode *terminal);
182 int16_t parseShort(TerminalNode *terminal);
183 int64_t parseLong(TerminalNode *terminal);
184 int8_t parseChar(TerminalNode *terminal) const;
185 static std::string parseString(std::string input);
186 template <typename T> T parseNumeric(TerminalNode *terminal, const NumericParserCallback<T> &cb);
187 static void replaceEscapeChars(std::string &input);
188 std::string getIdentifier(TerminalNode *terminal) const;
189 };
190
191 } // namespace spice::compiler
192