Remove unused FlattenExpr

This commit is contained in:
Jon Siwek 2020-05-11 15:59:15 -07:00
parent 6147804b36
commit 40ee59f0c3
2 changed files with 1 additions and 63 deletions

View file

@ -37,7 +37,7 @@ const char* expr_name(BroExprTag t)
"$=", "in", "<<>>", "$=", "in", "<<>>",
"()", "function()", "event", "schedule", "()", "function()", "event", "schedule",
"coerce", "record_coerce", "table_coerce", "vector_coerce", "coerce", "record_coerce", "table_coerce", "vector_coerce",
"sizeof", "flatten", "cast", "is", "[:]=" "sizeof", "cast", "is", "[:]="
}; };
if ( int(t) >= NUM_EXPRS ) if ( int(t) >= NUM_EXPRS )
@ -410,8 +410,6 @@ void UnaryExpr::ExprDescribe(ODesc* d) const
{ {
if ( is_coerce ) if ( is_coerce )
d->Add("(coerce "); d->Add("(coerce ");
else if ( Tag() == EXPR_FLATTEN )
d->Add("flatten ");
else if ( Tag() != EXPR_REF ) else if ( Tag() != EXPR_REF )
d->Add(expr_name(Tag())); d->Add(expr_name(Tag()));
} }
@ -3787,53 +3785,6 @@ IntrusivePtr<Val> VectorCoerceExpr::Fold(Val* v) const
return make_intrusive<VectorVal>(GetType<VectorType>()); return make_intrusive<VectorVal>(GetType<VectorType>());
} }
FlattenExpr::FlattenExpr(IntrusivePtr<Expr> arg_op)
: UnaryExpr(EXPR_FLATTEN, std::move(arg_op))
{
if ( IsError() )
return;
const auto& t = op->GetType();
if ( t->Tag() != TYPE_RECORD )
Internal("bad type in FlattenExpr::FlattenExpr");
RecordType* rt = t->AsRecordType();
num_fields = rt->NumFields();
auto tl = make_intrusive<TypeList>();
for ( int i = 0; i < num_fields; ++i )
tl->Append(rt->GetFieldType(i));
Unref(rt);
SetType(std::move(tl));
}
IntrusivePtr<Val> FlattenExpr::Fold(Val* v) const
{
RecordVal* rv = v->AsRecordVal();
auto l = make_intrusive<ListVal>(TYPE_ANY);
for ( int i = 0; i < num_fields; ++i )
{
if ( Val* fv = rv->Lookup(i) )
{
l->Append({NewRef{}, fv});
continue;
}
const RecordType* rv_t = rv->GetType()->AsRecordType();
if ( const Attr* fa = rv_t->FieldDecl(i)->FindAttr(ATTR_DEFAULT) )
l->Append(fa->AttrExpr()->Eval(nullptr));
else
RuntimeError("missing field value");
}
return l;
}
ScheduleTimer::ScheduleTimer(const EventHandlerPtr& arg_event, zeek::Args arg_args, ScheduleTimer::ScheduleTimer(const EventHandlerPtr& arg_event, zeek::Args arg_args,
double t) double t)
: Timer(t, TIMER_SCHEDULE), : Timer(t, TIMER_SCHEDULE),

View file

@ -50,7 +50,6 @@ enum BroExprTag : int {
EXPR_TABLE_COERCE, EXPR_TABLE_COERCE,
EXPR_VECTOR_COERCE, EXPR_VECTOR_COERCE,
EXPR_SIZE, EXPR_SIZE,
EXPR_FLATTEN,
EXPR_CAST, EXPR_CAST,
EXPR_IS, EXPR_IS,
EXPR_INDEX_SLICE_ASSIGN, EXPR_INDEX_SLICE_ASSIGN,
@ -735,18 +734,6 @@ protected:
IntrusivePtr<Val> Fold(Val* v) const override; IntrusivePtr<Val> Fold(Val* v) const override;
}; };
// An internal operator for flattening array indices that are records
// into a list of individual values.
class FlattenExpr final : public UnaryExpr {
public:
explicit FlattenExpr(IntrusivePtr<Expr> op);
protected:
IntrusivePtr<Val> Fold(Val* v) const override;
int num_fields;
};
class ScheduleTimer final : public Timer { class ScheduleTimer final : public Timer {
public: public:
ScheduleTimer(const EventHandlerPtr& event, zeek::Args args, double t); ScheduleTimer(const EventHandlerPtr& event, zeek::Args args, double t);