diff --git a/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp index 731825c1fefa2df0be8d828249017ecb3bf555ee..62019550d16e36056ff2447b7797590952b6bfd8 100644 --- a/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp +++ b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp @@ -320,13 +320,7 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData } }; - if (parameter_type == ASTNodeDataType::vector_t and parameter_type.dimension() == 1) { - if (not isNaturalConversion(argument_node_sub_data_type.m_data_type, parameter_type)) { - ASTNodeNaturalConversionChecker{argument_node_sub_data_type, ASTNodeDataType::build<ASTNodeDataType::double_t>()}; - } - } else { - ASTNodeNaturalConversionChecker{argument_node_sub_data_type, parameter_type}; - } + ASTNodeNaturalConversionChecker<AllowRToR1Conversion>{argument_node_sub_data_type, parameter_type}; return get_function_argument_converter_for_argument_type(); } diff --git a/src/language/utils/ASTNodeNaturalConversionChecker.cpp b/src/language/utils/ASTNodeNaturalConversionChecker.cpp index 043818697009386155b8341c7b46ae11f1afc940..81a277574753dc3e8cc75871a07d8d8a3b1a0cc6 100644 --- a/src/language/utils/ASTNodeNaturalConversionChecker.cpp +++ b/src/language/utils/ASTNodeNaturalConversionChecker.cpp @@ -139,31 +139,11 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalExpressionConve if (node.m_data_type == ASTNodeDataType::tuple_t) { this->_checkIsNaturalExpressionConversion(node, data_type.contentType(), target_content_type); } else if (node.m_data_type == ASTNodeDataType::list_t) { - if (((target_data_type.contentType() == ASTNodeDataType::vector_t) and - (target_data_type.contentType().dimension() == 1)) or - ((target_data_type.contentType() == ASTNodeDataType::matrix_t) and - (target_data_type.contentType().nbRows() == 1) and (target_data_type.contentType().nbColumns() == 1))) { - for (const auto& child : node.children) { - if (not isNaturalConversion(child->m_data_type, target_data_type)) { - this->_checkIsNaturalExpressionConversion(*child, child->m_data_type, - ASTNodeDataType::build<ASTNodeDataType::double_t>()); - } - } - } else { - for (const auto& child : node.children) { - this->_checkIsNaturalExpressionConversion(*child, child->m_data_type, target_content_type); - } + for (const auto& child : node.children) { + ASTNodeNaturalConversionChecker<AllowRToR1Conversion>(*child, target_data_type.contentType()); } } else { - if ((target_data_type.contentType() == ASTNodeDataType::vector_t) and - (target_data_type.contentType().dimension() == 1)) { - if (not isNaturalConversion(data_type, target_data_type)) { - this->_checkIsNaturalExpressionConversion(node, data_type, - ASTNodeDataType::build<ASTNodeDataType::double_t>()); - } - } else { - this->_checkIsNaturalExpressionConversion(node, data_type, target_content_type); - } + this->_checkIsNaturalExpressionConversion(node, data_type, target_content_type); } } else { this->_checkIsNaturalTypeConversion(node, data_type, target_data_type);