@abaplint/transpiler
Version:
33 lines • 1.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.FieldSymbolTranspiler = void 0;
const abaplint = require("@abaplint/core");
const field_symbol_1 = require("../expressions/field_symbol");
const chunk_1 = require("../chunk");
const transpile_types_1 = require("../transpile_types");
class FieldSymbolTranspiler {
transpile(node, traversal) {
const name = node.findDirectExpression(abaplint.Expressions.FieldSymbol);
const token = name?.getFirstToken();
if (token === undefined) {
throw new Error("FieldSymbolTranspiler, token not found");
}
const scope = traversal.findCurrentScopeByToken(token);
if (scope === undefined) {
throw new Error("FieldSymbolTranspiler, scope not found");
}
const found = scope.findVariable(token.getStr());
if (found === undefined) {
throw new Error("FieldSymbolTranspiler, var not found, \"" + token.getStr() + "\"");
}
if (name) {
return new chunk_1.Chunk()
.appendString("let ")
.appendString(new field_symbol_1.FieldSymbolTranspiler().transpile(name, traversal).getCode())
.appendString(" = new abap.types.FieldSymbol(" + transpile_types_1.TranspileTypes.toType(found.getType()) + ");");
}
throw new Error("FieldSymbolTranspiler, name not found");
}
}
exports.FieldSymbolTranspiler = FieldSymbolTranspiler;
//# sourceMappingURL=field_symbol.js.map