http://llvm.org/bugs/show_bug.cgi?id=8329
Summary: getDefaultArgRange() returns empty SourceRange
Product: clang
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P
Component: -New Bugs
AssignedTo: [email protected]
ReportedBy: [email protected]
CC: [email protected]
When getDefaultArgRange() is called for any ParmVarDecl the resulting
SourceRange's beginning and end are equal. Both refer to the start of the
actual default argument. To get the real source range one has to adapt the end
of the range via Lexer::MeasureTokenLength().
Nevertheless the documentation for getDefaultArgRange() claims it will
"Retrieve the source range that covers the entire default argument." which is
IMHO outright wrong. So either the method needs to return the correct source
range or the comment and probably the method name need to be changed according
to what it actually does, e.g. getDefaultSourceLocation().
example
-------
void bluh(const ParmVarDecl& p, const SourceManager& sm) {
if(p.hasDefaultArg()) {
clang::SourceRange range = p.getDefaultArgRange();
range.getBegin().print(llvm::errs(), sm);
llvm::errs() << " - ";
range.getEnd().print(llvm::errs(), sm);
llvm::errs() << "'\n";
}
}
when wrapped and executed for this code
$ cat test.cpp
void blah(int a = 1);
prints
test.cpp:1:22 - test.cpp:1:22
expected output
test.cpp:1:22 - test.cpp:1:23
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
_______________________________________________
LLVMbugs mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/llvmbugs