UNPKG

@abaplint/core

Version:
61 lines 2.82 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModifyInternal = void 0; const Expressions = require("../../2_statements/expressions"); const source_1 = require("../expressions/source"); const target_1 = require("../expressions/target"); const fstarget_1 = require("../expressions/fstarget"); const component_cond_1 = require("../expressions/component_cond"); const basic_1 = require("../../types/basic"); const _syntax_input_1 = require("../_syntax_input"); class ModifyInternal { runSyntax(node, input) { for (const s of node.findDirectExpressions(Expressions.Source)) { source_1.Source.runSyntax(s, input); } // there is only one const target = node.findFirstExpression(Expressions.Target); const targetExpression = target; if (targetExpression) { // it might be a dynamic target const targetType = target_1.Target.runSyntax(targetExpression, input); if (targetType instanceof basic_1.VoidType || targetType instanceof basic_1.AnyType || targetType instanceof basic_1.UnknownType) { // ok } else if (targetType instanceof basic_1.TableType) { if (node.findDirectTokenByText("TABLE") && node.findDirectTokenByText("INDEX") && targetType.isWithHeader() === false) { // MODIFY TABLE INDEX const message = "Table does not have header line"; input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message)); return; } } else if (targetType instanceof basic_1.StructureType) { // it might originate from a TABLES statement if (target.concatTokens().toUpperCase() !== targetType.getDDICName()) { const message = "Not an internal table"; input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message)); return; } } else { const message = "Not an internal table"; input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message)); return; } } const fstarget = node.findDirectExpression(Expressions.FSTarget); if (fstarget) { fstarget_1.FSTarget.runSyntax(fstarget, input, undefined); } for (const t of node.findDirectExpressions(Expressions.ComponentCond)) { component_cond_1.ComponentCond.runSyntax(t, input); } } } exports.ModifyInternal = ModifyInternal; //# sourceMappingURL=modify_internal.js.map