Fix issue with defaulted destructors
This commit is contained in:
parent
69c6ca17f5
commit
f66ec833c1
2 changed files with 42 additions and 21 deletions
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue