]> granicus.if.org Git - clang/commitdiff
Code completion results that refer to macros now get the cursor kind
authorDouglas Gregor <dgregor@apple.com>
Mon, 5 Apr 2010 16:10:30 +0000 (16:10 +0000)
committerDouglas Gregor <dgregor@apple.com>
Mon, 5 Apr 2010 16:10:30 +0000 (16:10 +0000)
of macro definitions when passed to CIndex. Add test for code
completion of macros via CIndex.

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

lib/Sema/CodeCompleteConsumer.cpp
test/Index/complete-macros.c [new file with mode: 0644]
tools/CIndex/CIndex.cpp

index 299e84e33eff0491153fe0b588d1fbc863446654..5483a292e9558f73d1394fdc2ab948178a27f66f 100644 (file)
@@ -582,9 +582,12 @@ CIndexCodeCompleteConsumer::ProcessCodeCompleteResults(Sema &SemaRef,
         break;
       }
       break;
-        
-    case Result::RK_Keyword:
+
     case Result::RK_Macro:
+      Kind = CXCursor_MacroDefinition;
+      break;
+
+    case Result::RK_Keyword:
     case Result::RK_Pattern:
       Kind = CXCursor_NotImplemented;
       break;
diff --git a/test/Index/complete-macros.c b/test/Index/complete-macros.c
new file mode 100644 (file)
index 0000000..c33d8c0
--- /dev/null
@@ -0,0 +1,11 @@
+// Note: the run lines follow their respective tests, since line/column
+// matter in this test.
+
+#define FOO(Arg1,Arg2) foobar
+
+void f() {
+
+}
+
+// RUN: c-index-test -code-completion-at=%s:7:1 %s | FileCheck -check-prefix=CHECK-CC1 %s
+// CHECK-CC1: macro definition:{TypedText FOO}{LeftParen (}{Placeholder Arg1}{Comma , }{Placeholder Arg2}{RightParen )}
index 998fbbba22b66000a30a85b76d5904303e55998a..2d9b2cb37638ffe36cdb722b5fa6242752f5544e 100644 (file)
@@ -2333,7 +2333,7 @@ void clang_annotateTokens(CXTranslationUnit TU,
   RegionOfInterest.setBegin(
         cxloc::translateSourceLocation(clang_getTokenLocation(TU, Tokens[0])));
   SourceLocation End
-  = cxloc::translateSourceLocation(clang_getTokenLocation(TU,
+    = cxloc::translateSourceLocation(clang_getTokenLocation(TU,
                                                         Tokens[NumTokens - 1]));
   RegionOfInterest.setEnd(CXXUnit->getPreprocessor().getLocForEndOfToken(End));