UNPKG

@abaplint/core

Version:
35 lines 1.98 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InlineData = void 0; const Expressions = require("../../2_statements/expressions"); const _typed_identifier_1 = require("../../types/_typed_identifier"); const basic_1 = require("../../types/basic"); const _reference_1 = require("../_reference"); const _syntax_input_1 = require("../_syntax_input"); class InlineData { static runSyntax(node, input, type) { var _a; const token = (_a = node.findFirstExpression(Expressions.TargetField)) === null || _a === void 0 ? void 0 : _a.getFirstToken(); if (token && type) { if (type instanceof basic_1.CSequenceType || type instanceof basic_1.CLikeType) { type = basic_1.StringType.get(); } else if (type instanceof basic_1.CGenericType) { const message = "InlineData, generic type C cannot be used for inferred type"; input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message)); return; } const identifier = new _typed_identifier_1.TypedIdentifier(token, input.filename, type, ["inline" /* IdentifierMeta.InlineDefinition */]); input.scope.addIdentifier(identifier); input.scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, input.filename); } else if (token) { const message = "InlineData, could not determine type for \"" + token.getStr() + "\""; const identifier = new _typed_identifier_1.TypedIdentifier(token, input.filename, new basic_1.UnknownType(message), ["inline" /* IdentifierMeta.InlineDefinition */]); input.scope.addIdentifier(identifier); input.scope.addReference(token, identifier, _reference_1.ReferenceType.DataWriteReference, input.filename); } } } exports.InlineData = InlineData; //# sourceMappingURL=inline_data.js.map