AK: Stop allowing implicit downcast with RefPtr and NonnullRefPtr

We were allowing this dangerous kind of thing:

RefPtr<Base> base;
RefPtr<Derived> derived = base;

This patch changes the {Nonnull,}RefPtr constructors so this is no
longer possible.

To downcast one of these pointers, there is now static_ptr_cast<T>:

RefPtr<Derived> derived = static_ptr_cast<Derived>(base);

Fixing this exposed a ton of cowboy-downcasts in various places,
which we're now forced to fix. :^)
This commit is contained in:
Andreas Kling 2020-04-05 11:11:07 +02:00
parent 058c614110
commit 1d468ed6d3
Notes: sideshowbarker 2024-07-19 07:54:24 +09:00
11 changed files with 68 additions and 54 deletions

View file

@ -33,7 +33,7 @@
namespace JS {
ScriptFunction::ScriptFunction(const ScopeNode& body, Vector<FlyString> parameters)
ScriptFunction::ScriptFunction(const Statement& body, Vector<FlyString> parameters)
: m_body(body)
, m_parameters(move(parameters))
{