зеркало из https://github.com/microsoft/clang-1.git
If a source range comes through a function-like macro expansion,
highlight the arguments to the macro as well as the identifier. Before: t.c:3:9: error: no matching function for call to '__tg_acos'; candidates are: return acos(x); ^~~~ after: t.c:3:9: error: no matching function for call to '__tg_acos'; candidates are: return acos(x); ^~~~~~~ git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64743 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
3891a157cc
Коммит
34837a5771
|
@ -45,6 +45,14 @@ void TextDiagnosticPrinter::HighlightRange(const SourceRange &R,
|
|||
SourceLocation Begin = SM.getInstantiationLoc(R.getBegin());
|
||||
SourceLocation End = SM.getInstantiationLoc(R.getEnd());
|
||||
|
||||
// If the End location and the start location are the same and are a macro
|
||||
// location, then the range was something that came from a macro expansion
|
||||
// or _Pragma. If this is an object-like macro, the best we can do is to
|
||||
// highlight the range. If this is a function-like macro, we'd also like to
|
||||
// highlight the arguments.
|
||||
if (Begin == End && R.getEnd().isMacroID())
|
||||
End = SM.getInstantiationRange(R.getEnd()).second;
|
||||
|
||||
unsigned StartLineNo = SM.getInstantiationLineNumber(Begin);
|
||||
if (StartLineNo > LineNo || SM.getFileID(Begin) != FID)
|
||||
return; // No intersection.
|
||||
|
|
Загрузка…
Ссылка в новой задаче