[PATCH] D87523: [SyntaxTree] Reduce visibility of `Arena::lexBuffer`.
Eduardo Caldas via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Sep 11 09:45:57 PDT 2020
eduucaldas created this revision.
eduucaldas added a reviewer: gribozavr2.
Herald added a project: clang.
Herald added a subscriber: cfe-commits.
eduucaldas requested review of this revision.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D87523
Files:
clang/include/clang/Tooling/Syntax/Tree.h
clang/lib/Tooling/Syntax/Synthesis.cpp
Index: clang/lib/Tooling/Syntax/Synthesis.cpp
===================================================================
--- clang/lib/Tooling/Syntax/Synthesis.cpp
+++ clang/lib/Tooling/Syntax/Synthesis.cpp
@@ -6,6 +6,7 @@
//
//===----------------------------------------------------------------------===//
#include "clang/Tooling/Syntax/BuildTree.h"
+#include "clang/Tooling/Syntax/Tree.h"
using namespace clang;
@@ -19,13 +20,19 @@
syntax::NodeRole R) {
T->prependChildLowLevel(Child, R);
}
+
+ static std::pair<FileID, ArrayRef<Token>>
+ lexBuffer(syntax::Arena &A, std::unique_ptr<llvm::MemoryBuffer> Buffer) {
+ return A.lexBuffer(std::move(Buffer));
+ }
};
clang::syntax::Leaf *syntax::createPunctuation(clang::syntax::Arena &A,
clang::tok::TokenKind K) {
- auto Tokens = A.lexBuffer(llvm::MemoryBuffer::getMemBuffer(
- clang::tok::getPunctuatorSpelling(K)))
- .second;
+ auto Tokens =
+ FactoryImpl::lexBuffer(A, llvm::MemoryBuffer::getMemBuffer(
+ clang::tok::getPunctuatorSpelling(K)))
+ .second;
assert(Tokens.size() == 1);
assert(Tokens.front().kind() == K);
auto *L = new (A.getAllocator()) clang::syntax::Leaf(Tokens.begin());
Index: clang/include/clang/Tooling/Syntax/Tree.h
===================================================================
--- clang/include/clang/Tooling/Syntax/Tree.h
+++ clang/include/clang/Tooling/Syntax/Tree.h
@@ -47,11 +47,13 @@
const TokenBuffer &getTokenBuffer() const;
llvm::BumpPtrAllocator &getAllocator() { return Allocator; }
+private:
/// Add \p Buffer to the underlying source manager, tokenize it and store the
- /// resulting tokens. Useful when there is a need to materialize tokens that
- /// were not written in user code.
+ /// resulting tokens. Used exclusively in `FactoryImpl` to materialize tokens
+ /// that were not written in user code.
std::pair<FileID, ArrayRef<Token>>
lexBuffer(std::unique_ptr<llvm::MemoryBuffer> Buffer);
+ friend class FactoryImpl;
private:
SourceManager &SourceMgr;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D87523.291254.patch
Type: text/x-patch
Size: 2193 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20200911/130d1183/attachment-0001.bin>
More information about the cfe-commits
mailing list