@abaplint/core
Version:
abaplint - Core API
35 lines • 1.96 kB
JavaScript
;
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