]> granicus.if.org Git - clang/commitdiff
[libclang] Fix getting a cursor inside an angled #include directive.
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 11 Sep 2012 02:17:21 +0000 (02:17 +0000)
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>
Tue, 11 Sep 2012 02:17:21 +0000 (02:17 +0000)
Fixed by pointing the end location of the preprocessed entity for the #include
at the closing '>', instead of the start of '<'.

rdar://11113134

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@163588 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Lex/PPDirectives.cpp
test/Index/c-index-getCursor-pp.c

index 738bed36ba12e17cc8075f8709872afe265770be..70302f10aed665482ea1d13f803330e9c4379432 100644 (file)
@@ -1296,6 +1296,9 @@ void Preprocessor::HandleIncludeDirective(SourceLocation HashLoc,
   case tok::string_literal:
     Filename = getSpelling(FilenameTok, FilenameBuffer);
     End = FilenameTok.getLocation();
+    // For an angled include, point the end location at the closing '>'.
+    if (FilenameTok.is(tok::angle_string_literal))
+      End = End.getLocWithOffset(Filename.size()-1);
     CharEnd = End.getLocWithOffset(Filename.size());
     break;
 
index 0a10450af5cdc0cfea241987d9fb684624e1d0ac..01b0a6972ee54bc692bef036eae088ce9cc6dcec 100644 (file)
@@ -15,6 +15,8 @@ B(int x);
 
 const char *fname = __FILE__;
 
+#include <a.h>
+
 // RUN: c-index-test -cursor-at=%s:1:11 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-1 %s
 // CHECK-1: macro definition=OBSCURE
 // RUN: c-index-test -cursor-at=%s:2:14 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-2 %s
@@ -31,6 +33,8 @@ const char *fname = __FILE__;
 // CHECK-7: macro expansion=B:12:9
 // RUN: c-index-test -cursor-at=%s:16:25 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-8 %s
 // CHECK-8: macro expansion=__FILE__
+// RUN: c-index-test -cursor-at=%s:18:12 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-9 %s
+// CHECK-9: inclusion directive=a.h
 
 // Same tests, but with "editing" optimizations
 // RUN: env CINDEXTEST_EDITING=1 c-index-test -cursor-at=%s:1:11 -I%S/Inputs %s | FileCheck -check-prefix=CHECK-1 %s