File tree Expand file tree Collapse file tree 3 files changed +15
-3
lines changed
torch/csrc/jit/passes/utils Expand file tree Collapse file tree 3 files changed +15
-3
lines changed Original file line number Diff line number Diff line change @@ -435,6 +435,10 @@ class List final {
435435 // TODO Test use_count
436436 size_t use_count () const ;
437437
438+ // private API for now because the return type will change to TypePtr
439+ // instead of optional<TypePtr> once types are mandatory.
440+ optional<TypePtr> _elementType () const ;
441+
438442private:
439443 explicit List (c10::intrusive_ptr<detail::ListImpl<StorageT>>&& elements);
440444 friend struct IValue ;
Original file line number Diff line number Diff line change @@ -289,4 +289,9 @@ size_t List<T>::use_count() const {
289289 return impl_.use_count ();
290290}
291291
292+ template <class T >
293+ optional<TypePtr> List<T>::_elementType() const {
294+ return impl_->elementType ;
295+ }
296+
292297}
Original file line number Diff line number Diff line change @@ -25,9 +25,12 @@ IValue deepCopy(const IValue& self) {
2525
2626 // Lists of ivalues should recursively deep copy their contents
2727 if (self.isGenericList ()) {
28- auto newList = c10::impl::GenericList (c10::impl::deprecatedUntypedList ());
29- newList.reserve (self.toGenericListRef ().size ());
30- for (const IValue& value : self.toGenericListRef ()) {
28+ auto source = std::move (self).toGenericList ();
29+ auto newList = source._elementType ().has_value ()
30+ ? c10::impl::GenericList (*source._elementType ())
31+ : c10::impl::GenericList (c10::impl::deprecatedUntypedList ());
32+ newList.reserve (source.size ());
33+ for (const IValue& value : source) {
3134 newList.push_back (deepCopy (value));
3235 }
3336 return newList;
You can’t perform that action at this time.
0 commit comments