diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Tooling/Syntax/BuildTree.cpp | 10 | ||||
-rw-r--r-- | clang/lib/Tooling/Syntax/Nodes.cpp | 6 | ||||
-rw-r--r-- | clang/lib/Tooling/Syntax/Tree.cpp | 16 |
3 files changed, 20 insertions, 12 deletions
diff --git a/clang/lib/Tooling/Syntax/BuildTree.cpp b/clang/lib/Tooling/Syntax/BuildTree.cpp index dc682ff677f..03c439c59e3 100644 --- a/clang/lib/Tooling/Syntax/BuildTree.cpp +++ b/clang/lib/Tooling/Syntax/BuildTree.cpp @@ -170,7 +170,7 @@ private: /// A with a role that should be assigned to it when adding to a parent. struct NodeAndRole { explicit NodeAndRole(syntax::Node *Node) - : Node(Node), Role(NodeRoleUnknown) {} + : Node(Node), Role(NodeRole::Unknown) {} syntax::Node *Node; NodeRole Role; @@ -221,10 +221,12 @@ public: } bool WalkUpFromCompoundStmt(CompoundStmt *S) { - using Roles = syntax::CompoundStatement::Roles; + using NodeRole = syntax::NodeRole; - Builder.markChildToken(S->getLBracLoc(), tok::l_brace, Roles::lbrace); - Builder.markChildToken(S->getRBracLoc(), tok::r_brace, Roles::rbrace); + Builder.markChildToken(S->getLBracLoc(), tok::l_brace, + NodeRole::CompoundStatement_lbrace); + Builder.markChildToken(S->getRBracLoc(), tok::r_brace, + NodeRole::CompoundStatement_rbrace); Builder.foldNode(Builder.getRange(S), new (allocator()) syntax::CompoundStatement); diff --git a/clang/lib/Tooling/Syntax/Nodes.cpp b/clang/lib/Tooling/Syntax/Nodes.cpp index 5dd793ccc2d..061ed73bbeb 100644 --- a/clang/lib/Tooling/Syntax/Nodes.cpp +++ b/clang/lib/Tooling/Syntax/Nodes.cpp @@ -25,9 +25,11 @@ llvm::raw_ostream &syntax::operator<<(llvm::raw_ostream &OS, NodeKind K) { } syntax::Leaf *syntax::CompoundStatement::lbrace() { - return llvm::cast_or_null<syntax::Leaf>(findChild(Roles::lbrace)); + return llvm::cast_or_null<syntax::Leaf>( + findChild(NodeRole::CompoundStatement_lbrace)); } syntax::Leaf *syntax::CompoundStatement::rbrace() { - return llvm::cast_or_null<syntax::Leaf>(findChild(Roles::rbrace)); + return llvm::cast_or_null<syntax::Leaf>( + findChild(NodeRole::CompoundStatement_rbrace)); } diff --git a/clang/lib/Tooling/Syntax/Tree.cpp b/clang/lib/Tooling/Syntax/Tree.cpp index fb7645786c5..1549b6724fa 100644 --- a/clang/lib/Tooling/Syntax/Tree.cpp +++ b/clang/lib/Tooling/Syntax/Tree.cpp @@ -38,17 +38,21 @@ bool syntax::Leaf::classof(const Node *N) { return N->kind() == NodeKind::Leaf; } +syntax::Node::Node(NodeKind Kind) + : Parent(nullptr), NextSibling(nullptr), Kind(static_cast<unsigned>(Kind)), + Role(static_cast<unsigned>(NodeRole::Detached)) {} + bool syntax::Tree::classof(const Node *N) { return N->kind() > NodeKind::Leaf; } void syntax::Tree::prependChildLowLevel(Node *Child, NodeRole Role) { assert(Child->Parent == nullptr); assert(Child->NextSibling == nullptr); - assert(Child->Role == NodeRoleDetached); - assert(Role != NodeRoleDetached); + assert(Child->role() == NodeRole::Detached); + assert(Role != NodeRole::Detached); Child->Parent = this; Child->NextSibling = this->FirstChild; - Child->Role = Role; + Child->Role = static_cast<unsigned>(Role); this->FirstChild = Child; } @@ -81,9 +85,9 @@ static void dumpTokens(llvm::raw_ostream &OS, ArrayRef<syntax::Token> Tokens, static void dumpTree(llvm::raw_ostream &OS, const syntax::Node *N, const syntax::Arena &A, std::vector<bool> IndentMask) { - if (N->role() != syntax::NodeRoleUnknown) { + if (N->role() != syntax::NodeRole::Unknown) { // FIXME: print the symbolic name of a role. - if (N->role() == syntax::NodeRoleDetached) + if (N->role() == syntax::NodeRole::Detached) OS << "*: "; else OS << static_cast<int>(N->role()) << ": "; @@ -138,7 +142,7 @@ std::string syntax::Node::dumpTokens(const Arena &A) const { syntax::Node *syntax::Tree::findChild(NodeRole R) { for (auto *C = FirstChild; C; C = C->nextSibling()) { - if (C->Role == R) + if (C->role() == R) return C; } return nullptr; |