diff options
author | Chris Lattner <sabre@nondot.org> | 2009-02-18 18:52:52 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-02-18 18:52:52 +0000 |
commit | ec396b5114678538362e6e4db2d3cede2a8e2442 (patch) | |
tree | 09c7dbe9b5aa953e0eb2238033976ffb6617241c /clang/lib/Sema/SemaChecking.cpp | |
parent | 9959eee95d5a1eb70840d8448c08ee8f306dd1fb (diff) | |
download | bcm5719-llvm-ec396b5114678538362e6e4db2d3cede2a8e2442.tar.gz bcm5719-llvm-ec396b5114678538362e6e4db2d3cede2a8e2442.zip |
Fix some issues handling sub-token locations that come from macro expansions.
We now emit:
t.m:6:15: warning: field width should have type 'int', but argument has type 'unsigned int'
printf(STR, (unsigned) 1, 1);
^ ~~~~~~~~~~~~
t.m:3:18: note: instantiated from:
#define STR "abc%*ddef"
^
which has the correct location in the string literal in the note line.
llvm-svn: 64936
Diffstat (limited to 'clang/lib/Sema/SemaChecking.cpp')
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index 818a892617e..38cc427a004 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -77,17 +77,12 @@ SourceLocation Sema::getLocationOfStringLiteralByte(const StringLiteral *SL, // The length of the string is the token length minus the two quotes. TokNumBytes -= 2; - - // If we found the token we're looking for, return the location. + // FIXME: This should consider character escapes! + + // If the byte is in this token, return the location of the byte. if (ByteNo < TokNumBytes || (ByteNo == TokNumBytes && TokNo == SL->getNumConcatenated())) { - // If the original token came from a macro expansion, just return the - // start of the token. We don't want to magically jump to the spelling - // for a diagnostic. We do the above business in case some tokens come - // from a macro expansion but others don't. - if (!StrTokLoc.isFileID()) return StrTokLoc; - // We advance +1 to step over the '"'. return PP.AdvanceToTokenCharacter(StrTokLoc, ByteNo+1); } |