simon_tatham added a comment.

Ah, now I see what you mean – I didn't look far enough!

I don't know this code well (in fact I'm not sure why you picked me as a 
reviewer), but off the top of my head: the question is not just whether 
`tokens_iterator` happens to be the same thing as `const Token *` //now//. It's 
whether it's guaranteed to stay that way in the future.

One of the purposes of these iterator types is that they form an opaque 
abstraction layer: the client uses the type in only the ways that are 
guaranteed to work by the iterator specification, and then the implementation 
can completely change without breaking any client.

If you make a change like this, and later `SmallVector::iterator` changes to 
some other legal implementation, or `tokens_iterator` changes to be something 
other than a `SmallVector::iterator`, then this change will have to be reverted.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D115014/new/

https://reviews.llvm.org/D115014

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to