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
Branches
Tags
1 merge request!54Feature/language coverage
...@@ -423,6 +423,9 @@ class AffectationToTupleProcessor final : public INodeProcessor ...@@ -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>) { } 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)}}; *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 { } else {
// LCOV_EXCL_START // LCOV_EXCL_START
throw ParseError("unexpected error: unexpected right hand side type in affectation", m_node.begin()); throw ParseError("unexpected error: unexpected right hand side type in affectation", m_node.begin());
......
...@@ -620,6 +620,41 @@ clog << "log " << l << "\n"; ...@@ -620,6 +620,41 @@ clog << "log " << l << "\n";
+-(language::literal:"log ") +-(language::literal:"log ")
+-(language::name:l) +-(language::name:l)
`-(language::literal:"\n") `-(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); CHECK_AST(data, result);
} }
......
...@@ -122,6 +122,11 @@ let t :(R^2); t = ((1,2),0); ...@@ -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}})); "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"( CHECK_AFFECTATION_RESULT(R"(
let x : R^1, x = 1; let x : R^1, x = 1;
let t :(R^1); t = (x,2); 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