GCC Code Coverage Report


Directory: ../
File: src/symboltablebuilder/Lifecycle.cpp
Date: 2024-11-22 23:10:59
Exec Total Coverage
Lines: 13 17 76.5%
Functions: 6 8 75.0%
Branches: 8 10 80.0%

Line Branch Exec Source
1 // Copyright (c) 2021-2024 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 69316 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 1 taken 37142 times.
✓ Branch 2 taken 360404 times.
397546 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 323095 const char *Lifecycle::getCurrentStateName() const {
27
3/4
✓ Branch 1 taken 200165 times.
✓ Branch 2 taken 122776 times.
✓ Branch 3 taken 154 times.
✗ Branch 4 not taken.
323095 switch (getCurrentState()) {
28 200165 case DECLARED:
29 200165 return "declared";
30 122776 case INITIALIZED:
31 122776 return "initialized";
32 154 case MOVED:
33 154 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 29 bool Lifecycle::isDeclared() const { return getCurrentState() == DECLARED; }
52
53 /**
54 * Check if the symbol is initialized
55 *
56 * @return Initialized or not
57 */
58 5106 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
3/4
✓ Branch 1 taken 29 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 26 times.
29 bool Lifecycle::isInOwningState() const { return isDeclared() || isInitialized(); }
73
74 } // namespace spice::compiler
75