diff --git a/src/Val.cc b/src/Val.cc index c20b1e0376..b616e1ed04 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -3223,9 +3223,15 @@ ValPtr TypeVal::DoClone(CloneState* state) return {NewRef{}, this}; } -VectorVal::VectorVal(VectorTypePtr t) : Val(t) +VectorVal::VectorVal(VectorTypePtr t) : +VectorVal(t, new vector>()) { - vector_val = new vector>(); + } + +VectorVal::VectorVal(VectorTypePtr t, std::vector>* vals) +: Val(t) + { + vector_val = vals; yield_type = t->Yield(); auto y_tag = yield_type->Tag(); diff --git a/src/Val.h b/src/Val.h index 66810ce4c0..cdfc279d8d 100644 --- a/src/Val.h +++ b/src/Val.h @@ -1473,6 +1473,8 @@ protected: class VectorVal final : public Val, public notifier::detail::Modifiable { public: explicit VectorVal(VectorTypePtr t); + VectorVal(VectorTypePtr t, std::vector>* vals); + ~VectorVal() override; ValPtr SizeVal() const override;