src/compiler/lexer.panack
Green: covered; red: known zero; amber: unavailable. Blank lines are outside the executable-start-line denominator.
1 import "types.panack" 2 3 record StringScan { 4 end: Nat, 5 terminated: Bool 6 } 7 8 pure scan_digits(source: Str, start: Nat): Nat { 9 mut cursor: Nat = start 10 while cursor < len(source) && is_digit(source[cursor]) { 11 cursor = cursor + 1 12 } 13 cursor 14 } 15 16 pure scan_identifier(source: Str, start: Nat): Nat { 17 mut cursor: Nat = start 18 while cursor < len(source) && (is_letter(source[cursor]) || is_digit(source[cursor]) || source[cursor] == "_") { 19 cursor = cursor + 1 20 } 21 cursor 22 } 23 24 pure scan_comment(source: Str, start: Nat): Nat { 25 mut cursor: Nat = start 26 while cursor < len(source) && source[cursor] != "\n" { 27 cursor = cursor + 1 28 } 29 cursor 30 } 31 32 pure scan_string(source: Str, start: Nat): StringScan { 33 mut cursor: Nat = start + 1 34 mut escaped: Bool = false 35 mut terminated: Bool = false 36 while cursor < len(source) && !terminated { 37 if escaped { 38 escaped = false 39 } else { 40 if source[cursor] == "\\" { 41 escaped = true 42 } else { 43 if source[cursor] == "\"" { 44 terminated = true 45 } else { 46 } 47 } 48 } 49 cursor = cursor + 1 50 } 51 StringScan(cursor, terminated) 52 } 53 54 pure advance_position(source: Str, start: Nat, end: Nat, position: SourcePos): SourcePos { 55 mut cursor: Nat = start 56 mut line: Nat = position.line 57 mut column: Nat = position.column 58 while cursor < end { 59 if source[cursor] == "\n" { line = line + 1; column = 1; } 60 else { column = column + 1; } 61 cursor = cursor + 1 62 } 63 SourcePos(position.file, end, line, column) 64 } 65 66 pure source_token(source: Str, kind: TokenKind, text: Str, start: Nat, end: Nat, position: SourcePos): Token { 67 end_position: SourcePos = advance_position(source, start, end, position) 68 Token(kind, text, start, end, position, end_position.line, end_position.column) 69 } 70 71 pure is_two_character_symbol(source: Str, cursor: Nat): Bool { 72 starts_with_at(source, "=>", cursor) || 73 starts_with_at(source, "..", cursor) || 74 starts_with_at(source, "==", cursor) || 75 starts_with_at(source, "!=", cursor) || 76 starts_with_at(source, "<=", cursor) || 77 starts_with_at(source, ">=", cursor) || 78 starts_with_at(source, "&&", cursor) || 79 starts_with_at(source, "||", cursor) 80 } 81 82 pure is_single_character_symbol(character: Str): Bool { 83 character == "(" || character == ")" || 84 character == "{" || character == "}" || 85 character == "[" || character == "]" || 86 character == "." || character == "," || 87 character == ";" || character == ":" || character == "=" || 88 character == "@" || 89 character == "+" || character == "-" || character == "*" || 90 character == "/" || character == "%" || 91 character == "<" || character == ">" || character == "!" 92 } 93 94 pure is_line_prefix_keyword(text: Str): Bool { 95 text == "pure" || text == "import" || text == "type" || 96 text == "record" || text == "enum" || text == "mut" || 97 text == "for" || text == "while" || text == "if" || 98 text == "match" || text == "where" || text == "in" 99 } 100 101 pure is_line_continuation_keyword(text: Str): Bool { 102 text == "else" || text == "where" || text == "in" 103 } 104 105 pure token_can_end_statement(token: Token): Bool { 106 ((token.kind == Identifier() || token.kind == Number() || 107 token.kind == DecimalNumber() || token.kind == StringLiteral()) && 108 !is_line_prefix_keyword(token.text)) || 109 token.text == ")" || token.text == "]" || token.text == "}" 110 } 111 112 pure token_can_start_statement(token: Token): Bool { 113 !is_line_continuation_keyword(token.text) && 114 (token.kind == Identifier() || token.kind == Number() || 115 token.kind == DecimalNumber() || token.kind == StringLiteral() || 116 token.text == "(" || token.text == "[") 117 } 118 119 pure prior_index(value: Nat): Nat { 120 if value == 0 { 0 } else { value - 1 } 121 } 122 123 pure normalize_line_breaks(tokens: [Token]): [Token] { 124 mut result: [Token] = [] 125 mut soft_depth: Nat = 0 126 mut brace_depth: Nat = 0 127 mut brace_soft_depths: Map[Nat,Nat] = map() 128 mut index: Nat = 0 129 130 while index < len(tokens) { 131 token: Token = tokens[index] 132 if token.text == "\n" { 133 mut next_index: Nat = index + 1 134 while next_index < len(tokens) && tokens[next_index].text == "\n" { 135 next_index = next_index + 1 136 } 137 baseline: Nat = if brace_depth > 0 && brace_soft_depths.has(brace_depth) { 138 brace_soft_depths.get(brace_depth) 139 } else { 140 0 141 } 142 if soft_depth <= baseline && len(result) > 0 && next_index < len(tokens) && 143 token_can_end_statement(result[prior_index(len(result))]) && 144 token_can_start_statement(tokens[next_index]) { 145 result = append(result, Token(Punctuation(), ";", token.start, token.end, token.position, token.end_line, token.end_column)) 146 } 147 } else { 148 result = append(result, token) 149 if token.text == "(" || token.text == "[" { 150 soft_depth = soft_depth + 1 151 } else { 152 if (token.text == ")" || token.text == "]") && soft_depth > 0 { 153 soft_depth = prior_index(soft_depth) 154 } else { 155 if token.text == "{" { 156 brace_depth = brace_depth + 1 157 brace_soft_depths = brace_soft_depths.put(brace_depth, soft_depth) 158 } else { 159 if token.text == "}" && brace_depth > 0 { 160 brace_depth = prior_index(brace_depth) 161 } 162 } 163 } 164 } 165 } 166 index = index + 1 167 } 168 169 result 170 } 171 172 pure lex_file(source: Str, file: Str): Result[[Token],[Diagnostic]] { 173 mut tokens: [Token] = [] 174 mut diagnostics: [Diagnostic] = [] 175 mut cursor: Nat = 0 176 mut current_position: SourcePos = SourcePos(file, 0, 1, 1) 177 178 while cursor < len(source) { 179 iteration_start: Nat = cursor 180 character: Str = source[cursor] 181 if character == "\n" { 182 end: Nat = cursor + 1 183 tokens = append(tokens, source_token(source, Punctuation(), "\n", cursor, end, current_position)) 184 cursor = end 185 } else { 186 if is_whitespace(character) { 187 cursor = cursor + 1 188 } else { 189 if starts_with_at(source, "//", cursor) { 190 cursor = scan_comment(source, cursor + 2) 191 } else { 192 if is_digit(character) { 193 integer_end: Nat = scan_digits(source, cursor) 194 if integer_end < len(source) && source[integer_end] == "." && integer_end + 1 < len(source) && is_digit(source[integer_end + 1]) { 195 end: Nat = scan_digits(source, integer_end + 1) 196 tokens = append(tokens, source_token(source, DecimalNumber(), slice(source, cursor, end), cursor, end, current_position)) 197 cursor = end 198 } else { 199 tokens = append(tokens, source_token(source, Number(), slice(source, cursor, integer_end), cursor, integer_end, current_position)) 200 cursor = integer_end 201 } 202 } else { 203 if is_letter(character) || character == "_" { 204 end: Nat = scan_identifier(source, cursor) 205 tokens = append(tokens, source_token(source, Identifier(), slice(source, cursor, end), cursor, end, current_position)) 206 cursor = end 207 } else { 208 if character == "\"" { 209 scanned: StringScan = scan_string(source, cursor) 210 end: Nat = scanned.end 211 if !scanned.terminated { 212 diagnostics = append(diagnostics, Diagnostic("unterminated string", current_position)) 213 } 214 tokens = append(tokens, source_token(source, StringLiteral(), slice(source, cursor, end), cursor, end, current_position)) 215 cursor = end 216 } else { 217 if is_two_character_symbol(source, cursor) { 218 end: Nat = cursor + 2 219 tokens = append(tokens, source_token(source, Punctuation(), slice(source, cursor, end), cursor, end, current_position)) 220 cursor = end 221 } else { 222 if is_single_character_symbol(character) { 223 end: Nat = cursor + 1 224 tokens = append(tokens, source_token(source, Punctuation(), character, cursor, end, current_position)) 225 cursor = end 226 } else { 227 diagnostics = append(diagnostics, Diagnostic("unexpected character ${character}", current_position)) 228 cursor = cursor + 1 229 } 230 } 231 } 232 } 233 } 234 } 235 } 236 } 237 current_position = advance_position(source, iteration_start, cursor, current_position) 238 } 239 240 if len(diagnostics) == 0 { Ok(normalize_line_breaks(tokens)) } else { Error(diagnostics) } 241 } 242 243 pure lex(source: Str): Result[[Token],[Diagnostic]] { 244 lex_file(source, "") 245 } 246 247 pure kind_name(kind: TokenKind): Str { 248 match kind { 249 Identifier() => "identifier", 250 Number() => "number", 251 DecimalNumber() => "decimal", 252 StringLiteral() => "string", 253 Punctuation() => "punctuation" 254 } 255 } 256 257 pure render_tokens(tokens: [Token]): Str { 258 mut output: Str = "" 259 for token in tokens { 260 name: Str = kind_name(token.kind) 261 text: Str = token.text 262 output = output + "${name}:${text}\n" 263 } 264 output 265 } 266 267 pure render_diagnostics(diagnostics: [Diagnostic]): Str { 268 mut output: Str = "" 269 for diagnostic in diagnostics { 270 line: Nat = diagnostic.position.line 271 column: Nat = diagnostic.position.column 272 message: Str = diagnostic.message 273 output = output + "${line}:${column}: ${message}\n" 274 } 275 output 276 } 277 278 pure render(result: Result[[Token],[Diagnostic]]): Str { 279 match result { 280 Ok(tokens) => render_tokens(tokens), 281 Error(diagnostics) => render_diagnostics(diagnostics) 282 } 283 } 284
Functions
[
{
"id": "declaration/2",
"name": "scan_digits",
"line": 8,
"state": "covered",
"entries": "2820"
},
{
"id": "declaration/3",
"name": "scan_identifier",
"line": 16,
"state": "covered",
"entries": "56289"
},
{
"id": "declaration/4",
"name": "scan_comment",
"line": 24,
"state": "covered",
"entries": "301"
},
{
"id": "declaration/5",
"name": "scan_string",
"line": 32,
"state": "covered",
"entries": "2670"
},
{
"id": "declaration/6",
"name": "advance_position",
"line": 54,
"state": "covered",
"entries": "421604"
},
{
"id": "declaration/7",
"name": "source_token",
"line": 66,
"state": "covered",
"entries": "151170"
},
{
"id": "declaration/8",
"name": "is_two_character_symbol",
"line": 71,
"state": "covered",
"entries": "75644"
},
{
"id": "declaration/9",
"name": "is_single_character_symbol",
"line": 82,
"state": "covered",
"entries": "70819"
},
{
"id": "declaration/10",
"name": "is_line_prefix_keyword",
"line": 94,
"state": "covered",
"entries": "1578"
},
{
"id": "declaration/11",
"name": "is_line_continuation_keyword",
"line": 101,
"state": "covered",
"entries": "7941"
},
{
"id": "declaration/12",
"name": "token_can_end_statement",
"line": 105,
"state": "covered",
"entries": "13425"
},
{
"id": "declaration/13",
"name": "token_can_start_statement",
"line": 112,
"state": "covered",
"entries": "7941"
},
{
"id": "declaration/14",
"name": "prior_index",
"line": 119,
"state": "covered",
"entries": "35204"
},
{
"id": "declaration/15",
"name": "normalize_line_breaks",
"line": 123,
"state": "covered",
"entries": "1149"
},
{
"id": "declaration/16",
"name": "lex_file",
"line": 172,
"state": "covered",
"entries": "1156"
},
{
"id": "declaration/17",
"name": "lex",
"line": 243,
"state": "covered",
"entries": "544"
},
{
"id": "declaration/18",
"name": "kind_name",
"line": 247,
"state": "covered",
"entries": "65"
},
{
"id": "declaration/19",
"name": "render_tokens",
"line": 257,
"state": "covered",
"entries": "4"
},
{
"id": "declaration/20",
"name": "render_diagnostics",
"line": 267,
"state": "covered",
"entries": "3"
},
{
"id": "declaration/21",
"name": "render",
"line": 278,
"state": "covered",
"entries": "7"
}
]Source branch outcomes
[
{
"id": "declaration/2/statement/1/decision/body",
"outcome": "body",
"line": 10,
"state": "covered",
"hits": "3554"
},
{
"id": "declaration/2/statement/1/decision/exit",
"outcome": "exit",
"line": 10,
"state": "covered",
"hits": "2820"
},
{
"id": "declaration/2/statement/1/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 10,
"state": "covered",
"hits": "6350"
},
{
"id": "declaration/2/statement/1/condition/decision/skip-right",
"outcome": "skip-right",
"line": 10,
"state": "covered",
"hits": "24"
},
{
"id": "declaration/3/statement/1/decision/body",
"outcome": "body",
"line": 18,
"state": "covered",
"hits": "366640"
},
{
"id": "declaration/3/statement/1/decision/exit",
"outcome": "exit",
"line": 18,
"state": "covered",
"hits": "56289"
},
{
"id": "declaration/3/statement/1/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 18,
"state": "covered",
"hits": "422807"
},
{
"id": "declaration/3/statement/1/condition/decision/skip-right",
"outcome": "skip-right",
"line": 18,
"state": "covered",
"hits": "122"
},
{
"id": "declaration/3/statement/1/condition/right/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 18,
"state": "covered",
"hits": "64089"
},
{
"id": "declaration/3/statement/1/condition/right/decision/skip-right",
"outcome": "skip-right",
"line": 18,
"state": "covered",
"hits": "358718"
},
{
"id": "declaration/3/statement/1/condition/right/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 18,
"state": "covered",
"hits": "64478"
},
{
"id": "declaration/3/statement/1/condition/right/left/decision/skip-right",
"outcome": "skip-right",
"line": 18,
"state": "covered",
"hits": "358329"
},
{
"id": "declaration/4/statement/1/decision/body",
"outcome": "body",
"line": 26,
"state": "covered",
"hits": "20945"
},
{
"id": "declaration/4/statement/1/decision/exit",
"outcome": "exit",
"line": 26,
"state": "covered",
"hits": "301"
},
{
"id": "declaration/4/statement/1/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 26,
"state": "covered",
"hits": "21244"
},
{
"id": "declaration/4/statement/1/condition/decision/skip-right",
"outcome": "skip-right",
"line": 26,
"state": "covered",
"hits": "2"
},
{
"id": "declaration/5/statement/3/decision/body",
"outcome": "body",
"line": 36,
"state": "covered",
"hits": "35716"
},
{
"id": "declaration/5/statement/3/decision/exit",
"outcome": "exit",
"line": 36,
"state": "covered",
"hits": "2670"
},
{
"id": "declaration/5/statement/3/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 36,
"state": "covered",
"hits": "38379"
},
{
"id": "declaration/5/statement/3/condition/decision/skip-right",
"outcome": "skip-right",
"line": 36,
"state": "covered",
"hits": "7"
},
{
"id": "declaration/5/statement/3/body/statement/0/value/decision/true",
"outcome": "true",
"line": 37,
"state": "covered",
"hits": "140"
},
{
"id": "declaration/5/statement/3/body/statement/0/value/decision/false",
"outcome": "false",
"line": 37,
"state": "covered",
"hits": "35576"
},
{
"id": "declaration/5/statement/3/body/statement/0/value/false/tail/decision/true",
"outcome": "true",
"line": 40,
"state": "covered",
"hits": "140"
},
{
"id": "declaration/5/statement/3/body/statement/0/value/false/tail/decision/false",
"outcome": "false",
"line": 40,
"state": "covered",
"hits": "35436"
},
{
"id": "declaration/5/statement/3/body/statement/0/value/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 43,
"state": "covered",
"hits": "2668"
},
{
"id": "declaration/5/statement/3/body/statement/0/value/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 43,
"state": "covered",
"hits": "32768"
},
{
"id": "declaration/6/statement/3/decision/body",
"outcome": "body",
"line": 58,
"state": "covered",
"hits": "1146174"
},
{
"id": "declaration/6/statement/3/decision/exit",
"outcome": "exit",
"line": 58,
"state": "covered",
"hits": "421604"
},
{
"id": "declaration/6/statement/3/body/statement/0/value/decision/true",
"outcome": "true",
"line": 59,
"state": "covered",
"hits": "27546"
},
{
"id": "declaration/6/statement/3/body/statement/0/value/decision/false",
"outcome": "false",
"line": 59,
"state": "covered",
"hits": "1118628"
},
{
"id": "declaration/8/tail/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 72,
"state": "covered",
"hits": "71492"
},
{
"id": "declaration/8/tail/decision/skip-right",
"outcome": "skip-right",
"line": 72,
"state": "covered",
"hits": "4152"
},
{
"id": "declaration/8/tail/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 72,
"state": "covered",
"hits": "71988"
},
{
"id": "declaration/8/tail/left/decision/skip-right",
"outcome": "skip-right",
"line": 72,
"state": "covered",
"hits": "3656"
},
{
"id": "declaration/8/tail/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 72,
"state": "covered",
"hits": "72119"
},
{
"id": "declaration/8/tail/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 72,
"state": "covered",
"hits": "3525"
},
{
"id": "declaration/8/tail/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 72,
"state": "covered",
"hits": "72176"
},
{
"id": "declaration/8/tail/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 72,
"state": "covered",
"hits": "3468"
},
{
"id": "declaration/8/tail/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 72,
"state": "covered",
"hits": "72343"
},
{
"id": "declaration/8/tail/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 72,
"state": "covered",
"hits": "3301"
},
{
"id": "declaration/8/tail/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 72,
"state": "covered",
"hits": "73796"
},
{
"id": "declaration/8/tail/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 72,
"state": "covered",
"hits": "1848"
},
{
"id": "declaration/8/tail/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 72,
"state": "covered",
"hits": "73878"
},
{
"id": "declaration/8/tail/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 72,
"state": "covered",
"hits": "1766"
},
{
"id": "declaration/9/tail/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "193"
},
{
"id": "declaration/9/tail/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "70626"
},
{
"id": "declaration/9/tail/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "370"
},
{
"id": "declaration/9/tail/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "70449"
},
{
"id": "declaration/9/tail/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "656"
},
{
"id": "declaration/9/tail/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "70163"
},
{
"id": "declaration/9/tail/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "673"
},
{
"id": "declaration/9/tail/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "70146"
},
{
"id": "declaration/9/tail/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "868"
},
{
"id": "declaration/9/tail/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "69951"
},
{
"id": "declaration/9/tail/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "905"
},
{
"id": "declaration/9/tail/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "69914"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "1066"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "69753"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "2123"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "68696"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "2195"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "68624"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "6544"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "64275"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "12616"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "58203"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "13960"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "56859"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "23695"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "47124"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "27620"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "43199"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "30807"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "40012"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "33997"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "36822"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "41318"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "29501"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "48643"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "22176"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 83,
"state": "covered",
"hits": "59728"
},
{
"id": "declaration/9/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 83,
"state": "covered",
"hits": "11091"
},
{
"id": "declaration/10/tail/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1578"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "zero",
"hits": "0"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 95,
"state": "covered",
"hits": "1578"
},
{
"id": "declaration/10/tail/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 95,
"state": "zero",
"hits": "0"
},
{
"id": "declaration/11/tail/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 102,
"state": "covered",
"hits": "7740"
},
{
"id": "declaration/11/tail/decision/skip-right",
"outcome": "skip-right",
"line": 102,
"state": "covered",
"hits": "201"
},
{
"id": "declaration/11/tail/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 102,
"state": "covered",
"hits": "7740"
},
{
"id": "declaration/11/tail/left/decision/skip-right",
"outcome": "skip-right",
"line": 102,
"state": "covered",
"hits": "201"
},
{
"id": "declaration/12/tail/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 106,
"state": "covered",
"hits": "9121"
},
{
"id": "declaration/12/tail/decision/skip-right",
"outcome": "skip-right",
"line": 106,
"state": "covered",
"hits": "4304"
},
{
"id": "declaration/12/tail/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 106,
"state": "covered",
"hits": "9479"
},
{
"id": "declaration/12/tail/left/decision/skip-right",
"outcome": "skip-right",
"line": 106,
"state": "covered",
"hits": "3946"
},
{
"id": "declaration/12/tail/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 106,
"state": "covered",
"hits": "11848"
},
{
"id": "declaration/12/tail/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 106,
"state": "covered",
"hits": "1577"
},
{
"id": "declaration/12/tail/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 106,
"state": "covered",
"hits": "1578"
},
{
"id": "declaration/12/tail/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 106,
"state": "covered",
"hits": "11847"
},
{
"id": "declaration/12/tail/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 106,
"state": "covered",
"hits": "12116"
},
{
"id": "declaration/12/tail/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 106,
"state": "covered",
"hits": "1309"
},
{
"id": "declaration/12/tail/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 106,
"state": "covered",
"hits": "12117"
},
{
"id": "declaration/12/tail/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 106,
"state": "covered",
"hits": "1308"
},
{
"id": "declaration/12/tail/left/left/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 106,
"state": "covered",
"hits": "12629"
},
{
"id": "declaration/12/tail/left/left/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 106,
"state": "covered",
"hits": "796"
},
{
"id": "declaration/13/tail/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 113,
"state": "covered",
"hits": "7740"
},
{
"id": "declaration/13/tail/decision/skip-right",
"outcome": "skip-right",
"line": 113,
"state": "covered",
"hits": "201"
},
{
"id": "declaration/13/tail/right/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 114,
"state": "covered",
"hits": "3135"
},
{
"id": "declaration/13/tail/right/decision/skip-right",
"outcome": "skip-right",
"line": 114,
"state": "covered",
"hits": "4605"
},
{
"id": "declaration/13/tail/right/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 114,
"state": "covered",
"hits": "3138"
},
{
"id": "declaration/13/tail/right/left/decision/skip-right",
"outcome": "skip-right",
"line": 114,
"state": "covered",
"hits": "4602"
},
{
"id": "declaration/13/tail/right/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 114,
"state": "covered",
"hits": "3162"
},
{
"id": "declaration/13/tail/right/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 114,
"state": "covered",
"hits": "4578"
},
{
"id": "declaration/13/tail/right/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 114,
"state": "covered",
"hits": "3162"
},
{
"id": "declaration/13/tail/right/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 114,
"state": "covered",
"hits": "4578"
},
{
"id": "declaration/13/tail/right/left/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 114,
"state": "covered",
"hits": "3179"
},
{
"id": "declaration/13/tail/right/left/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 114,
"state": "covered",
"hits": "4561"
},
{
"id": "declaration/14/tail/decision/true",
"outcome": "true",
"line": 120,
"state": "zero",
"hits": "0"
},
{
"id": "declaration/14/tail/decision/false",
"outcome": "false",
"line": 120,
"state": "covered",
"hits": "35204"
},
{
"id": "declaration/15/statement/5/decision/body",
"outcome": "body",
"line": 130,
"state": "covered",
"hits": "151166"
},
{
"id": "declaration/15/statement/5/decision/exit",
"outcome": "exit",
"line": 130,
"state": "covered",
"hits": "1149"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/decision/true",
"outcome": "true",
"line": 132,
"state": "covered",
"hits": "13772"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/decision/false",
"outcome": "false",
"line": 132,
"state": "covered",
"hits": "137394"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/1/decision/body",
"outcome": "body",
"line": 134,
"state": "covered",
"hits": "1278"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/1/decision/exit",
"outcome": "exit",
"line": 134,
"state": "covered",
"hits": "13772"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/1/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 134,
"state": "covered",
"hits": "14900"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/1/condition/decision/skip-right",
"outcome": "skip-right",
"line": 134,
"state": "covered",
"hits": "150"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/2/value/decision/true",
"outcome": "true",
"line": 137,
"state": "covered",
"hits": "11341"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/2/value/decision/false",
"outcome": "false",
"line": 137,
"state": "covered",
"hits": "2431"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/2/value/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 137,
"state": "covered",
"hits": "11341"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/statement/2/value/condition/decision/skip-right",
"outcome": "skip-right",
"line": 137,
"state": "covered",
"hits": "2431"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/decision/true",
"outcome": "true",
"line": 142,
"state": "covered",
"hits": "4605"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/decision/false",
"outcome": "false",
"line": 142,
"state": "covered",
"hits": "9167"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 142,
"state": "covered",
"hits": "7941"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/decision/skip-right",
"outcome": "skip-right",
"line": 142,
"state": "covered",
"hits": "5831"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 142,
"state": "covered",
"hits": "13425"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/left/decision/skip-right",
"outcome": "skip-right",
"line": 142,
"state": "covered",
"hits": "347"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 142,
"state": "covered",
"hits": "13575"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 142,
"state": "covered",
"hits": "197"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/left/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 142,
"state": "covered",
"hits": "13732"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/true/tail/condition/left/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 142,
"state": "covered",
"hits": "40"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/decision/true",
"outcome": "true",
"line": 149,
"state": "covered",
"hits": "14281"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/decision/false",
"outcome": "false",
"line": 149,
"state": "covered",
"hits": "123113"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 149,
"state": "covered",
"hits": "126303"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/condition/decision/skip-right",
"outcome": "skip-right",
"line": 149,
"state": "covered",
"hits": "11091"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 152,
"state": "covered",
"hits": "14272"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 152,
"state": "covered",
"hits": "108841"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 152,
"state": "covered",
"hits": "14272"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/condition/decision/skip-right",
"outcome": "skip-right",
"line": 152,
"state": "covered",
"hits": "108841"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/condition/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 152,
"state": "covered",
"hits": "112028"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/condition/left/decision/skip-right",
"outcome": "skip-right",
"line": 152,
"state": "covered",
"hits": "11085"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 155,
"state": "covered",
"hits": "7325"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 155,
"state": "covered",
"hits": "101516"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 159,
"state": "covered",
"hits": "7321"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 159,
"state": "covered",
"hits": "94195"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/false/tail/false/tail/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 159,
"state": "covered",
"hits": "7321"
},
{
"id": "declaration/15/statement/5/body/statement/1/value/false/tail/false/tail/false/tail/false/tail/condition/decision/skip-right",
"outcome": "skip-right",
"line": 159,
"state": "covered",
"hits": "94195"
},
{
"id": "declaration/16/statement/4/decision/body",
"outcome": "body",
"line": 178,
"state": "covered",
"hits": "270434"
},
{
"id": "declaration/16/statement/4/decision/exit",
"outcome": "exit",
"line": 178,
"state": "covered",
"hits": "1156"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/decision/true",
"outcome": "true",
"line": 181,
"state": "covered",
"hits": "13773"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/decision/false",
"outcome": "false",
"line": 181,
"state": "covered",
"hits": "256661"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/decision/true",
"outcome": "true",
"line": 186,
"state": "covered",
"hits": "118955"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/decision/false",
"outcome": "false",
"line": 186,
"state": "covered",
"hits": "137706"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 189,
"state": "covered",
"hits": "301"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 189,
"state": "covered",
"hits": "137405"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 192,
"state": "covered",
"hits": "2802"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 192,
"state": "covered",
"hits": "134603"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/decision/true",
"outcome": "true",
"line": 194,
"state": "covered",
"hits": "18"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/decision/false",
"outcome": "false",
"line": 194,
"state": "covered",
"hits": "2784"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 194,
"state": "covered",
"hits": "82"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/condition/decision/skip-right",
"outcome": "skip-right",
"line": 194,
"state": "covered",
"hits": "2720"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/condition/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 194,
"state": "covered",
"hits": "82"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/condition/left/decision/skip-right",
"outcome": "skip-right",
"line": 194,
"state": "covered",
"hits": "2720"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/condition/left/left/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 194,
"state": "covered",
"hits": "2782"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/true/tail/condition/left/left/decision/skip-right",
"outcome": "skip-right",
"line": 194,
"state": "covered",
"hits": "20"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 203,
"state": "covered",
"hits": "56289"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 203,
"state": "covered",
"hits": "78314"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/condition/decision/evaluate-right",
"outcome": "evaluate-right",
"line": 203,
"state": "covered",
"hits": "78315"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/condition/decision/skip-right",
"outcome": "skip-right",
"line": 203,
"state": "covered",
"hits": "56288"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 208,
"state": "covered",
"hits": "2670"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 208,
"state": "covered",
"hits": "75644"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/true/statement/2/value/decision/true",
"outcome": "true",
"line": 211,
"state": "covered",
"hits": "2"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/true/statement/2/value/decision/false",
"outcome": "false",
"line": 211,
"state": "covered",
"hits": "2668"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 217,
"state": "covered",
"hits": "4825"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 217,
"state": "covered",
"hits": "70819"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/true",
"outcome": "true",
"line": 222,
"state": "covered",
"hits": "70811"
},
{
"id": "declaration/16/statement/4/body/statement/2/value/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/false",
"outcome": "false",
"line": 222,
"state": "covered",
"hits": "8"
},
{
"id": "declaration/16/tail/decision/true",
"outcome": "true",
"line": 240,
"state": "covered",
"hits": "1149"
},
{
"id": "declaration/16/tail/decision/false",
"outcome": "false",
"line": 240,
"state": "covered",
"hits": "7"
},
{
"id": "declaration/18/tail/arm/0",
"outcome": "Identifier",
"line": 249,
"state": "covered",
"hits": "12"
},
{
"id": "declaration/18/tail/arm/1",
"outcome": "Number",
"line": 250,
"state": "covered",
"hits": "5"
},
{
"id": "declaration/18/tail/arm/2",
"outcome": "DecimalNumber",
"line": 251,
"state": "covered",
"hits": "2"
},
{
"id": "declaration/18/tail/arm/3",
"outcome": "StringLiteral",
"line": 252,
"state": "covered",
"hits": "1"
},
{
"id": "declaration/18/tail/arm/4",
"outcome": "Punctuation",
"line": 253,
"state": "covered",
"hits": "45"
},
{
"id": "declaration/19/statement/1/decision/body",
"outcome": "body",
"line": 259,
"state": "covered",
"hits": "65"
},
{
"id": "declaration/19/statement/1/decision/exit",
"outcome": "exit",
"line": 259,
"state": "covered",
"hits": "4"
},
{
"id": "declaration/20/statement/1/decision/body",
"outcome": "body",
"line": 269,
"state": "covered",
"hits": "6"
},
{
"id": "declaration/20/statement/1/decision/exit",
"outcome": "exit",
"line": 269,
"state": "covered",
"hits": "3"
},
{
"id": "declaration/21/tail/arm/0",
"outcome": "Ok",
"line": 280,
"state": "covered",
"hits": "4"
},
{
"id": "declaration/21/tail/arm/1",
"outcome": "Error",
"line": 281,
"state": "covered",
"hits": "3"
}
]Reviewed declaration exclusions
[
{
"id": "declaration/0",
"reason": "import",
"line": 1
},
{
"id": "declaration/1",
"reason": "record-declaration",
"line": 3
}
]