GCC Code Coverage Report


Directory: ../
File: src/symboltablebuilder/ScopeHandle.cpp
Date: 2025-03-05 01:50:32
Exec Total Coverage
Lines: 17 17 100.0%
Functions: 6 6 100.0%
Branches: 4 8 50.0%

Line Branch Exec Source
1 // Copyright (c) 2021-2025 ChilliBits. All rights reserved.
2
3 #include "ScopeHandle.h"
4
5 #include "CompilerPass.h"
6 #include <ast/ASTNodes.h>
7 #include <irgenerator/IRGenerator.h>
8 #include <symboltablebuilder/Scope.h>
9
10 namespace spice::compiler {
11
12 8306 ScopeHandle::ScopeHandle(CompilerPass *pass, Scope *childScope, const ScopeType &scopeType)
13 16612 : DeferredLogic([=]() { pass->changeToParentScope(scopeType); }) {
14
1/2
✓ Branch 0 (5→6) taken 8306 times.
✗ Branch 1 (5→7) not taken.
8306 pass->changeToScope(childScope, scopeType);
15 8306 }
16
17 8266 ScopeHandle::ScopeHandle(CompilerPass *pass, const std::string &childScopeId, const ScopeType &scopeType)
18 8266 : ScopeHandle(pass, pass->currentScope->getChildScope(childScopeId), scopeType) {}
19
20 7577 ScopeHandle::ScopeHandle(IRGenerator *generator, Scope *childScope, const ScopeType &scopeType, const ASTNode *node)
21 22731 : DeferredLogic([=]() {
22 7577 generator->changeToParentScope(scopeType);
23 7577 generator->diGenerator.popLexicalBlock();
24 7577 }) {
25
1/2
✗ Branch 0 (5→6) not taken.
✓ Branch 1 (5→7) taken 7577 times.
7577 assert(scopeType != ScopeType::FUNC_PROC_BODY); // Functions/procedures manage scopes manually
26
1/2
✓ Branch 0 (7→8) taken 7577 times.
✗ Branch 1 (7→10) not taken.
7577 generator->changeToScope(childScope, scopeType);
27
1/2
✓ Branch 0 (8→9) taken 7577 times.
✗ Branch 1 (8→10) not taken.
7577 generator->diGenerator.pushLexicalBlock(node);
28 7577 }
29
30 7577 ScopeHandle::ScopeHandle(IRGenerator *generator, const std::string &childScopeId, const ScopeType &scopeType, const ASTNode *node)
31 7577 : ScopeHandle(generator, generator->currentScope->getChildScope(childScopeId), scopeType, node) {}
32
33 } // namespace spice::compiler
34