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

Fix affectation to tuple of R^d from a single '0'

Add associate tests
parent 1534984a
No related branches found
No related tags found
1 merge request!54Feature/language coverage
......@@ -423,6 +423,9 @@ class AffectationToTupleProcessor final : public INodeProcessor
}
} else if constexpr (std::is_same_v<ValueT, TinyVector<1>> and std::is_arithmetic_v<T>) {
*m_lhs = std::vector{TinyVector<1>{static_cast<double>(v)}};
} else if constexpr (is_tiny_vector_v<ValueT> and std::is_same_v<T, int64_t>) {
Assert(v == 0);
*m_lhs = std::vector<ValueT>{zero};
} else {
// LCOV_EXCL_START
throw ParseError("unexpected error: unexpected right hand side type in affectation", m_node.begin());
......
......@@ -620,6 +620,41 @@ clog << "log " << l << "\n";
+-(language::literal:"log ")
+-(language::name:l)
`-(language::literal:"\n")
)";
CHECK_AST(data, result);
}
SECTION("tuple list simplification")
{
std::string_view data = R"(
let x:(R^2), x=((0,0),(2,3));
let y:(R^2), y=((0));
)";
std::string_view result = R"(
(root)
+-(language::var_declaration)
| +-(language::name:x)
| +-(language::tuple_type_specifier)
| | `-(language::vector_type)
| | +-(language::R_set)
| | `-(language::integer:2)
| +-(language::name:x)
| `-(language::expression_list)
| +-(language::tuple_expression)
| | +-(language::integer:0)
| | `-(language::integer:0)
| `-(language::tuple_expression)
| +-(language::integer:2)
| `-(language::integer:3)
`-(language::var_declaration)
+-(language::name:y)
+-(language::tuple_type_specifier)
| `-(language::vector_type)
| +-(language::R_set)
| `-(language::integer:2)
+-(language::name:y)
`-(language::integer:0)
)";
CHECK_AST(data, result);
}
......
......@@ -122,6 +122,11 @@ let t :(R^2); t = ((1,2),0);
)",
"t", (std::vector<TinyVector<2>>{TinyVector<2>{1, 2}, TinyVector<2>{0, 0}}));
CHECK_AFFECTATION_RESULT(R"(
let t :(R^2); t = (0);
)",
"t", (std::vector<TinyVector<2>>{TinyVector<2>{0, 0}}));
CHECK_AFFECTATION_RESULT(R"(
let x : R^1, x = 1;
let t :(R^1); t = (x,2);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment