[cfe-commits] r112095 - in /cfe/trunk: lib/Frontend/ASTUnit.cpp lib/Sema/CodeCompleteConsumer.cpp lib/Sema/SemaCodeComplete.cpp test/Index/code-completion.cpp test/Index/complete-method-decls.m test/Index/complete-objc-message.m tools/c-index-test/c-index-test.c tools/libclang/CIndexCodeCompletion.cpp

Tom Care tcare at apple.com
Wed Aug 25 16:00:36 PDT 2010


FYI this is failing cfe/trunk/test/Index/complete-objc-message.m on my machine.

cd /Volumes/Data/Users/tcare/Projects/llvm-debug/tools/clang/test && /opt/local/bin/python2.6 /Volumes/Data/Users/tcare/Projects/llvm/utils/lit/lit.py --param clang_site_config=/Volumes/Data/Users/tcare/Projects/llvm-debug/tools/clang/test/lit.site.cfg --param build_config=. -sv /Volumes/Data/Users/tcare/Projects/llvm-debug/tools/clang/test
-- Testing: 2499 tests, 4 threads --
Testing: 0 .. 10.. 20.. 30.. 40.
FAIL: Clang :: Index/complete-objc-message.m (1157 of 2499)
******************** TEST 'Clang :: Index/complete-objc-message.m' FAILED ********************
Script:
--
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:23:19 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC1 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:8 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC2 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:61:16 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC3 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:65:16 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC4 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:74:9 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC5 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:82:8 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC6 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:95:8 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC7 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:95:17 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC8 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:95:24 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CC9 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:61:11 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCA /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:103:6 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCB /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:116:14 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCC /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:116:23 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCD /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:116:30 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCE /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:61:11 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCF /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:120:6 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCG /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:121:14 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCG /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:122:7 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCH /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
c-index-test -code-completion-at=/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:134:6 /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m | FileCheck -check-prefix=CHECK-CCI /Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m
--
Exit Code: 1
Command Output (stderr):
--
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:116:39: error: use of undeclared identifier 'ovl'
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:116:39: error: use of undeclared identifier 'ovl'
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:120:31: error: use of undeclared identifier 'ovl'
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:24:3:{24:3-24:11}: warning: method '-xx' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:55:1: warning: incomplete implementation
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:34:1: note: method definition for 'MySubInstMethod' not found
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:116:39: error: use of undeclared identifier 'ovl'
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:120:31: error: use of undeclared identifier 'ovl'
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:121:4:{121:4-121:13}: warning: method '-blarg' not found (return type defaults to 'id')
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:121:39: error: use of undeclared identifier 'ovl'
/Volumes/Data/Users/tcare/Projects/llvm-bzr/tools/clang/test/Index/complete-objc-message.m:237:15: error: expected string not found in input
// CHECK-CCH: ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace }{Text OtherArg:}{Placeholder (id)obj}
              ^
<stdin>:7:181: note: scanning from here
ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace }{Text Arg2:}{Placeholder (int)i2} (20)
                                                                                                                                                                                    ^
<stdin>:8:1: note: possible intended match here
ObjCClassMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace }{Text SomeArg:}{Placeholder (int)i1}{HorizontalSpace }{Text OtherArg:}{Placeholder (id)obj} (20)
^
--

********************
Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90.. 
Testing Time: 81.47s
********************
Failing Tests (1):
    Clang :: Index/complete-objc-message.m

  Expected Passes    : 2479
  Expected Failures  : 19
  Unexpected Failures: 1

On Aug 25, 2010, at 3:15 PM, Douglas Gregor wrote:

