GCC Code Coverage Report


Directory: ../
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 76.5% 13 / 0 / 17
Functions: 75.0% 6 / 0 / 8
Branches: 90.0% 9 / 0 / 10

src/symboltablebuilder/Lifecycle.cpp
Line Branch Exec Source
1 // Copyright (c) 2021-2026 ChilliBits. All rights reserved.
2
3 #include "Lifecycle.h"
4
5 namespace spice::compiler {
6
7 /**
8 * Add an event to the lifecycle
9 *
10 * @param event New lifecycle event
11 */
12 353217 void Lifecycle::addEvent(const LifecycleEvent &event) { events.push_back(event); }
13
14 /**
15 * Retrieve the current state of a symbol
16 *
17 * @return Current state
18 */
19
2/2
✓ Branch 3 → 4 taken 169712 times.
✓ Branch 3 → 5 taken 1154361 times.
1324073 LifecycleState Lifecycle::getCurrentState() const { return events.empty() ? DEAD : events.back().state; }
20
21 /**
22 * Retrieve the name of the current state of a symbol
23 *
24 * @return Current state name
25 */
26 943318 const char *Lifecycle::getCurrentStateName() const {
27
3/4
✓ Branch 3 → 4 taken 680779 times.
✓ Branch 3 → 5 taken 261226 times.
✓ Branch 3 → 6 taken 1313 times.
✗ Branch 3 → 7 not taken.
943318 switch (getCurrentState()) {
28 680779 case DECLARED:
29 680779 return "declared";
30 261226 case INITIALIZED:
31 261226 return "initialized";
32 1313 case MOVED:
33 1313 return "moved";
34 default:
35 return "dead";
36 }
37 }
38
39 /**
40 * Check if the symbol is dead
41 *
42 * @return Dead or not
43 */
44 bool Lifecycle::isDead() const { return getCurrentState() == DEAD; }
45
46 /**
47 * Check if the symbol is declared
48 *
49 * @return Declared or not
50 */
51 174 bool Lifecycle::isDeclared() const { return getCurrentState() == DECLARED; }
52
53 /**
54 * Check if the symbol is initialized
55 *
56 * @return Initialized or not
57 */
58 22275 bool Lifecycle::isInitialized() const { return getCurrentState() == INITIALIZED; }
59
60 /**
61 * Check if the symbol was moved
62 *
63 * @return Moved or not
64 */
65 bool Lifecycle::wasMoved() const { return getCurrentState() == MOVED; }
66
67 /**
68 * Check if the symbol is in an owning state
69 *
70 * @return Owning state or not
71 */
72
4/4
✓ Branch 3 → 4 taken 173 times.
✓ Branch 3 → 6 taken 1 time.
✓ Branch 5 → 6 taken 71 times.
✓ Branch 5 → 7 taken 102 times.
174 bool Lifecycle::isInOwningState() const { return isDeclared() || isInitialized(); }
73
74 } // namespace spice::compiler
75