aboutsummaryrefslogtreecommitdiff
path: root/clang/lib
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2020-11-10 00:00:51 +0100
committerSam McCall <sam.mccall@gmail.com>2020-11-11 11:24:47 +0100
commit454579e46a87b67c20504e12eadd865c8f40ccd3 (patch)
tree0452358c3d6a18bf7aec93d914b2bd554863bcf9 /clang/lib
parente7b8d3776f36beb9b73cd0f7c81fdc4b832b6df3 (diff)
downloadllvm-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.cpp4
-rw-r--r--clang/lib/Tooling/Syntax/Tree.cpp20
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())