UNPKG

@abaplint/core

Version:
35 lines 1.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ClassData = void 0; const Expressions = require("../../2_statements/expressions"); const _typed_identifier_1 = require("../../types/_typed_identifier"); const data_definition_1 = require("../expressions/data_definition"); const unknown_type_1 = require("../../types/basic/unknown_type"); const _syntax_input_1 = require("../_syntax_input"); const basic_1 = require("../../types/basic"); class ClassData { runSyntax(node, input) { const dd = node.findFirstExpression(Expressions.DataDefinition); if (dd) { const found = data_definition_1.DataDefinition.runSyntax(dd, input); if (found === undefined) { return undefined; } if ((found === null || found === void 0 ? void 0 : found.getType().isGeneric()) === true && (found === null || found === void 0 ? void 0 : found.getType().containsVoid()) === false) { const message = "DATA definition cannot be generic, " + found.getName(); input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message)); return new _typed_identifier_1.TypedIdentifier(found.getToken(), input.filename, basic_1.VoidType.get(_syntax_input_1.CheckSyntaxKey)); } const meta = [...found.getMeta(), "static" /* IdentifierMeta.Static */]; return new _typed_identifier_1.TypedIdentifier(found.getToken(), input.filename, found.getType(), meta, found.getValue()); } const fallback = node.findFirstExpression(Expressions.NamespaceSimpleName); if (fallback) { return new _typed_identifier_1.TypedIdentifier(fallback.getFirstToken(), input.filename, new unknown_type_1.UnknownType("class data, fallback")); } return undefined; } } exports.ClassData = ClassData; //# sourceMappingURL=class_data.js.map