This was leading to confusing bugs where I was accidentally passing it by value and then wondering why tokens weren't getting consumed!
@@ -57,6 +57,8 @@ public:
explicit TokenStream(Vector<T> const&);
~TokenStream();
+ TokenStream(TokenStream<T> const&) = delete;
+
bool has_next_token();
T const& next_token();
T const& peek_token(int offset = 0);