Skip to content
Snippets Groups Projects
Commit d597b82e authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Change ASTNodeNaturalConversionChecker policy

- use ASTNodeNaturalConversionChecker<AllowRToR1Conversion> when dealing with lists
- ASTNodeNaturalConversionChecker call in ASTNodeBuiltinFunctionExpressionBuilder
parent 84bb6539
No related branches found
No related tags found
1 merge request!71Feature/language tiny matrices
...@@ -320,13 +320,7 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData ...@@ -320,13 +320,7 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData
} }
}; };
if (parameter_type == ASTNodeDataType::vector_t and parameter_type.dimension() == 1) { ASTNodeNaturalConversionChecker<AllowRToR1Conversion>{argument_node_sub_data_type, parameter_type};
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};
}
return get_function_argument_converter_for_argument_type(); return get_function_argument_converter_for_argument_type();
} }
......
...@@ -139,32 +139,12 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalExpressionConve ...@@ -139,32 +139,12 @@ ASTNodeNaturalConversionChecker<RToR1Conversion>::_checkIsNaturalExpressionConve
if (node.m_data_type == ASTNodeDataType::tuple_t) { if (node.m_data_type == ASTNodeDataType::tuple_t) {
this->_checkIsNaturalExpressionConversion(node, data_type.contentType(), target_content_type); this->_checkIsNaturalExpressionConversion(node, data_type.contentType(), target_content_type);
} else if (node.m_data_type == ASTNodeDataType::list_t) { } 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) { for (const auto& child : node.children) {
if (not isNaturalConversion(child->m_data_type, target_data_type)) { ASTNodeNaturalConversionChecker<AllowRToR1Conversion>(*child, target_data_type.contentType());
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);
}
}
} 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 { } else {
this->_checkIsNaturalExpressionConversion(node, data_type, target_content_type); this->_checkIsNaturalExpressionConversion(node, data_type, target_content_type);
} }
}
} else { } else {
this->_checkIsNaturalTypeConversion(node, data_type, target_data_type); this->_checkIsNaturalTypeConversion(node, data_type, target_data_type);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment