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