diff options
author | Sam McCall <sam.mccall@gmail.com> | 2020-11-10 00:00:51 +0100 |
---|---|---|
committer | Sam McCall <sam.mccall@gmail.com> | 2020-11-11 11:24:47 +0100 |
commit | 454579e46a87b67c20504e12eadd865c8f40ccd3 (patch) | |
tree | 0452358c3d6a18bf7aec93d914b2bd554863bcf9 /clang/lib | |
parent | e7b8d3776f36beb9b73cd0f7c81fdc4b832b6df3 (diff) | |
download | llvm-454579e46a87b67c20504e12eadd865c8f40ccd3.zip llvm-454579e46a87b67c20504e12eadd865c8f40ccd3.tar.gz llvm-454579e46a87b67c20504e12eadd865c8f40ccd3.tar.bz2 |
Reland [Syntax] Add minimal TableGen for syntax nodes. NFC
This reverts commit 09c6259d6d0eb51b282f6c3a28052a8146bc095b.
(Fixed side-effecting code being buried in an assert)
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/Tooling/Syntax/Nodes.cpp | 4 | ||||
-rw-r--r-- | clang/lib/Tooling/Syntax/Tree.cpp | 20 |
2 files changed, 4 insertions, 20 deletions
diff --git a/clang/lib/Tooling/Syntax/Nodes.cpp b/clang/lib/Tooling/Syntax/Nodes.cpp index b4d1cfd..0be9f1f 100644 --- a/clang/lib/Tooling/Syntax/Nodes.cpp +++ b/clang/lib/Tooling/Syntax/Nodes.cpp @@ -630,3 +630,7 @@ syntax::ParametersAndQualifiers::getTrailingReturn() { return cast_or_null<syntax::TrailingReturnType>( findChild(syntax::NodeRole::TrailingReturn)); } + +#define NODE(Kind, Parent) \ + static_assert(sizeof(syntax::Kind) > 0, "Missing Node subclass definition"); +#include "clang/Tooling/Syntax/Nodes.inc" diff --git a/clang/lib/Tooling/Syntax/Tree.cpp b/clang/lib/Tooling/Syntax/Tree.cpp index fca2be5..07ee13e3 100644 --- a/clang/lib/Tooling/Syntax/Tree.cpp +++ b/clang/lib/Tooling/Syntax/Tree.cpp @@ -52,10 +52,6 @@ syntax::Leaf::Leaf(const syntax::Token *Tok) : Node(NodeKind::Leaf), Tok(Tok) { assert(Tok != nullptr); } -bool syntax::Leaf::classof(const Node *N) { - return N->getKind() == NodeKind::Leaf; -} - syntax::Node::Node(NodeKind Kind) : Parent(nullptr), NextSibling(nullptr), PreviousSibling(nullptr), Kind(static_cast<unsigned>(Kind)), Role(0), Original(false), @@ -71,10 +67,6 @@ void syntax::Node::setRole(NodeRole NR) { this->Role = static_cast<unsigned>(NR); } -bool syntax::Tree::classof(const Node *N) { - return N->getKind() > NodeKind::Leaf; -} - void syntax::Tree::appendChildLowLevel(Node *Child, NodeRole Role) { assert(Child->getRole() == NodeRole::Detached); assert(Role != NodeRole::Detached); @@ -345,18 +337,6 @@ const syntax::Node *syntax::Tree::findChild(NodeRole R) const { return nullptr; } -bool syntax::List::classof(const syntax::Node *N) { - switch (N->getKind()) { - case syntax::NodeKind::NestedNameSpecifier: - case syntax::NodeKind::CallArguments: - case syntax::NodeKind::ParameterDeclarationList: - case syntax::NodeKind::DeclaratorList: - return true; - default: - return false; - } -} - std::vector<syntax::List::ElementAndDelimiter<syntax::Node>> syntax::List::getElementsAsNodesAndDelimiters() { if (!getFirstChild()) |