various accessors used by ZAM compiler

This commit is contained in:
Vern Paxson 2021-05-30 17:16:03 -07:00
parent f861a194f9
commit f2f041b63b
5 changed files with 75 additions and 2 deletions

View file

@ -55,6 +55,12 @@ const FieldLHSAssignExpr* Expr::AsFieldLHSAssignExpr() const
return (const FieldLHSAssignExpr*) this;
}
HasFieldExpr* Expr::AsHasFieldExpr()
{
CHECK_TAG(tag, EXPR_HAS_FIELD, "ExprVal::AsHasFieldExpr", expr_name)
return (HasFieldExpr*) this;
}
const HasFieldExpr* Expr::AsHasFieldExpr() const
{
CHECK_TAG(tag, EXPR_HAS_FIELD, "ExprVal::AsHasFieldExpr", expr_name)
@ -73,12 +79,60 @@ const IsExpr* Expr::AsIsExpr() const
return (const IsExpr*) this;
}
CallExpr* Expr::AsCallExpr()
{
CHECK_TAG(tag, EXPR_CALL, "ExprVal::AsCallExpr", expr_name)
return (CallExpr*) this;
}
FieldAssignExpr* Expr::AsFieldAssignExpr()
{
CHECK_TAG(tag, EXPR_FIELD_ASSIGN, "ExprVal::AsFieldAssignExpr", expr_name)
return (FieldAssignExpr*) this;
}
const RecordCoerceExpr* Expr::AsRecordCoerceExpr() const
{
CHECK_TAG(tag, EXPR_RECORD_COERCE, "ExprVal::AsRecordCoerceExpr", expr_name)
return (const RecordCoerceExpr*) this;
}
const RecordConstructorExpr* Expr::AsRecordConstructorExpr() const
{
CHECK_TAG(tag, EXPR_RECORD_CONSTRUCTOR, "ExprVal::AsRecordConstructorExpr", expr_name)
return (const RecordConstructorExpr*) this;
}
const TableConstructorExpr* Expr::AsTableConstructorExpr() const
{
CHECK_TAG(tag, EXPR_TABLE_CONSTRUCTOR, "ExprVal::AsTableConstructorExpr", expr_name)
return (const TableConstructorExpr*) this;
}
const SetConstructorExpr* Expr::AsSetConstructorExpr() const
{
CHECK_TAG(tag, EXPR_SET_CONSTRUCTOR, "ExprVal::AsSetConstructorExpr", expr_name)
return (const SetConstructorExpr*) this;
}
RefExpr* Expr::AsRefExpr()
{
CHECK_TAG(tag, EXPR_REF, "ExprVal::AsRefExpr", expr_name)
return (RefExpr*) this;
}
const InlineExpr* Expr::AsInlineExpr() const
{
CHECK_TAG(tag, EXPR_INLINE, "ExprVal::AsInlineExpr", expr_name)
return (const InlineExpr*) this;
}
AnyIndexExpr* Expr::AsAnyIndexExpr()
{
CHECK_TAG(tag, EXPR_ANY_INDEX, "ExprVal::AsAnyIndexExpr", expr_name)
return (AnyIndexExpr*) this;
}
const AnyIndexExpr* Expr::AsAnyIndexExpr() const
{
CHECK_TAG(tag, EXPR_ANY_INDEX, "ExprVal::AsAnyIndexExpr", expr_name)