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

Unified Diff: tools/gn/parse_tree.h

Issue 607173002: gn format: fix comments at end of blocks (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: clang warning Created 6 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 | « tools/gn/format_test_data/017.golden ('k') | tools/gn/parse_tree.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/gn/parse_tree.h
diff --git a/tools/gn/parse_tree.h b/tools/gn/parse_tree.h
index 73ac0e5196f7fd3fce9b7552041730a6ce8cf4df..df12a7ad6d44f7d3470b66890f8ec50bda1d6e3e 100644
--- a/tools/gn/parse_tree.h
+++ b/tools/gn/parse_tree.h
@@ -25,6 +25,7 @@ class LiteralNode;
class Scope;
class UnaryOpNode;
class BlockCommentNode;
+class EndNode;
brettw 2014/09/26 21:37:34 Can you sort this list?
scottmg 2014/09/26 21:47:32 Done.
class Comments {
public:
@@ -82,6 +83,7 @@ class ParseNode {
virtual const LiteralNode* AsLiteral() const;
virtual const UnaryOpNode* AsUnaryOp() const;
virtual const BlockCommentNode* AsBlockComment() const;
+ virtual const EndNode* AsEnd() const;
virtual Value Execute(Scope* scope, Err* err) const = 0;
@@ -226,7 +228,8 @@ class BlockNode : public ParseNode {
virtual void Print(std::ostream& out, int indent) const OVERRIDE;
void set_begin_token(const Token& t) { begin_token_ = t; }
- void set_end_token(const Token& t) { end_token_ = t; }
+ void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); }
+ const EndNode* End() const { return end_.get(); }
const std::vector<ParseNode*>& statements() const { return statements_; }
void append_statement(scoped_ptr<ParseNode> s) {
@@ -239,9 +242,10 @@ class BlockNode : public ParseNode {
private:
bool has_scope_;
- // Tokens corresponding to { and }, if any (may be NULL).
+ // Tokens corresponding to { and }, if any (may be NULL). The end is stored
+ // in a custom parse node so that it can have comments hung off of it.
Token begin_token_;
- Token end_token_;
+ scoped_ptr<EndNode> end_;
// Owning pointers, use unique_ptr when we can use C++11.
std::vector<ParseNode*> statements_;
@@ -367,7 +371,8 @@ class ListNode : public ParseNode {
virtual void Print(std::ostream& out, int indent) const OVERRIDE;
void set_begin_token(const Token& t) { begin_token_ = t; }
- void set_end_token(const Token& t) { end_token_ = t; }
+ void set_end(scoped_ptr<EndNode> e) { end_ = e.Pass(); }
+ const EndNode* End() const { return end_.get(); }
void append_item(scoped_ptr<ParseNode> s) {
contents_.push_back(s.release());
@@ -375,9 +380,10 @@ class ListNode : public ParseNode {
const std::vector<const ParseNode*>& contents() const { return contents_; }
private:
- // Tokens corresponding to the [ and ].
+ // Tokens corresponding to the [ and ]. The end token is stored in inside an
+ // custom parse node so that it can have comments hung off of it.
Token begin_token_;
- Token end_token_;
+ scoped_ptr<EndNode> end_;
// Owning pointers, use unique_ptr when we can use C++11.
std::vector<const ParseNode*> contents_;
@@ -469,4 +475,17 @@ class BlockCommentNode : public ParseNode {
DISALLOW_COPY_AND_ASSIGN(BlockCommentNode);
};
+// EndNode ---------------------------------------------------------------------
+
+class EndNode : public IdentifierNode {
brettw 2014/09/26 21:37:34 Can you document here what this is for? It's not s
scottmg 2014/09/26 21:47:32 Done.
+ public:
+ EndNode();
+ EndNode(const Token& token);
+ virtual ~EndNode();
+
+ virtual const IdentifierNode* AsIdentifier() const OVERRIDE;
+ virtual const EndNode* AsEnd() const OVERRIDE;
+ virtual void Print(std::ostream& out, int indent) const OVERRIDE;
+};
+
#endif // TOOLS_GN_PARSE_TREE_H_
« no previous file with comments | « tools/gn/format_test_data/017.golden ('k') | tools/gn/parse_tree.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698