roblox-ts
Version:
A TypeScript-to-Luau Compiler for Roblox
29 lines • 1.56 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.transformThisExpression = transformThisExpression;
const luau_ast_1 = __importDefault(require("@roblox-ts/luau-ast"));
const diagnostics_1 = require("../../../Shared/diagnostics");
const TSTransformer_1 = require("../..");
const DiagnosticService_1 = require("../../classes/DiagnosticService");
const typescript_1 = __importDefault(require("typescript"));
function transformThisExpression(state, node) {
const symbol = state.typeChecker.getSymbolAtLocation(node);
if (symbol === state.services.macroManager.getSymbolOrThrow(TSTransformer_1.SYMBOL_NAMES.globalThis)) {
DiagnosticService_1.DiagnosticService.addDiagnostic(diagnostics_1.errors.noGlobalThis(node));
}
if (symbol) {
const container = typescript_1.default.getThisContainer(node, false, false);
const isStatic = typescript_1.default.hasStaticModifier(container) || typescript_1.default.isClassStaticBlockDeclaration(container);
if (isStatic && !typescript_1.default.isMethodDeclaration(container) && typescript_1.default.isClassLike(container.parent)) {
const identifier = state.classIdentifierMap.get(container.parent);
if (identifier) {
return identifier;
}
}
}
return luau_ast_1.default.globals.self;
}
//# sourceMappingURL=transformThisExpression.js.map