UNPKG

ifc-expressions

Version:

Parsing and evaluation of IFC expressions

32 lines (31 loc) 1.7 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FuncArgObjectAccessor = void 0; const FuncArgBase_js_1 = require("./FuncArgBase.js"); const ExprEvalResult_js_1 = require("../../ExprEvalResult.js"); const ExprKind_js_1 = require("../../ExprKind.js"); const ObjectAccessor_js_1 = require("../../../context/ObjectAccessor.js"); const Types_js_1 = require("../../../type/Types.js"); const IfcExpressionFunctionConfigException_js_1 = require("../../../error/IfcExpressionFunctionConfigException.js"); class FuncArgObjectAccessor extends FuncArgBase_js_1.FuncArgBase { constructor(required, name, specificType, defaultValue) { super(required, name, defaultValue); if (!Types_js_1.Type.IFC_OBJECT_REF.isAssignableFrom(specificType)) { throw new IfcExpressionFunctionConfigException_js_1.IfcExpressionFunctionConfigException(`${Types_js_1.Type.IFC_OBJECT_REF.getName()} is not assignable from provided object accessor type ${specificType.getName()}`); } this.type = specificType; } getType() { return this.type; } transformForTypeCheck(callingExpr, invocationValue) { const result = invocationValue.result; const value = result.getValue(); if ((0, ObjectAccessor_js_1.isObjectAccessor)(value)) { return invocationValue; } return new ExprEvalResult_js_1.ExprEvalTypeErrorObj(ExprKind_js_1.ExprKind.FUNCTION_ARGUMENTS, `Argument ${this.name} must be an ObjectAccessor, but was ${JSON.stringify(value)}`, value, callingExpr.getTextSpan()); } } exports.FuncArgObjectAccessor = FuncArgObjectAccessor; //# sourceMappingURL=FuncArgObjectAccessor.js.map