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

Side by Side Diff: tools/gn/parse_tree.h

Issue 643063004: Convert OVERRIDE -> override and update virtual/final usage in tools/gn/. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 6 years, 2 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
« no previous file with comments | « tools/gn/ninja_target_writer_unittest.cc ('k') | tools/gn/scope_per_file_provider.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 #ifndef TOOLS_GN_PARSE_TREE_H_ 5 #ifndef TOOLS_GN_PARSE_TREE_H_
6 #define TOOLS_GN_PARSE_TREE_H_ 6 #define TOOLS_GN_PARSE_TREE_H_
7 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
11 #include "base/compiler_specific.h"
12 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
13 #include "tools/gn/err.h" 12 #include "tools/gn/err.h"
14 #include "tools/gn/token.h" 13 #include "tools/gn/token.h"
15 #include "tools/gn/value.h" 14 #include "tools/gn/value.h"
16 15
17 class AccessorNode; 16 class AccessorNode;
18 class BinaryOpNode; 17 class BinaryOpNode;
19 class BlockCommentNode; 18 class BlockCommentNode;
20 class BlockNode; 19 class BlockNode;
21 class ConditionNode; 20 class ConditionNode;
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 // 129 //
131 // Additionally, the left-hand-side of the accessor must currently be an 130 // Additionally, the left-hand-side of the accessor must currently be an
132 // identifier. So you can't do things like: 131 // identifier. So you can't do things like:
133 // function_call()[1] 132 // function_call()[1]
134 // a = b.c.d 133 // a = b.c.d
135 // These are easier to implement if we needed them but given the very limited 134 // These are easier to implement if we needed them but given the very limited
136 // use cases for this, it hasn't seemed worth the bother. 135 // use cases for this, it hasn't seemed worth the bother.
137 class AccessorNode : public ParseNode { 136 class AccessorNode : public ParseNode {
138 public: 137 public:
139 AccessorNode(); 138 AccessorNode();
140 virtual ~AccessorNode(); 139 ~AccessorNode() override;
141 140
142 virtual const AccessorNode* AsAccessor() const override; 141 const AccessorNode* AsAccessor() const override;
143 virtual Value Execute(Scope* scope, Err* err) const override; 142 Value Execute(Scope* scope, Err* err) const override;
144 virtual LocationRange GetRange() const override; 143 LocationRange GetRange() const override;
145 virtual Err MakeErrorDescribing( 144 Err MakeErrorDescribing(
146 const std::string& msg, 145 const std::string& msg,
147 const std::string& help = std::string()) const override; 146 const std::string& help = std::string()) const override;
148 virtual void Print(std::ostream& out, int indent) const override; 147 void Print(std::ostream& out, int indent) const override;
149 148
150 // Base is the thing on the left of the [] or dot, currently always required 149 // Base is the thing on the left of the [] or dot, currently always required
151 // to be an identifier token. 150 // to be an identifier token.
152 const Token& base() const { return base_; } 151 const Token& base() const { return base_; }
153 void set_base(const Token& b) { base_ = b; } 152 void set_base(const Token& b) { base_ = b; }
154 153
155 // Index is the expression inside the []. Will be null if member is set. 154 // Index is the expression inside the []. Will be null if member is set.
156 const ParseNode* index() const { return index_.get(); } 155 const ParseNode* index() const { return index_.get(); }
157 void set_index(scoped_ptr<ParseNode> i) { index_ = i.Pass(); } 156 void set_index(scoped_ptr<ParseNode> i) { index_ = i.Pass(); }
158 157
(...skipping 14 matching lines...) Expand all
173 scoped_ptr<IdentifierNode> member_; 172 scoped_ptr<IdentifierNode> member_;
174 173
175 DISALLOW_COPY_AND_ASSIGN(AccessorNode); 174 DISALLOW_COPY_AND_ASSIGN(AccessorNode);
176 }; 175 };
177 176
178 // BinaryOpNode ---------------------------------------------------------------- 177 // BinaryOpNode ----------------------------------------------------------------
179 178
180 class BinaryOpNode : public ParseNode { 179 class BinaryOpNode : public ParseNode {
181 public: 180 public:
182 BinaryOpNode(); 181 BinaryOpNode();
183 virtual ~BinaryOpNode(); 182 ~BinaryOpNode() override;
184 183
185 virtual const BinaryOpNode* AsBinaryOp() const override; 184 const BinaryOpNode* AsBinaryOp() const override;
186 virtual Value Execute(Scope* scope, Err* err) const override; 185 Value Execute(Scope* scope, Err* err) const override;
187 virtual LocationRange GetRange() const override; 186 LocationRange GetRange() const override;
188 virtual Err MakeErrorDescribing( 187 Err MakeErrorDescribing(
189 const std::string& msg, 188 const std::string& msg,
190 const std::string& help = std::string()) const override; 189 const std::string& help = std::string()) const override;
191 virtual void Print(std::ostream& out, int indent) const override; 190 void Print(std::ostream& out, int indent) const override;
192 191
193 const Token& op() const { return op_; } 192 const Token& op() const { return op_; }
194 void set_op(const Token& t) { op_ = t; } 193 void set_op(const Token& t) { op_ = t; }
195 194
196 const ParseNode* left() const { return left_.get(); } 195 const ParseNode* left() const { return left_.get(); }
197 void set_left(scoped_ptr<ParseNode> left) { 196 void set_left(scoped_ptr<ParseNode> left) {
198 left_ = left.Pass(); 197 left_ = left.Pass();
199 } 198 }
200 199
201 const ParseNode* right() const { return right_.get(); } 200 const ParseNode* right() const { return right_.get(); }
202 void set_right(scoped_ptr<ParseNode> right) { 201 void set_right(scoped_ptr<ParseNode> right) {
203 right_ = right.Pass(); 202 right_ = right.Pass();
204 } 203 }
205 204
206 private: 205 private:
207 scoped_ptr<ParseNode> left_; 206 scoped_ptr<ParseNode> left_;
208 Token op_; 207 Token op_;
209 scoped_ptr<ParseNode> right_; 208 scoped_ptr<ParseNode> right_;
210 209
211 DISALLOW_COPY_AND_ASSIGN(BinaryOpNode); 210 DISALLOW_COPY_AND_ASSIGN(BinaryOpNode);
212 }; 211 };
213 212
214 // BlockNode ------------------------------------------------------------------- 213 // BlockNode -------------------------------------------------------------------
215 214
216 class BlockNode : public ParseNode { 215 class BlockNode : public ParseNode {
217 public: 216 public:
218 // Set has_scope if this block introduces a nested scope. 217 // Set has_scope if this block introduces a nested scope.
219 explicit BlockNode(bool has_scope); 218 explicit BlockNode(bool has_scope);
220 virtual ~BlockNode(); 219 ~BlockNode() override;
221 220
222 virtual const BlockNode* AsBlock() const override; 221 const BlockNode* AsBlock() const override;
223 virtual Value Execute(Scope* scope, Err* err) const override; 222 Value Execute(Scope* scope, Err* err) const override;
224 virtual LocationRange GetRange() const override; 223 LocationRange GetRange() const override;
225 virtual Err MakeErrorDescribing( 224 Err MakeErrorDescribing(
226 const std::string& msg, 225 const std::string& msg,
227 const std::string& help = std::string()) const override; 226 const std::string& help = std::string()) const override;
228 virtual void Print(std::ostream& out, int indent) const override; 227 void Print(std::ostream& out, int indent) const override;
229 228
230 void set_begin_token(const Token& t) { begin_token_ = t; } 229 void set_begin_token(const Token& t) { begin_token_ = t; }
231 void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); } 230 void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); }
232 const EndNode* End() const { return end_.get(); } 231 const EndNode* End() const { return end_.get(); }
233 232
234 const std::vector<ParseNode*>& statements() const { return statements_; } 233 const std::vector<ParseNode*>& statements() const { return statements_; }
235 void append_statement(scoped_ptr<ParseNode> s) { 234 void append_statement(scoped_ptr<ParseNode> s) {
236 statements_.push_back(s.release()); 235 statements_.push_back(s.release());
237 } 236 }
238 237
(...skipping 12 matching lines...) Expand all
251 std::vector<ParseNode*> statements_; 250 std::vector<ParseNode*> statements_;
252 251
253 DISALLOW_COPY_AND_ASSIGN(BlockNode); 252 DISALLOW_COPY_AND_ASSIGN(BlockNode);
254 }; 253 };
255 254
256 // ConditionNode --------------------------------------------------------------- 255 // ConditionNode ---------------------------------------------------------------
257 256
258 class ConditionNode : public ParseNode { 257 class ConditionNode : public ParseNode {
259 public: 258 public:
260 ConditionNode(); 259 ConditionNode();
261 virtual ~ConditionNode(); 260 ~ConditionNode() override;
262 261
263 virtual const ConditionNode* AsConditionNode() const override; 262 const ConditionNode* AsConditionNode() const override;
264 virtual Value Execute(Scope* scope, Err* err) const override; 263 Value Execute(Scope* scope, Err* err) const override;
265 virtual LocationRange GetRange() const override; 264 LocationRange GetRange() const override;
266 virtual Err MakeErrorDescribing( 265 Err MakeErrorDescribing(
267 const std::string& msg, 266 const std::string& msg,
268 const std::string& help = std::string()) const override; 267 const std::string& help = std::string()) const override;
269 virtual void Print(std::ostream& out, int indent) const override; 268 void Print(std::ostream& out, int indent) const override;
270 269
271 void set_if_token(const Token& token) { if_token_ = token; } 270 void set_if_token(const Token& token) { if_token_ = token; }
272 271
273 const ParseNode* condition() const { return condition_.get(); } 272 const ParseNode* condition() const { return condition_.get(); }
274 void set_condition(scoped_ptr<ParseNode> c) { 273 void set_condition(scoped_ptr<ParseNode> c) {
275 condition_ = c.Pass(); 274 condition_ = c.Pass();
276 } 275 }
277 276
278 const BlockNode* if_true() const { return if_true_.get(); } 277 const BlockNode* if_true() const { return if_true_.get(); }
279 void set_if_true(scoped_ptr<BlockNode> t) { 278 void set_if_true(scoped_ptr<BlockNode> t) {
(...skipping 16 matching lines...) Expand all
296 scoped_ptr<ParseNode> if_false_; // May be null. 295 scoped_ptr<ParseNode> if_false_; // May be null.
297 296
298 DISALLOW_COPY_AND_ASSIGN(ConditionNode); 297 DISALLOW_COPY_AND_ASSIGN(ConditionNode);
299 }; 298 };
300 299
301 // FunctionCallNode ------------------------------------------------------------ 300 // FunctionCallNode ------------------------------------------------------------
302 301
303 class FunctionCallNode : public ParseNode { 302 class FunctionCallNode : public ParseNode {
304 public: 303 public:
305 FunctionCallNode(); 304 FunctionCallNode();
306 virtual ~FunctionCallNode(); 305 ~FunctionCallNode() override;
307 306
308 virtual const FunctionCallNode* AsFunctionCall() const override; 307 const FunctionCallNode* AsFunctionCall() const override;
309 virtual Value Execute(Scope* scope, Err* err) const override; 308 Value Execute(Scope* scope, Err* err) const override;
310 virtual LocationRange GetRange() const override; 309 LocationRange GetRange() const override;
311 virtual Err MakeErrorDescribing( 310 Err MakeErrorDescribing(
312 const std::string& msg, 311 const std::string& msg,
313 const std::string& help = std::string()) const override; 312 const std::string& help = std::string()) const override;
314 virtual void Print(std::ostream& out, int indent) const override; 313 void Print(std::ostream& out, int indent) const override;
315 314
316 const Token& function() const { return function_; } 315 const Token& function() const { return function_; }
317 void set_function(Token t) { function_ = t; } 316 void set_function(Token t) { function_ = t; }
318 317
319 const ListNode* args() const { return args_.get(); } 318 const ListNode* args() const { return args_.get(); }
320 void set_args(scoped_ptr<ListNode> a) { args_ = a.Pass(); } 319 void set_args(scoped_ptr<ListNode> a) { args_ = a.Pass(); }
321 320
322 const BlockNode* block() const { return block_.get(); } 321 const BlockNode* block() const { return block_.get(); }
323 void set_block(scoped_ptr<BlockNode> b) { block_ = b.Pass(); } 322 void set_block(scoped_ptr<BlockNode> b) { block_ = b.Pass(); }
324 323
325 private: 324 private:
326 Token function_; 325 Token function_;
327 scoped_ptr<ListNode> args_; 326 scoped_ptr<ListNode> args_;
328 scoped_ptr<BlockNode> block_; // May be null. 327 scoped_ptr<BlockNode> block_; // May be null.
329 328
330 DISALLOW_COPY_AND_ASSIGN(FunctionCallNode); 329 DISALLOW_COPY_AND_ASSIGN(FunctionCallNode);
331 }; 330 };
332 331
333 // IdentifierNode -------------------------------------------------------------- 332 // IdentifierNode --------------------------------------------------------------
334 333
335 class IdentifierNode : public ParseNode { 334 class IdentifierNode : public ParseNode {
336 public: 335 public:
337 IdentifierNode(); 336 IdentifierNode();
338 IdentifierNode(const Token& token); 337 IdentifierNode(const Token& token);
339 virtual ~IdentifierNode(); 338 ~IdentifierNode() override;
340 339
341 virtual const IdentifierNode* AsIdentifier() const override; 340 const IdentifierNode* AsIdentifier() const override;
342 virtual Value Execute(Scope* scope, Err* err) const override; 341 Value Execute(Scope* scope, Err* err) const override;
343 virtual LocationRange GetRange() const override; 342 LocationRange GetRange() const override;
344 virtual Err MakeErrorDescribing( 343 Err MakeErrorDescribing(
345 const std::string& msg, 344 const std::string& msg,
346 const std::string& help = std::string()) const override; 345 const std::string& help = std::string()) const override;
347 virtual void Print(std::ostream& out, int indent) const override; 346 void Print(std::ostream& out, int indent) const override;
348 347
349 const Token& value() const { return value_; } 348 const Token& value() const { return value_; }
350 void set_value(const Token& t) { value_ = t; } 349 void set_value(const Token& t) { value_ = t; }
351 350
352 private: 351 private:
353 Token value_; 352 Token value_;
354 353
355 DISALLOW_COPY_AND_ASSIGN(IdentifierNode); 354 DISALLOW_COPY_AND_ASSIGN(IdentifierNode);
356 }; 355 };
357 356
358 // ListNode -------------------------------------------------------------------- 357 // ListNode --------------------------------------------------------------------
359 358
360 class ListNode : public ParseNode { 359 class ListNode : public ParseNode {
361 public: 360 public:
362 ListNode(); 361 ListNode();
363 virtual ~ListNode(); 362 ~ListNode() override;
364 363
365 virtual const ListNode* AsList() const override; 364 const ListNode* AsList() const override;
366 virtual Value Execute(Scope* scope, Err* err) const override; 365 Value Execute(Scope* scope, Err* err) const override;
367 virtual LocationRange GetRange() const override; 366 LocationRange GetRange() const override;
368 virtual Err MakeErrorDescribing( 367 Err MakeErrorDescribing(
369 const std::string& msg, 368 const std::string& msg,
370 const std::string& help = std::string()) const override; 369 const std::string& help = std::string()) const override;
371 virtual void Print(std::ostream& out, int indent) const override; 370 void Print(std::ostream& out, int indent) const override;
372 371
373 void set_begin_token(const Token& t) { begin_token_ = t; } 372 void set_begin_token(const Token& t) { begin_token_ = t; }
374 void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); } 373 void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); }
375 const EndNode* End() const { return end_.get(); } 374 const EndNode* End() const { return end_.get(); }
376 375
377 void append_item(scoped_ptr<ParseNode> s) { 376 void append_item(scoped_ptr<ParseNode> s) {
378 contents_.push_back(s.release()); 377 contents_.push_back(s.release());
379 } 378 }
380 const std::vector<const ParseNode*>& contents() const { return contents_; } 379 const std::vector<const ParseNode*>& contents() const { return contents_; }
381 380
382 private: 381 private:
383 // Tokens corresponding to the [ and ]. The end token is stored in inside an 382 // Tokens corresponding to the [ and ]. The end token is stored in inside an
384 // custom parse node so that it can have comments hung off of it. 383 // custom parse node so that it can have comments hung off of it.
385 Token begin_token_; 384 Token begin_token_;
386 scoped_ptr<EndNode> end_; 385 scoped_ptr<EndNode> end_;
387 386
388 // Owning pointers, use unique_ptr when we can use C++11. 387 // Owning pointers, use unique_ptr when we can use C++11.
389 std::vector<const ParseNode*> contents_; 388 std::vector<const ParseNode*> contents_;
390 389
391 DISALLOW_COPY_AND_ASSIGN(ListNode); 390 DISALLOW_COPY_AND_ASSIGN(ListNode);
392 }; 391 };
393 392
394 // LiteralNode ----------------------------------------------------------------- 393 // LiteralNode -----------------------------------------------------------------
395 394
396 class LiteralNode : public ParseNode { 395 class LiteralNode : public ParseNode {
397 public: 396 public:
398 LiteralNode(); 397 LiteralNode();
399 LiteralNode(const Token& token); 398 LiteralNode(const Token& token);
400 virtual ~LiteralNode(); 399 ~LiteralNode() override;
401 400
402 virtual const LiteralNode* AsLiteral() const override; 401 const LiteralNode* AsLiteral() const override;
403 virtual Value Execute(Scope* scope, Err* err) const override; 402 Value Execute(Scope* scope, Err* err) const override;
404 virtual LocationRange GetRange() const override; 403 LocationRange GetRange() const override;
405 virtual Err MakeErrorDescribing( 404 Err MakeErrorDescribing(
406 const std::string& msg, 405 const std::string& msg,
407 const std::string& help = std::string()) const override; 406 const std::string& help = std::string()) const override;
408 virtual void Print(std::ostream& out, int indent) const override; 407 void Print(std::ostream& out, int indent) const override;
409 408
410 const Token& value() const { return value_; } 409 const Token& value() const { return value_; }
411 void set_value(const Token& t) { value_ = t; } 410 void set_value(const Token& t) { value_ = t; }
412 411
413 private: 412 private:
414 Token value_; 413 Token value_;
415 414
416 DISALLOW_COPY_AND_ASSIGN(LiteralNode); 415 DISALLOW_COPY_AND_ASSIGN(LiteralNode);
417 }; 416 };
418 417
419 // UnaryOpNode ----------------------------------------------------------------- 418 // UnaryOpNode -----------------------------------------------------------------
420 419
421 class UnaryOpNode : public ParseNode { 420 class UnaryOpNode : public ParseNode {
422 public: 421 public:
423 UnaryOpNode(); 422 UnaryOpNode();
424 virtual ~UnaryOpNode(); 423 ~UnaryOpNode() override;
425 424
426 virtual const UnaryOpNode* AsUnaryOp() const override; 425 const UnaryOpNode* AsUnaryOp() const override;
427 virtual Value Execute(Scope* scope, Err* err) const override; 426 Value Execute(Scope* scope, Err* err) const override;
428 virtual LocationRange GetRange() const override; 427 LocationRange GetRange() const override;
429 virtual Err MakeErrorDescribing( 428 Err MakeErrorDescribing(
430 const std::string& msg, 429 const std::string& msg,
431 const std::string& help = std::string()) const override; 430 const std::string& help = std::string()) const override;
432 virtual void Print(std::ostream& out, int indent) const override; 431 void Print(std::ostream& out, int indent) const override;
433 432
434 const Token& op() const { return op_; } 433 const Token& op() const { return op_; }
435 void set_op(const Token& t) { op_ = t; } 434 void set_op(const Token& t) { op_ = t; }
436 435
437 const ParseNode* operand() const { return operand_.get(); } 436 const ParseNode* operand() const { return operand_.get(); }
438 void set_operand(scoped_ptr<ParseNode> operand) { 437 void set_operand(scoped_ptr<ParseNode> operand) {
439 operand_ = operand.Pass(); 438 operand_ = operand.Pass();
440 } 439 }
441 440
442 private: 441 private:
443 Token op_; 442 Token op_;
444 scoped_ptr<ParseNode> operand_; 443 scoped_ptr<ParseNode> operand_;
445 444
446 DISALLOW_COPY_AND_ASSIGN(UnaryOpNode); 445 DISALLOW_COPY_AND_ASSIGN(UnaryOpNode);
447 }; 446 };
448 447
449 // BlockCommentNode ------------------------------------------------------------ 448 // BlockCommentNode ------------------------------------------------------------
450 449
451 // This node type is only used for standalone comments (that is, those not 450 // This node type is only used for standalone comments (that is, those not
452 // specifically attached to another syntax element. The most common of these 451 // specifically attached to another syntax element. The most common of these
453 // is a standard header block. This node contains only the last line of such 452 // is a standard header block. This node contains only the last line of such
454 // a comment block as the anchor, and other lines of the block comment are 453 // a comment block as the anchor, and other lines of the block comment are
455 // hung off of it as Before comments, similar to other syntax elements. 454 // hung off of it as Before comments, similar to other syntax elements.
456 class BlockCommentNode : public ParseNode { 455 class BlockCommentNode : public ParseNode {
457 public: 456 public:
458 BlockCommentNode(); 457 BlockCommentNode();
459 virtual ~BlockCommentNode(); 458 ~BlockCommentNode() override;
460 459
461 virtual const BlockCommentNode* AsBlockComment() const override; 460 const BlockCommentNode* AsBlockComment() const override;
462 virtual Value Execute(Scope* scope, Err* err) const override; 461 Value Execute(Scope* scope, Err* err) const override;
463 virtual LocationRange GetRange() const override; 462 LocationRange GetRange() const override;
464 virtual Err MakeErrorDescribing( 463 Err MakeErrorDescribing(
465 const std::string& msg, 464 const std::string& msg,
466 const std::string& help = std::string()) const override; 465 const std::string& help = std::string()) const override;
467 virtual void Print(std::ostream& out, int indent) const override; 466 void Print(std::ostream& out, int indent) const override;
468 467
469 const Token& comment() const { return comment_; } 468 const Token& comment() const { return comment_; }
470 void set_comment(const Token& t) { comment_ = t; } 469 void set_comment(const Token& t) { comment_ = t; }
471 470
472 private: 471 private:
473 Token comment_; 472 Token comment_;
474 473
475 DISALLOW_COPY_AND_ASSIGN(BlockCommentNode); 474 DISALLOW_COPY_AND_ASSIGN(BlockCommentNode);
476 }; 475 };
477 476
478 // EndNode --------------------------------------------------------------------- 477 // EndNode ---------------------------------------------------------------------
479 478
480 // This node type is used as the end_ object for lists and blocks (rather than 479 // This node type is used as the end_ object for lists and blocks (rather than
481 // just the end ']', '}', or ')' token). This is so that during formatting 480 // just the end ']', '}', or ')' token). This is so that during formatting
482 // traversal there is a node that appears at the end of the block to which 481 // traversal there is a node that appears at the end of the block to which
483 // comments can be attached. 482 // comments can be attached.
484 class EndNode : public ParseNode { 483 class EndNode : public ParseNode {
485 public: 484 public:
486 EndNode(const Token& token); 485 EndNode(const Token& token);
487 virtual ~EndNode(); 486 ~EndNode() override;
488 487
489 virtual const EndNode* AsEnd() const override; 488 const EndNode* AsEnd() const override;
490 virtual Value Execute(Scope* scope, Err* err) const override; 489 Value Execute(Scope* scope, Err* err) const override;
491 virtual LocationRange GetRange() const override; 490 LocationRange GetRange() const override;
492 virtual Err MakeErrorDescribing( 491 Err MakeErrorDescribing(
493 const std::string& msg, 492 const std::string& msg,
494 const std::string& help = std::string()) const override; 493 const std::string& help = std::string()) const override;
495 virtual void Print(std::ostream& out, int indent) const override; 494 void Print(std::ostream& out, int indent) const override;
496 495
497 const Token& value() const { return value_; } 496 const Token& value() const { return value_; }
498 void set_value(const Token& t) { value_ = t; } 497 void set_value(const Token& t) { value_ = t; }
499 498
500 private: 499 private:
501 Token value_; 500 Token value_;
502 501
503 DISALLOW_COPY_AND_ASSIGN(EndNode); 502 DISALLOW_COPY_AND_ASSIGN(EndNode);
504 }; 503 };
505 504
506 #endif // TOOLS_GN_PARSE_TREE_H_ 505 #endif // TOOLS_GN_PARSE_TREE_H_
OLDNEW
« no previous file with comments | « tools/gn/ninja_target_writer_unittest.cc ('k') | tools/gn/scope_per_file_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698