[PATCH] D77209: [Syntax] Add mapping from spelled to expanded tokens for TokenBuffer
Dmitri Gribenko via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Fri Apr 3 06:57:47 PDT 2020
gribozavr2 added inline comments.
================
Comment at: clang/lib/Tooling/Syntax/Tokens.cpp:239
+
+ auto It = llvm::partition_point(F.Mappings, [SpelledI](const Mapping &M) {
+ return M.BeginSpelled <= SpelledI;
----------------
It would be great to add an is_sorted assertion to the builder to check ordering of mappings based on both spelled and expanded token indices.
================
Comment at: clang/lib/Tooling/Syntax/Tokens.cpp:259
+ const MarkedFile &File = It->second;
+ // assert that Spelled is a subarray of File.SpelledTokens.
+ assert(File.SpelledTokens.data() <= Spelled.data());
----------------
s/subarray/subrange/
Also no need to repeat "assert".
"`Spelled` must be a subrange of `File.SpelledTokens`."
================
Comment at: clang/lib/Tooling/Syntax/Tokens.cpp:261
+ assert(File.SpelledTokens.data() <= Spelled.data());
+ assert(Spelled.size() <= File.SpelledTokens.size());
+
----------------
I think we can improve the precision of this assertion. Comparing the sizes does not ensure that we really have a subrange. I think the second assert should be comparing end pointers instead of sizes. Something like:
`assert(&Spelled.back() <= &File.SpelledTokens.back());`
================
Comment at: clang/lib/Tooling/Syntax/Tokens.cpp:264
+ auto *FrontMapping = mappingStartingBeforeSpelled(File, &Spelled.front());
+ unsigned SpelledFrontI = &Spelled.front() - File.SpelledTokens.data();
+ unsigned ExpandedBegin;
----------------
Or assert that SpelledFrontI is less than File.SpelledTokens.size().
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D77209/new/
https://reviews.llvm.org/D77209
More information about the cfe-commits
mailing list