| 159 | } |
| 160 | |
| 161 | TypedExprPtr createWithImplicitCast( |
| 162 | const std::shared_ptr<const core::CallExpr>& expr, |
| 163 | const std::vector<TypedExprPtr>& inputs, |
| 164 | Expressions::TypeResolverHook customResolverHook = nullptr) { |
| 165 | auto adjusted = |
| 166 | adjustLastNArguments(inputs, expr, inputs.size(), customResolverHook); |
| 167 | if (adjusted) { |
| 168 | return adjusted; |
| 169 | } |
| 170 | auto type = resolveTypeImpl(inputs, expr, false, customResolverHook); |
| 171 | return std::make_shared<CallTypedExpr>( |
| 172 | type, std::move(inputs), std::string{expr->getFunctionName()}); |
| 173 | } |
| 174 | |
| 175 | bool isLambdaArgument(const exec::TypeSignature& typeSignature) { |
| 176 | return typeSignature.baseName() == "function"; |
no test coverage detected