diff --git a/src/language/node_processor/AffectationProcessor.hpp b/src/language/node_processor/AffectationProcessor.hpp index f408b632facf9de0c1374ab3b2667d4d0cd8a8a4..3f463ba70fc4023c1b153009b129d195a0b36d29 100644 --- a/src/language/node_processor/AffectationProcessor.hpp +++ b/src/language/node_processor/AffectationProcessor.hpp @@ -614,12 +614,19 @@ class AffectationToTupleProcessor final : public INodeProcessor os << v; *m_lhs = std::vector<std::string>{os.str()}; } - } else if constexpr ((std::is_same_v<ValueT, TinyVector<1>> or - std::is_same_v<ValueT, TinyMatrix<1>>)and std::is_arithmetic_v<T>) { - *m_lhs = std::vector<ValueT>{ValueT{static_cast<double>(v)}}; - } else if constexpr ((is_tiny_vector_v<ValueT> or is_tiny_matrix_v<ValueT>)and std::is_same_v<T, int64_t>) { - Assert(v == 0); - *m_lhs = std::vector<ValueT>{ValueT{zero}}; + } else if constexpr (is_tiny_vector_v<ValueT> or is_tiny_matrix_v<ValueT>) { + if constexpr (std::is_same_v<ValueT, TinyVector<1>> and std::is_arithmetic_v<T>) { + *m_lhs = std::vector<TinyVector<1>>{TinyVector<1>{static_cast<double>(v)}}; + } else if constexpr (std::is_same_v<ValueT, TinyMatrix<1>> and std::is_arithmetic_v<T>) { + *m_lhs = std::vector<TinyMatrix<1>>{TinyMatrix<1>{static_cast<double>(v)}}; + } else if constexpr (std::is_same_v<T, int64_t>) { + Assert(v == 0); + *m_lhs = std::vector<ValueT>{ValueT{zero}}; + } else { + // LCOV_EXCL_START + throw ParseError("unexpected error: unexpected right hand side type in affectation", m_node.begin()); + // LCOV_EXCL_STOP + } } else { // LCOV_EXCL_START throw ParseError("unexpected error: unexpected right hand side type in affectation", m_node.begin());