UNPKG

@abaplint/transpiler

Version:
34 lines 1.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.LetTranspiler = void 0; const core_1 = require("@abaplint/core"); const chunk_1 = require("../chunk"); const transpile_types_1 = require("../transpile_types"); class LetTranspiler { transpile(node, traversal) { if (!(node.get() instanceof core_1.Expressions.Let)) { throw new Error("LetTranspiler, Expected Let"); } const ret = new chunk_1.Chunk(); for (const def of node.findAllExpressions(core_1.Expressions.InlineFieldDefinition)) { const nameToken = def.findDirectExpression(core_1.Expressions.Field); if (nameToken === undefined) { throw new Error("LetTranspiler, Expected Field"); } const name = nameToken?.concatTokens(); const scope = traversal.findCurrentScopeByToken(node.getFirstToken()); const variable = scope?.findVariable(name); if (variable === undefined) { throw new Error("LetTranspiler, Expected Variable"); } ret.appendString(transpile_types_1.TranspileTypes.declare(variable)); const source = def.findDirectExpression(core_1.Expressions.Source); if (source) { ret.appendString(name + `.set(${traversal.traverse(source).getCode()});`); } } return ret; } } exports.LetTranspiler = LetTranspiler; //# sourceMappingURL=let.js.map