[cfe-dev] How to get the StringLiteral EndLocation of the last token

chiasa.men via cfe-dev cfe-dev at lists.llvm.org
Wed Sep 1 08:26:40 PDT 2021

The EndLoc of StringLiteral is the Loc returned by 
I understand that #6 concats the String tokens and the AST matcher gets the 
already concatenated string.

How do I know where the actual end (in the source file) is?


#define testmacro L"testexpansion"
int main(int argc, char** argv) {
auto test=testmacro L"append";
In the Matcher:
  for (unsigned i = 0; i<pLiteral->getNumConcatenated();++i){
    llvm::dbgs()<<"getStrTokenLoc "<<i<<"\n";

Range:3:15 <Spelling=1:19>, :3:25
getStrTokenLoc 0
:3:15 <Spelling=:1:19>
// which is !testmacro L"append";
getStrTokenLoc 1
// which is testmacro !L"append";

What I would need is this location:  testmacro L"append"!; (34)

What can I do to get the "actual" end of the StringLiteral in the SourceFile. 
Is there some kind of callback "onStringConcat" or a supposed way for this?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20210901/90817b9f/attachment.html>

More information about the cfe-dev mailing list