| 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 | 8862 | ScopeHandle::ScopeHandle(CompilerPass *pass, Scope *childScope, const ScopeType &scopeType) | |
| 13 | 17724 | : DeferredLogic([=]() { pass->changeToParentScope(scopeType); }) { | |
| 14 |
1/2✓ Branch 5 → 6 taken 8862 times.
✗ Branch 5 → 7 not taken.
|
8862 | pass->changeToScope(childScope, scopeType); |
| 15 | 8862 | } | |
| 16 | |||
| 17 | 8822 | ScopeHandle::ScopeHandle(CompilerPass *pass, const std::string &childScopeId, const ScopeType &scopeType) | |
| 18 | 8822 | : ScopeHandle(pass, pass->currentScope->getChildScope(childScopeId), scopeType) {} | |
| 19 | |||
| 20 | 8141 | ScopeHandle::ScopeHandle(IRGenerator *generator, Scope *childScope, const ScopeType &scopeType, const ASTNode *node) | |
| 21 | 24423 | : DeferredLogic([=]() { | |
| 22 | 8141 | generator->changeToParentScope(scopeType); | |
| 23 | 8141 | generator->diGenerator.popLexicalBlock(); | |
| 24 | 8141 | }) { | |
| 25 |
1/2✗ Branch 5 → 6 not taken.
✓ Branch 5 → 7 taken 8141 times.
|
8141 | assert(scopeType != ScopeType::FUNC_PROC_BODY); // Functions/procedures manage scopes manually |
| 26 |
1/2✓ Branch 7 → 8 taken 8141 times.
✗ Branch 7 → 10 not taken.
|
8141 | generator->changeToScope(childScope, scopeType); |
| 27 |
1/2✓ Branch 8 → 9 taken 8141 times.
✗ Branch 8 → 10 not taken.
|
8141 | generator->diGenerator.pushLexicalBlock(node); |
| 28 | 8141 | } | |
| 29 | |||
| 30 | 8141 | ScopeHandle::ScopeHandle(IRGenerator *generator, const std::string &childScopeId, const ScopeType &scopeType, const ASTNode *node) | |
| 31 | 8141 | : ScopeHandle(generator, generator->currentScope->getChildScope(childScopeId), scopeType, node) {} | |
| 32 | |||
| 33 | } // namespace spice::compiler | ||
| 34 |