diff --git a/src/Val.cc b/src/Val.cc index cda842b50a..fd8d5a4152 100644 --- a/src/Val.cc +++ b/src/Val.cc @@ -2982,7 +2982,6 @@ VectorVal::VectorVal(VectorType* t) : VectorVal({NewRef{}, t}) VectorVal::VectorVal(IntrusivePtr t) : Val(t.get()) { - vector_type = std::move(t); val.vector_val = new vector(); } @@ -3002,7 +3001,7 @@ IntrusivePtr VectorVal::SizeVal() const bool VectorVal::Assign(unsigned int index, IntrusivePtr element) { if ( element && - ! same_type(element->Type(), vector_type->Yield().get(), false) ) + ! same_type(element->Type(), Type()->AsVectorType()->Yield().get(), false) ) return false; Val* val_at_index = nullptr; @@ -3043,7 +3042,7 @@ bool VectorVal::AssignRepeat(unsigned int index, unsigned int how_many, bool VectorVal::Insert(unsigned int index, Val* element) { if ( element && - ! same_type(element->Type(), vector_type->Yield().get(), false) ) + ! same_type(element->Type(), Type()->AsVectorType()->Yield().get(), false) ) { Unref(element); return false; @@ -3130,7 +3129,7 @@ unsigned int VectorVal::ResizeAtLeast(unsigned int new_num_elements) IntrusivePtr VectorVal::DoClone(CloneState* state) { - auto vv = make_intrusive(vector_type); + auto vv = make_intrusive(IntrusivePtr{NewRef{}, Type()->AsVectorType()}); vv->val.vector_val->reserve(val.vector_val->size()); state->NewClone(this, vv); diff --git a/src/Val.h b/src/Val.h index 54275a95ad..c73579d1e4 100644 --- a/src/Val.h +++ b/src/Val.h @@ -1077,8 +1077,6 @@ public: protected: void ValDescribe(ODesc* d) const override; IntrusivePtr DoClone(CloneState* state) override; - - IntrusivePtr vector_type; }; // Checks the given value for consistency with the given type. If an