@qrvey/formula-lang
Version:
QFormula support for qrvey projects
32 lines • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.isSameAndValidRecursiveDataType = void 0;
const constants_1 = require("../constants");
const dictionary_1 = require("../errors/dictionary");
const getValidDataTypeParam_1 = require("../utils/getValidDataTypeParam");
const primitiveFunctions_1 = require("../utils/primitiveFunctions");
function isSameAndValidRecursiveDataType(validDataTypes) {
return (_param, _dataType, context) => {
const args = context.fnNode.arguments;
const dataTypePrimitive = (0, getValidDataTypeParam_1.getValidDataTypeParam)(args, validDataTypes);
const isValidDataTypePrimitive = dataTypePrimitive !== constants_1.AST_PRIMITIVES.UNKNOWN;
const expectedDataTypePrimitive = isValidDataTypePrimitive
? dataTypePrimitive
: validDataTypes;
const valid = isValidDataTypePrimitive &&
(0, primitiveFunctions_1.isSinglePrimitive)((0, primitiveFunctions_1.inferPrimitive)(...args.map((_arg) => _arg.primitive)));
if (valid) {
return {
valid,
mismatchData: {
primitive: expectedDataTypePrimitive,
},
};
}
return Object.assign(Object.assign({ valid }, dictionary_1.ERROR_DICTIONARY[dictionary_1.ERROR_LIST.inferredPrimitive]), { mismatchData: {
primitive: expectedDataTypePrimitive,
} });
};
}
exports.isSameAndValidRecursiveDataType = isSameAndValidRecursiveDataType;
//# sourceMappingURL=isSameAndValidRecursiveDataType.js.map