UNPKG

@bitloops/bl-transpiler

Version:
37 lines 1.74 kB
import { BitloopsTypesMapping } from '../../../../helpers/mappings.js'; import { SymbolTableManager } from '../../../../semantic-analysis/type-inference/SymbolTableManager.js'; import { IntermediateASTNode } from './IntermediateASTNode.js'; export class ExecuteNode extends IntermediateASTNode { static classNodeName = 'execute'; constructor(metadata) { super(BitloopsTypesMapping.TExecute, metadata, ExecuteNode.classNodeName); } getStatements() { const statementList = this.getChildNodeByType(BitloopsTypesMapping.TStatements); return statementList.statements; } getStatementList() { return this.getChildNodeByType(BitloopsTypesMapping.TStatements); } getParameter() { const parameterNode = this.getChildNodeByType(BitloopsTypesMapping.TParameter); return parameterNode; } getReturnOkErrorTypeNodes() { const returnOkErrorTypeNode = this.getChildNodeByType(BitloopsTypesMapping.TOkErrorReturnType); return [returnOkErrorTypeNode]; } addToSymbolTable(symbolTableManager) { const initialSymbolTable = symbolTableManager.getSymbolTable(); symbolTableManager.createSymbolTableChildScope(SymbolTableManager.SCOPE_NAMES.EXECUTE, this); const executeParameter = this.getParameter(); if (executeParameter) { symbolTableManager.addMetadataContext(executeParameter.getIdentifier()); executeParameter.addToSymbolTable(symbolTableManager); } const statementList = this.getStatementList(); statementList.addToSymbolTable(symbolTableManager); symbolTableManager.setCurrentSymbolTable(initialSymbolTable); } } //# sourceMappingURL=ExecuteNode.js.map