GCC Code Coverage Report


Directory: src/
File: script_transcompiler/backend_intermediate.cpp
Date: 2024-12-30 15:39:09
Exec Total Coverage
Lines: 31 41 75.6%
Functions: 2 2 100.0%
Branches: 25 50 50.0%

Line Branch Exec Source
1 #include "backend.h"
2
3 namespace
4 {
5 14 bool generate_intermediate(const intermediate& i, data& data)
6 {
7
1/2
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
14 data.result.push_back("from: " + i.line);
8
9
8/12
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 1 times.
✓ Branch 6 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 4 times.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
14 switch (i.command)
10 {
11 case (intermediate::cmd::comment):
12 data.result.push_back("COMMENT: " + i.operand);
13 break;
14 1 case (intermediate::cmd::create_file):
15
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 data.result.push_back("CREATE FILE: " + i.operand);
16 1 break;
17 case (intermediate::cmd::load_init_memory):
18 data.result.push_back("LOAD INIT MEMORY: " + i.operand);
19 break;
20 2 case (intermediate::cmd::load_memory):
21
1/2
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
2 data.result.push_back("LOAD INTO MEMORY: " + i.operand);
22 2 break;
23 3 case (intermediate::cmd::print_memory):
24
2/4
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
3 data.result.push_back("PRINT MEMORY");
25 3 break;
26 1 case (intermediate::cmd::process_memory):
27
2/4
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
1 data.result.push_back("PROCESS MEMORY");
28 1 break;
29 1 case (intermediate::cmd::save_memory):
30
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 data.result.push_back("SAVE MEMORY: " + i.operand);
31 1 break;
32 1 case (intermediate::cmd::text_init_memory):
33
1/2
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
1 data.result.push_back("TEXT INIT MEMORY: " + i.operand);
34 1 break;
35 case (intermediate::cmd::text_memory):
36 data.result.push_back("TEXT TO MEMORY: " + i.operand);
37 break;
38 4 case (intermediate::cmd::print_text):
39
1/2
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
4 data.result.push_back("PRINT TEXT: " + i.operand);
40 4 break;
41 1 case (intermediate::cmd::save_text):
42
3/6
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
1 data.result.push_back("SAVE TEXT: '" + i.operand + "' to " + i.operandB);
43 1 break;
44 }
45
46 14 return true;
47 }
48 } // namespace
49
50 1 void generate_intermediate(data& data)
51 {
52
2/2
✓ Branch 5 taken 14 times.
✓ Branch 6 taken 1 times.
15 for (const auto& ic : data.c)
53 {
54
2/4
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 14 times.
14 if (!generate_intermediate(ic, data))
55 return;
56 }
57 }
58