[PATCH] D125311: [pseudo] Share the underly payload when stripping comments for a token stream
Haojian Wu via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 15 06:21:08 PDT 2022
This revision was automatically updated to reflect the committed changes.
Closed by commit rG76910d4a56c8: [pseudo] Share the underly payload when stripping comments for a token stream (authored by hokein).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D125311/new/
https://reviews.llvm.org/D125311
Files:
clang-tools-extra/pseudo/include/clang-pseudo/Token.h
clang-tools-extra/pseudo/lib/Lex.cpp
clang-tools-extra/pseudo/lib/Token.cpp
Index: clang-tools-extra/pseudo/lib/Token.cpp
===================================================================
--- clang-tools-extra/pseudo/lib/Token.cpp
+++ clang-tools-extra/pseudo/lib/Token.cpp
@@ -116,7 +116,7 @@
}
TokenStream stripComments(const TokenStream &Input) {
- TokenStream Out;
+ TokenStream Out(Input.getPayload());
for (const Token &T : Input.tokens()) {
if (T.Kind == tok::comment)
continue;
Index: clang-tools-extra/pseudo/lib/Lex.cpp
===================================================================
--- clang-tools-extra/pseudo/lib/Lex.cpp
+++ clang-tools-extra/pseudo/lib/Lex.cpp
@@ -77,7 +77,7 @@
auto CleanedStorage = std::make_shared<llvm::BumpPtrAllocator>();
clang::IdentifierTable Identifiers(LangOpts);
TokenStream Result(CleanedStorage);
-
+ Result.addPayload(Code.getPayload());
for (auto Tok : Code.tokens()) {
if (Tok.flag(LexFlags::NeedsCleaning)) {
// Remove escaped newlines and trigraphs.
Index: clang-tools-extra/pseudo/include/clang-pseudo/Token.h
===================================================================
--- clang-tools-extra/pseudo/include/clang-pseudo/Token.h
+++ clang-tools-extra/pseudo/include/clang-pseudo/Token.h
@@ -170,6 +170,18 @@
return Storage[1];
}
+ /// Returns the shared payload.
+ std::shared_ptr<void> getPayload() const { return Payload; }
+ /// Adds the given payload to the stream.
+ void addPayload(std::shared_ptr<void> P) {
+ if (!Payload)
+ Payload = std::move(P);
+ else
+ Payload = std::make_shared<
+ std::pair<std::shared_ptr<void>, std::shared_ptr<void>>>(
+ std::move(P), std::move(Payload));
+ }
+
/// Print the tokens in this stream to the output stream.
///
/// The presence of newlines/spaces is preserved, but not the quantity.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D125311.444961.patch
Type: text/x-patch
Size: 1823 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20220715/3f3af113/attachment.bin>
More information about the cfe-commits
mailing list