[cfe-dev] Wrong SourceRange for IfStmt ?
Roman Popov via cfe-dev
cfe-dev at lists.llvm.org
Sat Oct 21 21:28:34 PDT 2017
Hello,
I want to emit some text after each if statement in source code. When
testing a tool I've found that ifStmt->getSourceRange() sometimes returns
wrong end location.
In RecursiveASTVisitor I have following code to insert "$" before and after
each if:
bool VisitIfStmt(clang::IfStmt* ifStmt)
{
clang::tooling::Replacement rep0(compInst.getSourceManager(),
ifStmt->getLocStart(), 0, "$");
handleAllErrors ( replacements.add(rep0) );
clang::tooling::Replacement rep1(compInst.getSourceManager(),
ifStmt->getLocEnd().getLocWithOffset(1), 0, "$");
handleAllErrors ( replacements.add(rep1) );
return true;
}
Replacements &replacements;
ASTContext *Context;
clang::CompilerInstance &compInst;
When testing on following code:
int a;
if (a)
a--;
Result is:
$if (a)
a-$-;
So Clang thinks that if statement ends inside decrement operator. Is it a
bug, or I misuse API?
Thanks,
-Roman
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20171021/14300d02/attachment.html>
More information about the cfe-dev
mailing list