From 0f4cc64fd747fbb33aeccfaccb8873762d2511f2 Mon Sep 17 00:00:00 2001 From: Eduardo Caldas Date: Mon, 14 Sep 2020 07:58:30 +0000 Subject: [PATCH] [SyntaxTree] Provide `List::classof` Differential Revision: https://reviews.llvm.org/D87599 --- clang/include/clang/Tooling/Syntax/Tree.h | 1 + clang/lib/Tooling/Syntax/Tree.cpp | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/clang/include/clang/Tooling/Syntax/Tree.h b/clang/include/clang/Tooling/Syntax/Tree.h index b49a09344c0..5a09d456496 100644 --- a/clang/include/clang/Tooling/Syntax/Tree.h +++ b/clang/include/clang/Tooling/Syntax/Tree.h @@ -213,6 +213,7 @@ public: }; using Tree::Tree; + static bool classof(const Node *N); /// Returns the elements and corresponding delimiters. Missing elements /// and delimiters are represented as null pointers. /// diff --git a/clang/lib/Tooling/Syntax/Tree.cpp b/clang/lib/Tooling/Syntax/Tree.cpp index 2bff159696c..1c705f6fd7c 100644 --- a/clang/lib/Tooling/Syntax/Tree.cpp +++ b/clang/lib/Tooling/Syntax/Tree.cpp @@ -273,6 +273,17 @@ syntax::Node *syntax::Tree::findChild(NodeRole R) { return nullptr; } +bool classof(const syntax::Node *N) { + switch (N->getKind()) { + case syntax::NodeKind::NestedNameSpecifier: + case syntax::NodeKind::CallArguments: + case syntax::NodeKind::ParameterDeclarationList: + return true; + default: + return false; + } +} + std::vector> syntax::List::getElementsAsNodesAndDelimiters() { if (!getFirstChild()) -- 2.11.0