Remove Func::AsScriptFunc() methods

Not used frequently enough, so possibly better to minimize leakage of
details from non-detail API.
This commit is contained in:
Jon Siwek 2020-12-13 14:03:39 -08:00
parent 4824da0325
commit 70ff4ef678
4 changed files with 8 additions and 12 deletions

View file

@ -63,12 +63,6 @@ public:
~Func() override; ~Func() override;
zeek::detail::ScriptFunc* AsScriptFunc()
{ return GetKind() == SCRIPT_FUNC ? (detail::ScriptFunc*) this : nullptr; }
const zeek::detail::ScriptFunc* AsScriptFunc() const
{ return GetKind() == SCRIPT_FUNC ? (detail::ScriptFunc*) this : nullptr; }
virtual bool IsPure() const = 0; virtual bool IsPure() const = 0;
FunctionFlavor Flavor() const { return GetType()->Flavor(); } FunctionFlavor Flavor() const { return GetType()->Flavor(); }

View file

@ -738,10 +738,10 @@ void end_func(StmtPtr body)
ingredients->id->SetConst(); ingredients->id->SetConst();
} }
auto func = ingredients->id->GetVal()->AsFunc()->AsScriptFunc(); auto func = cast_intrusive<ScriptFunc>(ingredients->id->GetVal()->AsFuncPtr());
func->SetScope(ingredients->scope); func->SetScope(ingredients->scope);
analyze_func({NewRef{}, func}); analyze_func(std::move(func));
// Note: ideally, something would take ownership of this memory until the // Note: ideally, something would take ownership of this memory until the
// end of script execution, but that's essentially the same as the // end of script execution, but that's essentially the same as the

View file

@ -175,11 +175,13 @@ ExprPtr Inliner::CheckForInlining(IntrusivePtr<CallExpr> c)
if ( ! func_v ) if ( ! func_v )
return c; return c;
auto func_vf = func_v->AsFunc()->AsScriptFunc(); auto function = func_v->AsFunc();
if ( ! func_vf ) if ( function->GetKind() != Func::SCRIPT_FUNC )
return c; return c;
auto func_vf = static_cast<ScriptFunc*>(function);
if ( inline_ables.count(func_vf) == 0 ) if ( inline_ables.count(func_vf) == 0 )
return c; return c;

View file

@ -146,10 +146,10 @@ TraversalCode ProfileFunc::PreExpr(const Expr* e)
if ( func_v ) if ( func_v )
{ {
auto func_vf = func_v->AsFunc(); auto func_vf = func_v->AsFunc();
auto bf = func_vf->AsScriptFunc();
if ( bf ) if ( func_vf->GetKind() == Func::SCRIPT_FUNC )
{ {
auto bf = static_cast<ScriptFunc*>(func_vf);
script_calls.insert(bf); script_calls.insert(bf);
if ( in_when ) if ( in_when )