Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(897)

Unified Diff: runtime/vm/object.cc

Issue 23452043: Introduce newline tokens into the token stream. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: rebase (fingerprints) Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: runtime/vm/object.cc
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 0606d7bd10d45dc06447e8e7e4187740a54cd063..62a47e4a5d96e267f67c835e632ef0ce0c3a05a9 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -6052,7 +6052,9 @@ void TokenStream::PrintToJSONStream(JSONStream* stream, bool ref) const {
}
-TokenStream::Iterator::Iterator(const TokenStream& tokens, intptr_t token_pos)
+TokenStream::Iterator::Iterator(const TokenStream& tokens,
+ intptr_t token_pos,
+ Iterator::StreamType stream_type)
: tokens_(TokenStream::Handle(tokens.raw())),
data_(ExternalTypedData::Handle(tokens.GetStream())),
stream_(reinterpret_cast<uint8_t*>(data_.DataAddr(0)), data_.Length()),
@@ -6060,7 +6062,8 @@ TokenStream::Iterator::Iterator(const TokenStream& tokens, intptr_t token_pos)
obj_(Object::Handle()),
cur_token_pos_(token_pos),
cur_token_kind_(Token::kILLEGAL),
- cur_token_obj_index_(-1) {
+ cur_token_obj_index_(-1),
+ stream_type_(stream_type) {
SetCurrentPosition(token_pos);
}
@@ -6092,7 +6095,10 @@ Token::Kind TokenStream::Iterator::LookaheadTokenKind(intptr_t num_tokens) {
intptr_t count = 0;
while (count < num_tokens && value != Token::kEOS) {
value = ReadToken();
- count += 1;
+ if ((stream_type_ == kAllTokens) ||
+ (static_cast<Token::Kind>(value) != Token::kNEWLINE)) {
+ count += 1;
+ }
}
if (value < Token::kNumTokens) {
kind = static_cast<Token::Kind>(value);
@@ -6124,8 +6130,12 @@ void TokenStream::Iterator::SetCurrentPosition(intptr_t value) {
void TokenStream::Iterator::Advance() {
- cur_token_pos_ = stream_.Position();
- intptr_t value = ReadToken();
+ intptr_t value;
+ do {
+ cur_token_pos_ = stream_.Position();
+ value = ReadToken();
+ } while ((stream_type_ == kNoNewlines) &&
+ (static_cast<Token::Kind>(value) == Token::kNEWLINE));
if (value < Token::kNumTokens) {
cur_token_kind_ = static_cast<Token::Kind>(value);
cur_token_obj_index_ = -1;
« no previous file with comments | « runtime/vm/object.h ('k') | runtime/vm/object_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698