UNPKG

roblox-ts

Version:

A TypeScript-to-Luau Compiler for Roblox

33 lines 1.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkVariableHoist = checkVariableHoist; const getOrSetDefault_1 = require("../../Shared/util/getOrSetDefault"); const traversal_1 = require("./traversal"); const typescript_1 = __importDefault(require("typescript")); function checkVariableHoist(state, node, symbol) { if (state.isHoisted.get(symbol) !== undefined) { return; } const statement = (0, traversal_1.getAncestor)(node, typescript_1.default.isStatement); if (!statement) { return; } const caseClause = statement.parent; if (!typescript_1.default.isCaseClause(caseClause)) { return; } const caseBlock = caseClause.parent; const isUsedOutsideOfCaseClause = typescript_1.default.FindAllReferences.Core.eachSymbolReferenceInFile(node, state.typeChecker, node.getSourceFile(), token => { if (!(0, traversal_1.isAncestorOf)(caseClause, token)) { return true; } }, caseBlock) === true; if (isUsedOutsideOfCaseClause) { (0, getOrSetDefault_1.getOrSetDefault)(state.hoistsByStatement, statement.parent, () => new Array()).push(node); state.isHoisted.set(symbol, true); } } //# sourceMappingURL=checkVariableHoist.js.map