UNPKG

@abaplint/core

Version:
32 lines 1.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Compare = void 0; const Expressions = require("../../2_statements/expressions"); const source_1 = require("./source"); const method_call_chain_1 = require("./method_call_chain"); const source_field_symbol_1 = require("./source_field_symbol"); const _syntax_input_1 = require("../_syntax_input"); const _type_utils_1 = require("../_type_utils"); class Compare { static runSyntax(node, input) { const sourceTypes = []; const sources = node.findDirectExpressions(Expressions.Source); for (const t of sources) { sourceTypes.push(source_1.Source.runSyntax(t, input)); } for (const t of node.findDirectExpressions(Expressions.SourceFieldSymbolChain)) { source_field_symbol_1.SourceFieldSymbol.runSyntax(t, input); } for (const t of node.findDirectExpressions(Expressions.MethodCallChain)) { method_call_chain_1.MethodCallChain.runSyntax(t, input); } if (node.findDirectExpression(Expressions.CompareOperator) && new _type_utils_1.TypeUtils(input.scope).isCompareable(sourceTypes[0], sourceTypes[1], sources[0], sources[1]) === false && sourceTypes.length === 2) { const message = "Incompatible types for comparison"; input.issues.push((0, _syntax_input_1.syntaxIssue)(input, node.getFirstToken(), message)); } } } exports.Compare = Compare; //# sourceMappingURL=compare.js.map