diff options
author | Douglas Gregor <dgregor@apple.com> | 2010-04-05 16:10:30 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2010-04-05 16:10:30 +0000 |
commit | 09d9fa1933499cb2808cd97b2db16ee11a990ef9 (patch) | |
tree | 2c36d9535add0d1a82e90f2640207f46f6726fe0 | |
parent | 7b73b92870aa6271ac3d0a91eca83f6dde68c904 (diff) |
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
-rw-r--r-- | lib/Sema/CodeCompleteConsumer.cpp | 7 | ||||
-rw-r--r-- | test/Index/complete-macros.c | 11 | ||||
-rw-r--r-- | tools/CIndex/CIndex.cpp | 2 |
3 files changed, 17 insertions, 3 deletions
diff --git a/lib/Sema/CodeCompleteConsumer.cpp b/lib/Sema/CodeCompleteConsumer.cpp index 299e84e33e..5483a292e9 100644 --- a/lib/Sema/CodeCompleteConsumer.cpp +++ b/lib/Sema/CodeCompleteConsumer.cpp @@ -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 index 0000000000..c33d8c02e1 --- /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 998fbbba22..2d9b2cb376 100644 --- a/tools/CIndex/CIndex.cpp +++ b/tools/CIndex/CIndex.cpp @@ -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)); |