Fix compatibility issue in enum test

This commit is contained in:
Jonathan Müller 2017-04-21 11:56:39 +02:00
commit 2ce5ddc295

View file

@ -77,20 +77,28 @@ enum ns::c : int {};
++no_vals; ++no_vals;
REQUIRE(val.value()); REQUIRE(val.value());
auto& expr = val.value().value(); auto& expr = val.value().value();
if (equal_types(idx, expr.type(), *cpp_builtin_type::build(cpp_uint)))
{
REQUIRE(expr.kind() == cpp_expression_kind::unexposed_t); REQUIRE(expr.kind() == cpp_expression_kind::unexposed_t);
REQUIRE(static_cast<const cpp_unexposed_expression&>(expr).expression() REQUIRE(static_cast<const cpp_unexposed_expression&>(expr).expression()
== "42"); == "42");
REQUIRE(equal_types(idx, expr.type(), *cpp_builtin_type::build(cpp_uint))); }
else
{
REQUIRE(equal_types(idx, expr.type(), *cpp_builtin_type::build(cpp_int)));
REQUIRE(expr.kind() == cpp_expression_kind::literal_t);
REQUIRE(static_cast<const cpp_literal_expression&>(expr).value() == "42");
}
} }
else if (val.name() == "a_d") else if (val.name() == "a_d")
{ {
++no_vals; ++no_vals;
REQUIRE(val.value()); REQUIRE(val.value());
auto& expr = val.value().value(); auto& expr = val.value().value();
// this is unexposed for some reason
REQUIRE(expr.kind() == cpp_expression_kind::unexposed_t); REQUIRE(expr.kind() == cpp_expression_kind::unexposed_t);
REQUIRE(static_cast<const cpp_unexposed_expression&>(expr).expression() REQUIRE(static_cast<const cpp_unexposed_expression&>(expr).expression()
== "a_a+2"); == "a_a+2");
if (!equal_types(idx, expr.type(), *cpp_builtin_type::build(cpp_int)))
REQUIRE(equal_types(idx, expr.type(), *cpp_builtin_type::build(cpp_uint))); REQUIRE(equal_types(idx, expr.type(), *cpp_builtin_type::build(cpp_uint)));
} }
else else