UNPKG

@abaplint/core

Version:
41 lines 1.83 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataDefinition = void 0; const Expressions = require("../../2_statements/expressions"); const _typed_identifier_1 = require("../../types/_typed_identifier"); const basic_1 = require("../../types/basic"); const basic_types_1 = require("../basic_types"); const type_table_1 = require("./type_table"); class DataDefinition { static runSyntax(node, input) { const tt = node.findFirstExpression(Expressions.TypeTable); if (tt) { return type_table_1.TypeTable.runSyntax(node, input); } const valueNode = node.findFirstExpression(Expressions.Value); let value = undefined; if (valueNode) { value = new basic_types_1.BasicTypes(input).findValue(node); } const name = node.findFirstExpression(Expressions.DefinitionName); const typeStructure = node.findFirstExpression(Expressions.TypeStructure); if (typeStructure && name) { return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename, basic_1.VoidType.get("DataDefinition, TypeStructure")); } const bfound = new basic_types_1.BasicTypes(input).simpleType(node); if (bfound) { if (value) { return new _typed_identifier_1.TypedIdentifier(bfound.getToken(), input.filename, bfound.getType(), bfound.getMeta(), value); } else { return bfound; } } if (name) { return new _typed_identifier_1.TypedIdentifier(name.getFirstToken(), input.filename, new basic_1.UnknownType("DataDefinition, fallback")); } return undefined; } } exports.DataDefinition = DataDefinition; //# sourceMappingURL=data_definition.js.map