UNPKG

@abaplint/core

Version:
46 lines 2.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CreateData = void 0; const Expressions = require("../../2_statements/expressions"); const target_1 = require("../expressions/target"); const source_1 = require("../expressions/source"); const dynamic_1 = require("../expressions/dynamic"); const basic_types_1 = require("../basic_types"); const basic_1 = require("../../types/basic"); const _typed_identifier_1 = require("../../types/_typed_identifier"); const _reference_1 = require("../_reference"); class CreateData { runSyntax(node, input) { for (const s of node.findDirectExpressions(Expressions.Source)) { source_1.Source.runSyntax(s, input); } for (const t of node.findDirectExpressions(Expressions.Target)) { target_1.Target.runSyntax(t, input); } for (const t of node.findDirectExpressions(Expressions.Dynamic)) { dynamic_1.Dynamic.runSyntax(t, input); } const type = node.findDirectExpression(Expressions.TypeName); if (type) { const found = new basic_types_1.BasicTypes(input).resolveTypeName(type); if (found instanceof basic_1.UnknownType) { if (node.concatTokens().toUpperCase().includes(" REF TO ")) { const def = input.scope.findObjectDefinition(type.concatTokens()); if (def) { input.scope.addReference(type.getFirstToken(), def, _reference_1.ReferenceType.TypeReference, input.filename); } else { const identifier = new _typed_identifier_1.TypedIdentifier(type.getFirstToken(), input.filename, found); input.scope.addReference(type.getFirstToken(), identifier, _reference_1.ReferenceType.TypeReference, input.filename); } } else { const identifier = new _typed_identifier_1.TypedIdentifier(type.getFirstToken(), input.filename, found); input.scope.addReference(type.getFirstToken(), identifier, _reference_1.ReferenceType.TypeReference, input.filename); } } } } } exports.CreateData = CreateData; //# sourceMappingURL=create_data.js.map