Fix issue with defaulted destructors

This commit is contained in:
Jonathan Müller 2018-12-13 17:28:51 +01:00
commit f66ec833c1
2 changed files with 42 additions and 21 deletions

View file

@ -384,6 +384,15 @@ struct d : c
/// virtual d::~d();
d::~d() {}
struct e : c
{
/// virtual ~e() override final;
~e() final;
};
/// virtual e::~e()=default;
e::~e() = default;
)";
auto file = parse({}, "cpp_destructor.cpp", code);
@ -425,8 +434,21 @@ d::~d() {}
REQUIRE(dtor.virtual_info().value() == cpp_virtual_flags::override);
REQUIRE(!dtor.noexcept_condition());
}
else if (dtor.name() == "~e")
{
REQUIRE(dtor.virtual_info());
if (dtor.is_declaration())
REQUIRE(dtor.virtual_info().value()
== (cpp_virtual_flags::override | cpp_virtual_flags::final));
else
{
REQUIRE(dtor.virtual_info().value() == cpp_virtual_flags::override);
REQUIRE(dtor.body_kind() == cpp_function_defaulted);
}
REQUIRE(!dtor.noexcept_condition());
}
else
REQUIRE(false);
});
REQUIRE(count == 5u);
REQUIRE(count == 7u);
}