Code completion results that refer to macros now get the cursor kind
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
diff --git a/lib/Sema/CodeCompleteConsumer.cpp b/lib/Sema/CodeCompleteConsumer.cpp
index 299e84e..5483a29 100644
--- a/lib/Sema/CodeCompleteConsumer.cpp
+++ b/lib/Sema/CodeCompleteConsumer.cpp
@@ -582,9 +582,12 @@
         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
index 0000000..c33d8c0
--- /dev/null
+++ b/test/Index/complete-macros.c
@@ -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 )}
diff --git a/tools/CIndex/CIndex.cpp b/tools/CIndex/CIndex.cpp
index 998fbbb..2d9b2cb 100644
--- a/tools/CIndex/CIndex.cpp
+++ b/tools/CIndex/CIndex.cpp
@@ -2333,7 +2333,7 @@
   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));