From 220d67bf1e7e1aaa9568cfb503d8d04030feeb65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Del=20Pino?= <stephane.delpino44@gmail.com> Date: Mon, 20 Jun 2022 22:20:22 +0200 Subject: [PATCH] Add few missing tests and remove dead code --- .../ASTNodeAffectationExpressionBuilder.cpp | 6 --- ...STNodeBuiltinFunctionExpressionBuilder.cpp | 21 ---------- src/language/ast/ASTNodeExpressionBuilder.cpp | 4 ++ .../ast/ASTNodeFunctionExpressionBuilder.cpp | 42 ------------------- ...STNodeListAffectationExpressionBuilder.cpp | 6 --- tests/test_ASTNodeDataType.cpp | 10 +++++ 6 files changed, 14 insertions(+), 75 deletions(-) diff --git a/src/language/ast/ASTNodeAffectationExpressionBuilder.cpp b/src/language/ast/ASTNodeAffectationExpressionBuilder.cpp index cc26d368e..321170395 100644 --- a/src/language/ast/ASTNodeAffectationExpressionBuilder.cpp +++ b/src/language/ast/ASTNodeAffectationExpressionBuilder.cpp @@ -37,12 +37,6 @@ ASTNodeAffectationExpressionBuilder::ASTNodeAffectationExpressionBuilder(ASTNode ASTNode& lhs_node = *node.children[0]; ASTNode& rhs_node = *node.children[1]; - if (rhs_node.m_data_type == ASTNodeDataType::list_t) { - if ((lhs_node.m_data_type == ASTNodeDataType::vector_t) or (lhs_node.m_data_type == ASTNodeDataType::matrix_t)) { - ASTNodeNaturalConversionChecker(rhs_node, lhs_node.m_data_type); - } - } - node.m_node_processor = optional_processor_builder.value()->getNodeProcessor(lhs_node, rhs_node); } else { std::ostringstream error_message; diff --git a/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp index cdd9c43d9..e2b4a947f 100644 --- a/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp +++ b/src/language/ast/ASTNodeBuiltinFunctionExpressionBuilder.cpp @@ -85,16 +85,6 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData // LCOV_EXCL_STOP } } - case ASTNodeDataType::list_t: { - if (argument_node_sub_data_type.m_parent_node.children.size() == parameter_v.dimension()) { - return std::make_unique<FunctionTinyVectorArgumentConverter<ParameterT, ParameterT>>(argument_number); - } else { - // LCOV_EXCL_START - throw ParseError("unexpected error: invalid argument dimension", - std::vector{argument_node_sub_data_type.m_parent_node.begin()}); - // LCOV_EXCL_STOP - } - } case ASTNodeDataType::int_t: { if (argument_node_sub_data_type.m_parent_node.is_type<language::integer>()) { if (std::stoi(argument_node_sub_data_type.m_parent_node.string()) == 0) { @@ -162,17 +152,6 @@ ASTNodeBuiltinFunctionExpressionBuilder::_getArgumentConverter(const ASTNodeData // LCOV_EXCL_STOP } } - case ASTNodeDataType::list_t: { - if (argument_node_sub_data_type.m_parent_node.children.size() == - (parameter_v.numberOfRows() * parameter_v.numberOfColumns())) { - return std::make_unique<FunctionTinyMatrixArgumentConverter<ParameterT, ParameterT>>(argument_number); - } else { - // LCOV_EXCL_START - throw ParseError("unexpected error: invalid argument dimension", - std::vector{argument_node_sub_data_type.m_parent_node.begin()}); - // LCOV_EXCL_STOP - } - } case ASTNodeDataType::int_t: { if (argument_node_sub_data_type.m_parent_node.is_type<language::integer>()) { if (std::stoi(argument_node_sub_data_type.m_parent_node.string()) == 0) { diff --git a/src/language/ast/ASTNodeExpressionBuilder.cpp b/src/language/ast/ASTNodeExpressionBuilder.cpp index 72b385495..4e61d118e 100644 --- a/src/language/ast/ASTNodeExpressionBuilder.cpp +++ b/src/language/ast/ASTNodeExpressionBuilder.cpp @@ -91,9 +91,11 @@ ASTNodeExpressionBuilder::_buildExpression(ASTNode& n) n.m_node_processor = std::make_unique<TinyVectorExpressionProcessor<3>>(n); break; } + // LCOV_EXCL_START default: { throw UnexpectedError("invalid vector dimension"); } + // LCOV_EXCL_STOP } } else if (n.is_type<language::matrix_expression>()) { Assert(n.m_data_type == ASTNodeDataType::matrix_t); @@ -112,9 +114,11 @@ ASTNodeExpressionBuilder::_buildExpression(ASTNode& n) n.m_node_processor = std::make_unique<TinyMatrixExpressionProcessor<3, 3>>(n); break; } + // LCOV_EXCL_START default: { throw UnexpectedError("invalid matrix dimension"); } + // LCOV_EXCL_STOP } } else if ((n.is_type<language::row_expression>())) { diff --git a/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp b/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp index a836d24cd..a38112388 100644 --- a/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp +++ b/src/language/ast/ASTNodeFunctionExpressionBuilder.cpp @@ -78,16 +78,6 @@ ASTNodeFunctionExpressionBuilder::_getArgumentConverter(SymbolType& parameter_sy // LCOV_EXCL_STOP } } - case ASTNodeDataType::list_t: { - if (node_sub_data_type.m_parent_node.children.size() == parameter_v.dimension()) { - return std::make_unique<FunctionTinyVectorArgumentConverter<ParameterT, ParameterT>>(parameter_id); - } else { - // LCOV_EXCL_START - throw ParseError("unexpected error: invalid argument dimension", - std::vector{node_sub_data_type.m_parent_node.begin()}); - // LCOV_EXCL_STOP - } - } case ASTNodeDataType::int_t: { if (node_sub_data_type.m_parent_node.is_type<language::integer>()) { if (std::stoi(node_sub_data_type.m_parent_node.string()) == 0) { @@ -120,16 +110,6 @@ ASTNodeFunctionExpressionBuilder::_getArgumentConverter(SymbolType& parameter_sy // LCOV_EXCL_STOP } } - case ASTNodeDataType::list_t: { - if (node_sub_data_type.m_parent_node.children.size() == parameter_v.dimension()) { - return std::make_unique<FunctionTinyMatrixArgumentConverter<ParameterT, ParameterT>>(parameter_id); - } else { - // LCOV_EXCL_START - throw ParseError("unexpected error: invalid argument dimension", - std::vector{node_sub_data_type.m_parent_node.begin()}); - // LCOV_EXCL_STOP - } - } case ASTNodeDataType::int_t: { if (node_sub_data_type.m_parent_node.is_type<language::integer>()) { if (std::stoi(node_sub_data_type.m_parent_node.string()) == 0) { @@ -325,17 +305,6 @@ ASTNodeFunctionExpressionBuilder::_getFunctionProcessor(const ASTNodeDataType& r // LCOV_EXCL_STOP } } - case ASTNodeDataType::list_t: { - if (function_component_expression.children.size() == return_v.dimension()) { - return std::make_unique<FunctionExpressionProcessor<ReturnT, AggregateDataVariant>>( - function_component_expression); - } else { - // LCOV_EXCL_START - throw ParseError("unexpected error: invalid dimension for returned vector", - std::vector{function_component_expression.begin()}); - // LCOV_EXCL_STOP - } - } case ASTNodeDataType::int_t: { if (function_component_expression.is_type<language::integer>()) { if (std::stoi(function_component_expression.string()) == 0) { @@ -370,17 +339,6 @@ ASTNodeFunctionExpressionBuilder::_getFunctionProcessor(const ASTNodeDataType& r // LCOV_EXCL_STOP } } - case ASTNodeDataType::list_t: { - if (function_component_expression.children.size() == return_v.dimension()) { - return std::make_unique<FunctionExpressionProcessor<ReturnT, AggregateDataVariant>>( - function_component_expression); - } else { - // LCOV_EXCL_START - throw ParseError("unexpected error: invalid dimension for returned vector", - std::vector{function_component_expression.begin()}); - // LCOV_EXCL_STOP - } - } case ASTNodeDataType::int_t: { if (function_component_expression.is_type<language::integer>()) { if (std::stoi(function_component_expression.string()) == 0) { diff --git a/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp b/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp index 76b34ae53..6697967d2 100644 --- a/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp +++ b/src/language/ast/ASTNodeListAffectationExpressionBuilder.cpp @@ -58,9 +58,6 @@ ASTNodeListAffectationExpressionBuilder::_buildAffectationProcessor( if ((node_sub_data_type.m_data_type == ASTNodeDataType::vector_t) and (node_sub_data_type.m_data_type.dimension() == value.dimension())) { list_affectation_processor->template add<ValueT, ValueT>(value_node); - } else if ((node_sub_data_type.m_data_type == ASTNodeDataType::list_t) and - (node_sub_data_type.m_parent_node.children.size() == value.dimension())) { - list_affectation_processor->template add<ValueT, AggregateDataVariant>(value_node); } else if (node_sub_data_type.m_parent_node.is_type<language::integer>()) { if (std::stoi(node_sub_data_type.m_parent_node.string()) == 0) { list_affectation_processor->template add<ValueT, ZeroType>(value_node); @@ -96,9 +93,6 @@ ASTNodeListAffectationExpressionBuilder::_buildAffectationProcessor( (node_sub_data_type.m_data_type.numberOfRows() == value.numberOfRows()) and (node_sub_data_type.m_data_type.numberOfColumns() == value.numberOfColumns())) { list_affectation_processor->template add<ValueT, ValueT>(value_node); - } else if ((node_sub_data_type.m_data_type == ASTNodeDataType::list_t) and - (node_sub_data_type.m_parent_node.children.size() == value.numberOfRows() * value.numberOfColumns())) { - list_affectation_processor->template add<ValueT, AggregateDataVariant>(value_node); } else if (node_sub_data_type.m_parent_node.is_type<language::integer>()) { if (std::stoi(node_sub_data_type.m_parent_node.string()) == 0) { list_affectation_processor->template add<ValueT, ZeroType>(value_node); diff --git a/tests/test_ASTNodeDataType.cpp b/tests/test_ASTNodeDataType.cpp index 8c6219e2d..29ee31308 100644 --- a/tests/test_ASTNodeDataType.cpp +++ b/tests/test_ASTNodeDataType.cpp @@ -444,6 +444,16 @@ TEST_CASE("ASTNodeDataType", "[language]") REQUIRE_THROWS_WITH(getMatrixExpressionType(*matrix_expression_node), "unexpected node type"); } + SECTION("bad content type") + { + const size_t dimension = 3; + matrix_expression_node->children.clear(); + for (size_t i = 0; i < dimension; ++i) { + matrix_expression_node->children.emplace_back(std::make_unique<ASTNode>()); + } + REQUIRE_THROWS_WITH(getMatrixExpressionType(*matrix_expression_node), "expecting row expression"); + } + SECTION("bad children size 1") { matrix_expression_node->children.resize(4); -- GitLab