adjust the a ending macro location to the end of the instantiation
location before adjusting it to the end of the token. Fixes
<rdar://problem/
9021561>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@129872
91177308-0d34-0410-b5e6-
96231b3b80d8
}
int foo;
+
+#define NO 0
+
+void f(int y) {
+ if (y = NO);
+}
+
int
// CHECK: cindex-on-invalid.m:5:8: error: use of undeclared label 'exit'
-// CHECK: cindex-on-invalid.m:13:1: error: expected identifier or '('
+// CHECK: cindex-on-invalid.m:13:9:{13:7-13:13}
+// CHECK: cindex-on-invalid.m:21:1: error: expected identifier or '('
// location accordingly.
SourceLocation EndLoc = R.getEnd();
if (EndLoc.isValid() && EndLoc.isMacroID())
- EndLoc = SM.getSpellingLoc(EndLoc);
+ EndLoc = SM.getInstantiationRange(EndLoc).second;
if (R.isTokenRange() && !EndLoc.isInvalid() && EndLoc.isFileID()) {
unsigned Length = Lexer::MeasureTokenLength(EndLoc, SM, LangOpts);
EndLoc = EndLoc.getFileLocWithOffset(Length);