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

Side by Side Diff: tools/gn/tokenizer.cc

Issue 382673002: Fixes for re-enabling more MSVC level 4 warnings: misc edition #2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "tools/gn/tokenizer.h" 5 #include "tools/gn/tokenizer.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "tools/gn/input_file.h" 8 #include "tools/gn/input_file.h"
9 9
10 namespace { 10 namespace {
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 if (type != Token::COMMENT) 127 if (type != Token::COMMENT)
128 tokens_.push_back(Token(location, type, token_value)); 128 tokens_.push_back(Token(location, type, token_value));
129 } 129 }
130 if (err_->has_error()) 130 if (err_->has_error())
131 tokens_.clear(); 131 tokens_.clear();
132 return tokens_; 132 return tokens_;
133 } 133 }
134 134
135 // static 135 // static
136 size_t Tokenizer::ByteOffsetOfNthLine(const base::StringPiece& buf, int n) { 136 size_t Tokenizer::ByteOffsetOfNthLine(const base::StringPiece& buf, int n) {
137 int cur_line = 1; 137 DCHECK_GT(n, 0);
138 size_t cur_byte = 0;
139
140 DCHECK(n > 0);
141 138
142 if (n == 1) 139 if (n == 1)
143 return 0; 140 return 0;
144 141
142 int cur_line = 1;
143 size_t cur_byte = 0;
145 while (cur_byte < buf.size()) { 144 while (cur_byte < buf.size()) {
146 if (IsNewline(buf, cur_byte)) { 145 if (IsNewline(buf, cur_byte)) {
147 cur_line++; 146 cur_line++;
148 if (cur_line == n) 147 if (cur_line == n)
149 return cur_byte + 1; 148 return cur_byte + 1;
150 } 149 }
151 cur_byte++; 150 cur_byte++;
152 } 151 }
153 return -1; 152 return static_cast<size_t>(-1);
154 } 153 }
155 154
156 // static 155 // static
157 bool Tokenizer::IsNewline(const base::StringPiece& buffer, size_t offset) { 156 bool Tokenizer::IsNewline(const base::StringPiece& buffer, size_t offset) {
158 DCHECK(offset < buffer.size()); 157 DCHECK(offset < buffer.size());
159 // We may need more logic here to handle different line ending styles. 158 // We may need more logic here to handle different line ending styles.
160 return buffer[offset] == '\n'; 159 return buffer[offset] == '\n';
161 } 160 }
162 161
163 162
(...skipping 191 matching lines...) Expand 10 before | Expand all | Expand 10 after
355 } else if (cur_char() == '/' && cur_ + 1 < input_.size() && 354 } else if (cur_char() == '/' && cur_ + 1 < input_.size() &&
356 (input_[cur_ + 1] == '/' || input_[cur_ + 1] == '*')) { 355 (input_[cur_ + 1] == '/' || input_[cur_ + 1] == '*')) {
357 // Different types of comments. 356 // Different types of comments.
358 help = "Comments should start with # instead"; 357 help = "Comments should start with # instead";
359 } else { 358 } else {
360 help = "I have no idea what this is."; 359 help = "I have no idea what this is.";
361 } 360 }
362 361
363 return Err(location, "Invalid token.", help); 362 return Err(location, "Invalid token.", help);
364 } 363 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698