forked from OSchip/llvm-project
parent
89cbdf0209
commit
e6688e653f
|
@ -14,6 +14,7 @@
|
|||
#include "clang/Sema/CodeCompleteConsumer.h"
|
||||
#include "clang/AST/ExprCXX.h"
|
||||
#include "llvm/ADT/SmallPtrSet.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include <list>
|
||||
#include <map>
|
||||
#include <vector>
|
||||
|
@ -948,6 +949,14 @@ namespace {
|
|||
struct SortCodeCompleteResult {
|
||||
typedef CodeCompleteConsumer::Result Result;
|
||||
|
||||
bool isEarlierDeclarationName(DeclarationName X, DeclarationName Y) const {
|
||||
if (X.getNameKind() != Y.getNameKind())
|
||||
return X.getNameKind() < Y.getNameKind();
|
||||
|
||||
return llvm::LowercaseString(X.getAsString())
|
||||
< llvm::LowercaseString(Y.getAsString());
|
||||
}
|
||||
|
||||
bool operator()(const Result &X, const Result &Y) const {
|
||||
// Sort first by rank.
|
||||
if (X.Rank < Y.Rank)
|
||||
|
@ -973,7 +982,8 @@ namespace {
|
|||
switch (X.Kind) {
|
||||
case Result::RK_Declaration:
|
||||
// Order based on the declaration names.
|
||||
return X.Declaration->getDeclName() < Y.Declaration->getDeclName();
|
||||
return isEarlierDeclarationName(X.Declaration->getDeclName(),
|
||||
Y.Declaration->getDeclName());
|
||||
|
||||
case Result::RK_Keyword:
|
||||
return strcmp(X.Keyword, Y.Keyword) == -1;
|
||||
|
|
|
@ -27,7 +27,7 @@ public:
|
|||
|
||||
void test(const Proxy &p) {
|
||||
p->
|
||||
// RUN: clang-cc -fsyntax-only -code-completion-at=%s:29:6 %s -o - | FileCheck -check-prefix=CC1 %s &&
|
||||
// RUN: clang-cc -fsyntax-only -code-completion-at=%s:29:6 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s &&
|
||||
// CHECK-CC1: member1 : 0 : [#Base1::#]member1
|
||||
// CHECK-CC1: member1 : 0 : [#Base2::#]member1
|
||||
// CHECK-CC1: member2 : 0 : [#Base1::#]member2
|
||||
|
@ -37,7 +37,7 @@ void test(const Proxy &p) {
|
|||
// CHECK-CC1: memfun1 : 0 : [#Base3::#]memfun1(<#double#>)
|
||||
// CHECK-CC1: memfun2 : 0 : [#Base3::#]memfun2(<#int#>)
|
||||
// CHECK-CC1: memfun3 : 0 : memfun3(<#int#>)
|
||||
// CHECK-CC1-NEXT: Base1 : 0 : Base1::
|
||||
// CHECK-CC1: Base1 : 0 : Base1::
|
||||
// CHECK-CC1: memfun1 : 0 (Hidden) : Base2::memfun1(<#int#>)
|
||||
// RUN: true
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
struct X { int x; };
|
||||
|
||||
typedef struct X TYPEDEF;
|
||||
typedef struct t TYPEDEF;
|
||||
|
||||
void foo() {
|
||||
int y;
|
||||
// RUN: clang-cc -fsyntax-only -code-completion-at=%s:6:9 %s -o - | FileCheck -check-prefix=CC1 %s &&
|
||||
// RUN: clang-cc -fsyntax-only -code-completion-at=%s:6:9 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s &&
|
||||
// CHECK-CC1: y : 0
|
||||
// CHECK-CC1-NEXT: TYPEDEF : 2
|
||||
// CHECK-CC1-NOT: X
|
||||
// CHECK-CC1: foo : 2
|
||||
// CHECK-NOT-CC1: y : 2
|
||||
// CHECK-CC1-NEXT: TYPEDEF : 2
|
||||
// RUN: true
|
||||
|
|
Loading…
Reference in New Issue