[PATCH] D22079: Refactor Archive-child iteration.

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 8 12:30:55 PDT 2016

lhames added a comment.

> OK, so the nullptr case is just for the end iterator? If so, can you

>  try to change the constructors to...


>   private:


>   child_iterator() : C(Child(nullptr, nullptr, nullptr)), E(nullptr) {}

>   public:


>   child_iterator(const Child &C, Error &E) : C(C), E(&E) {}

I can switch the Error* parameter to an Error&, but I think the default constructor should still be public - iterators are usually default constructible.

> Can you change this to return Optional<Archive::Child>?


> The iterator was only use a convenient form of Optional, but now that it requires an Error it is not as convenient for this function.

That would leave clients unable to detect the difference between a broken archive and an undefined symbol. I don't think we want to do that.




More information about the llvm-commits mailing list