> Author: dgregor
> Date: Wed Aug 25 17:15:42 2010
> New Revision: 112095
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=112095&view=rev
> Log:
> Move the sorting of code-completion results out of the main path and
> into the clients, e.g., the printing code-completion consumer and
> c-index-test. Clients may want to re-sort the results anyway.
> 
> Modified:
>    cfe/trunk/lib/Frontend/ASTUnit.cpp
>    cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp
>    cfe/trunk/lib/Sema/SemaCodeComplete.cpp
>    cfe/trunk/test/Index/code-completion.cpp
>    cfe/trunk/test/Index/complete-method-decls.m
>    cfe/trunk/test/Index/complete-objc-message.m
>    cfe/trunk/tools/c-index-test/c-index-test.c
>    cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp
> 
> Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Frontend/ASTUnit.cpp (original)
> +++ cfe/trunk/lib/Frontend/ASTUnit.cpp Wed Aug 25 17:15:42 2010
> @@ -1678,9 +1678,7 @@
>     Next.ProcessCodeCompleteResults(S, Context, Results, NumResults);
>     return;
>   }
> -
> -  // Sort the completion results before passing them on to the actual consumer.
> -  std::stable_sort(AllResults.begin(), AllResults.end());
> +  
>   Next.ProcessCodeCompleteResults(S, Context, AllResults.data(),
>                                   AllResults.size());
> 
> 
> Modified: cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp (original)
> +++ cfe/trunk/lib/Sema/CodeCompleteConsumer.cpp Wed Aug 25 17:15:42 2010
> @@ -443,6 +443,8 @@
>                                                  CodeCompletionContext Context,
>                                                  CodeCompletionResult *Results,
>                                                          unsigned NumResults) {
> +  std::stable_sort(Results, Results + NumResults);
> +  
>   // Print the results.
>   for (unsigned I = 0; I != NumResults; ++I) {
>     OS << "COMPLETION: ";
> @@ -660,6 +662,11 @@
>   if (cmp)
>     return cmp < 0;
> 
> +  // If case-insensitive comparison fails, try case-sensitive comparison.
> +  cmp = XStr.compare(YStr);
> +  if (cmp)
> +    return cmp < 0;
> +
>   // Non-hidden names precede hidden names.
>   if (X.Hidden != Y.Hidden)
>     return !X.Hidden;
> @@ -695,7 +702,7 @@
>                                                        unsigned NumCandidates) {
>   for (unsigned I = 0; I != NumCandidates; ++I) {
>     WriteUnsigned(OS, CXCursor_NotImplemented);
> -    WriteUnsigned(OS, /*Priority=*/0);
> +    WriteUnsigned(OS, /*Priority=*/I);
>     WriteUnsigned(OS, /*Availability=*/CXAvailability_Available);
>     CodeCompletionString *CCS
>       = Candidates[I].CreateSignatureString(CurrentArg, SemaRef);
> 
> Modified: cfe/trunk/lib/Sema/SemaCodeComplete.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaCodeComplete.cpp?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaCodeComplete.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaCodeComplete.cpp Wed Aug 25 17:15:42 2010
> @@ -2277,8 +2277,6 @@
>                                       CodeCompletionContext Context,
>                                       CodeCompletionResult *Results,
>                                       unsigned NumResults) {
> -  std::stable_sort(Results, Results + NumResults);
> -
>   if (CodeCompleter)
>     CodeCompleter->ProcessCodeCompleteResults(*S, Context, Results, NumResults);
> 
> 
> Modified: cfe/trunk/test/Index/code-completion.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/code-completion.cpp?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/test/Index/code-completion.cpp (original)
> +++ cfe/trunk/test/Index/code-completion.cpp Wed Aug 25 17:15:42 2010
> @@ -60,8 +60,8 @@
> // RUN: c-index-test -code-completion-at=%s:37:10 %s | FileCheck -check-prefix=CHECK-EXPR %s
> // CHECK-EXPR: NotImplemented:{TypedText int} (65)
> // CHECK-EXPR: NotImplemented:{TypedText long} (65)
> -// CHECK-EXPR: FieldDecl:{ResultType double}{TypedText member} (10)
> // CHECK-EXPR: FieldDecl:{ResultType int}{Text X::}{TypedText member} (5)
> +// CHECK-EXPR: FieldDecl:{ResultType double}{TypedText member} (10)
> // CHECK-EXPR: FieldDecl:{ResultType float}{Text Y::}{TypedText member} (11)
> // CHECK-EXPR: FunctionDecl:{ResultType void}{TypedText memfunc}{LeftParen (}{Optional {Placeholder int i}}{RightParen )} (22)
> // CHECK-EXPR: NotImplemented:{TypedText N}{Text ::} (75)
> 
> Modified: cfe/trunk/test/Index/complete-method-decls.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/complete-method-decls.m?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/test/Index/complete-method-decls.m (original)
> +++ cfe/trunk/test/Index/complete-method-decls.m Wed Aug 25 17:15:42 2010
> @@ -113,13 +113,13 @@
> // CHECK-CCC: ObjCInstanceMethodDecl:{TypedText first}{Colon :}{LeftParen (}{Text int}{RightParen )}{Text x}{HorizontalSpace  }{Text second2}{Colon :}{LeftParen (}{Text float}{RightParen )}{Text y}{HorizontalSpace  }{Text third}{Colon :}{LeftParen (}{Text double}{RightParen )}{Text z} (30)
> // RUN: c-index-test -code-completion-at=%s:56:21 %s | FileCheck -check-prefix=CHECK-CCD %s
> // FIXME: These results could be more precise.
> -// CHECK-CCD: ObjCInstanceMethodDecl:{ResultType id}{Informative first:}{TypedText second2:}{Text (float)y2}{HorizontalSpace  }{Text third:}{Text (double)z} (20)
> // CHECK-CCD: ObjCInstanceMethodDecl:{ResultType int}{Informative first:}{TypedText second2:}{Text (float)y}{HorizontalSpace  }{Text third:}{Text (double)z} (5)
> +// CHECK-CCD: ObjCInstanceMethodDecl:{ResultType id}{Informative first:}{TypedText second2:}{Text (float)y2}{HorizontalSpace  }{Text third:}{Text (double)z} (20)
> // CHECK-CCD: ObjCInstanceMethodDecl:{ResultType void *}{Informative first:}{TypedText second3:}{Text (float)y3}{HorizontalSpace  }{Text third:}{Text (double)z} (20)
> // CHECK-CCD: ObjCInstanceMethodDecl:{ResultType int}{Informative first:}{TypedText second:}{Text (float)y}{HorizontalSpace  }{Text third:}{Text (double)z} (5)
> // RUN: c-index-test -code-completion-at=%s:56:38 %s | FileCheck -check-prefix=CHECK-CCE %s
> -// CHECK-CCE: ObjCInstanceMethodDecl:{ResultType id}{Informative first:}{Informative second2:}{TypedText third:}{Text (double)z} (20)
> // CHECK-CCE: ObjCInstanceMethodDecl:{ResultType int}{Informative first:}{Informative second2:}{TypedText third:}{Text (double)z} (5)
> +// CHECK-CCE: ObjCInstanceMethodDecl:{ResultType id}{Informative first:}{Informative second2:}{TypedText third:}{Text (double)z} (20)
> // RUN: c-index-test -code-completion-at=%s:60:4 %s | FileCheck -check-prefix=CHECK-CCF %s
> // CHECK-CCF: ObjCInterfaceDecl:{TypedText A} (65)
> // CHECK-CCF: ObjCInterfaceDecl:{TypedText B} (65)
> 
> Modified: cfe/trunk/test/Index/complete-objc-message.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/complete-objc-message.m?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/test/Index/complete-objc-message.m (original)
> +++ cfe/trunk/test/Index/complete-objc-message.m Wed Aug 25 17:15:42 2010
> @@ -209,20 +209,23 @@
> // CHECK-CCF: {ResultType Class}{TypedText self}
> // CHECK-CCF: {TypedText super}
> // RUN: c-index-test -code-completion-at=%s:120:6 %s | FileCheck -check-prefix=CHECK-CCG %s
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText categoryInstanceMethod}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod1}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)i}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace  }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace  }{Text Arg2:}{Placeholder (int)i2}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace  }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace  }{Text OtherArg:}{Placeholder (id)obj}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace  }{Text SomeArg:}{Placeholder (int)i1}{HorizontalSpace  }{Text OtherArg:}{Placeholder (id)obj}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)x}{HorizontalSpace  }{Text second:}{Placeholder (id)y}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod:}{Placeholder (id)obj}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)f}{HorizontalSpace  }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace  }{Text Arg2:}{Placeholder (int)i2}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)value}
> -// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod}
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText categoryInstanceMethod} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText instanceMethod1} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (int)i} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace  }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace  }{Text Arg2:}{Placeholder (int)i2} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace  }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace  }{Text OtherArg:}{Placeholder (id)obj} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText Method:}{Placeholder (float)f}{HorizontalSpace  }{Text SomeArg:}{Placeholder (int)i1}{HorizontalSpace  }{Text OtherArg:}{Placeholder (id)obj} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyInstMethod:}{Placeholder (id)x}{HorizontalSpace  }{Text second:}{Placeholder (id)y} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MyPrivateInstMethod} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText MySubInstMethod:}{Placeholder (id)obj} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText OtherMethod:}{Placeholder (float)f}{HorizontalSpace  }{Text Arg1:}{Placeholder (int)i1}{HorizontalSpace  }{Text Arg2:}{Placeholder (int)i2} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType id}{TypedText protocolInstanceMethod:}{Placeholder (int)value} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText secondProtocolInstanceMethod} (20)
> +// CHECK-CCG: ObjCInstanceMethodDecl:{ResultType int}{TypedText SentinelMethod:}{Placeholder (int)i}{Placeholder , ...}{Text , nil} (20)
> +
> +                    
> // RUN: c-index-test -code-completion-at=%s:121:14 %s | FileCheck -check-prefix=CHECK-CCG %s
> // RUN: c-index-test -code-completion-at=%s:122:7 %s | FileCheck -check-prefix=CHECK-CCH %s
> // CHECK-CCH: ObjCClassMethodDecl:{ResultType id}{TypedText categoryClassMethod}
> 
> Modified: cfe/trunk/tools/c-index-test/c-index-test.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/tools/c-index-test/c-index-test.c (original)
> +++ cfe/trunk/tools/c-index-test/c-index-test.c Wed Aug 25 17:15:42 2010
> @@ -1,6 +1,7 @@
> /* c-index-test.c */
> 
> #include "clang-c/Index.h"
> +#include <ctype.h>
> #include <stdlib.h>
> #include <stdio.h>
> #include <string.h>
> @@ -895,6 +896,84 @@
>   fprintf(file, "\n");
> }
> 
> +int my_stricmp(const char *s1, const char *s2) {
> +  while (*s1 && *s2) {
> +    int c1 = tolower(*s1), c2 = tolower(*s2);
> +    if (c1 < c2)
> +      return -1;
> +    else if (c1 > c2)
> +      return 1;
> +    
> +    ++s1;
> +    ++s2;
> +  }
> +  
> +  if (*s1)
> +    return 1;
> +  else if (*s2)
> +    return -1;
> +  return 0;
> +}
> +
> +int compare_completion_string(const void *xv, const void *yv) {
> +  CXCompletionString x = ((CXCompletionResult *)xv)->CompletionString;
> +  CXCompletionString y = ((CXCompletionResult *)yv)->CompletionString;
> +  CXString xText, yText;
> +  int I, N;
> +  int result;
> +  int FoundXText = 0, FoundYText = 0;
> +  
> +  /* Find the typed text in x. */
> +  for (I = 0, N = clang_getNumCompletionChunks(x); I != N; ++I) {
> +    if (clang_getCompletionChunkKind(x, I) == CXCompletionChunk_TypedText) {
> +      xText = clang_getCompletionChunkText(x, I);
> +      FoundXText = 1;
> +      break;
> +    }
> +  }
> +  
> +  /* Find the typed text in x. */
> +  for (I = 0, N = clang_getNumCompletionChunks(y); I != N; ++I) {
> +    if (clang_getCompletionChunkKind(y, I) == CXCompletionChunk_TypedText) {
> +      yText = clang_getCompletionChunkText(y, I);
> +      FoundYText = 1;
> +      break;
> +    }
> +  }
> +  
> +  if (!FoundXText || !FoundYText) {
> +    /* At least one of the results is missing a TypedText chunk. */
> +    if (FoundXText)
> +      clang_disposeString(xText);
> +    if (FoundYText)
> +      clang_disposeString(xText);
> +    
> +    if (FoundXText || FoundYText)
> +      return FoundXText? -1 : 1;
> +  } else {
> +    /* First, try case-insensitive comparisons. */
> +    result = my_stricmp(clang_getCString(xText), clang_getCString(yText));
> +
> +    /* If that fails, try case-sensitive comparison. */
> +    if (!result)
> +      result = strcmp(clang_getCString(xText), clang_getCString(yText));
> +    
> +    clang_disposeString(xText);
> +    clang_disposeString(yText);
> +    if (result)
> +      return result;
> +  }
> +  
> +  /* The completion strings appear to be the same; try to order based on
> +     priority. */
> +  if (clang_getCompletionPriority(x) < clang_getCompletionPriority(y))
> +    return -1;
> +  else if (clang_getCompletionPriority(x) > clang_getCompletionPriority(y))
> +    return 1;
> +  
> +  return 0;
> +}
> +
> int perform_code_completion(int argc, const char **argv, int timing_only) {
>   const char *input = argv[1];
>   char *filename = 0;
> @@ -950,9 +1029,14 @@
> 
>   if (results) {
>     unsigned i, n = results->NumResults;
> -    if (!timing_only)
> +    if (!timing_only) {      
> +      /* Sort the code-completion results based on the typed text. */
> +      mergesort(results->Results, results->NumResults, 
> +                sizeof(CXCompletionResult), &compare_completion_string);
> +
>       for (i = 0; i != n; ++i)
>         print_completion_result(results->Results + i, stdout);
> +    }
>     n = clang_codeCompleteGetNumDiagnostics(results);
>     for (i = 0; i != n; ++i) {
>       CXDiagnostic diag = clang_codeCompleteGetDiagnostic(results, i);
> 
> Modified: cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp?rev=112095&r1=112094&r2=112095&view=diff
> ==============================================================================
> --- cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp (original)
> +++ cfe/trunk/tools/libclang/CIndexCodeCompletion.cpp Wed Aug 25 17:15:42 2010
> @@ -582,6 +582,8 @@
>         AllocatedResults.Results[I].CompletionString = StoredCompletion;
>       }
>     }
> +    
> +    // FIXME: Add ProcessOverloadCandidates?
>   };
> }
> 
> 
> 
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20100825/641b8366/attachment.html>


More information about the cfe-commits mailing list