directly construct records of known types, rather than requiring coercion

This commit is contained in:
Vern Paxson 2021-05-30 17:47:28 -07:00
parent d165db6909
commit 9a429808ab
6 changed files with 81 additions and 12 deletions

View file

@ -1827,7 +1827,14 @@ ExprPtr HasFieldExpr::Duplicate()
ExprPtr RecordConstructorExpr::Duplicate()
{
auto op_l = op->Duplicate()->AsListExprPtr();
return SetSucc(new RecordConstructorExpr(op_l));
if ( map )
{
auto rt = cast_intrusive<RecordType>(type);
return SetSucc(new RecordConstructorExpr(rt, op_l));
}
else
return SetSucc(new RecordConstructorExpr(op_l));
}
bool RecordConstructorExpr::HasReducedOps(Reducer* c) const