aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema/SemaChecking.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-02-18 18:52:52 +0000
committerChris Lattner <sabre@nondot.org>2009-02-18 18:52:52 +0000
commit2197c963543397777919cec22b65feb31a9ddf79 (patch)
tree5df2b7171289b81d9b173e9d8b39505facd333d6 /lib/Sema/SemaChecking.cpp
parent5934e75d98d99374f72722a69c5eefe026f35c74 (diff)
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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64936 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Sema/SemaChecking.cpp')
-rw-r--r--lib/Sema/SemaChecking.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp
index 818a892617..38cc427a00 100644
--- a/lib/Sema/SemaChecking.cpp
+++ b/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);
}