diff options
Diffstat (limited to 'lib/Sema/CodeCompleteConsumer.cpp')
-rw-r--r-- | lib/Sema/CodeCompleteConsumer.cpp | 61 |
1 files changed, 17 insertions, 44 deletions
diff --git a/lib/Sema/CodeCompleteConsumer.cpp b/lib/Sema/CodeCompleteConsumer.cpp index 0a23601..19be1cb 100644 --- a/lib/Sema/CodeCompleteConsumer.cpp +++ b/lib/Sema/CodeCompleteConsumer.cpp @@ -11,15 +11,15 @@ // //===----------------------------------------------------------------------===// #include "clang/Sema/CodeCompleteConsumer.h" -#include "clang/Sema/Scope.h" -#include "clang/Sema/Sema.h" +#include "clang-c/Index.h" #include "clang/AST/DeclCXX.h" #include "clang/AST/DeclObjC.h" #include "clang/AST/DeclTemplate.h" #include "clang/Lex/Preprocessor.h" -#include "clang-c/Index.h" -#include "llvm/ADT/SmallString.h" +#include "clang/Sema/Scope.h" +#include "clang/Sema/Sema.h" #include "llvm/ADT/STLExtras.h" +#include "llvm/ADT/SmallString.h" #include "llvm/ADT/Twine.h" #include "llvm/Support/raw_ostream.h" #include <algorithm> @@ -267,8 +267,8 @@ const char *CodeCompletionAllocator::CopyString(Twine String) { return CopyString(String.toStringRef(Data)); } -StringRef CodeCompletionTUInfo::getParentName(DeclContext *DC) { - NamedDecl *ND = dyn_cast<NamedDecl>(DC); +StringRef CodeCompletionTUInfo::getParentName(const DeclContext *DC) { + const NamedDecl *ND = dyn_cast<NamedDecl>(DC); if (!ND) return StringRef(); @@ -283,9 +283,9 @@ StringRef CodeCompletionTUInfo::getParentName(DeclContext *DC) { return StringRef(); // Find the interesting names. - llvm::SmallVector<DeclContext *, 2> Contexts; + SmallVector<const DeclContext *, 2> Contexts; while (DC && !DC->isFunctionOrMethod()) { - if (NamedDecl *ND = dyn_cast<NamedDecl>(DC)) { + if (const NamedDecl *ND = dyn_cast<NamedDecl>(DC)) { if (ND->getIdentifier()) Contexts.push_back(DC); } @@ -294,7 +294,7 @@ StringRef CodeCompletionTUInfo::getParentName(DeclContext *DC) { } { - llvm::SmallString<128> S; + SmallString<128> S; llvm::raw_svector_ostream OS(S); bool First = true; for (unsigned I = Contexts.size(); I != 0; --I) { @@ -304,12 +304,12 @@ StringRef CodeCompletionTUInfo::getParentName(DeclContext *DC) { OS << "::"; } - DeclContext *CurDC = Contexts[I-1]; - if (ObjCCategoryImplDecl *CatImpl = dyn_cast<ObjCCategoryImplDecl>(CurDC)) + const DeclContext *CurDC = Contexts[I-1]; + if (const ObjCCategoryImplDecl *CatImpl = dyn_cast<ObjCCategoryImplDecl>(CurDC)) CurDC = CatImpl->getCategoryDecl(); - if (ObjCCategoryDecl *Cat = dyn_cast<ObjCCategoryDecl>(CurDC)) { - ObjCInterfaceDecl *Interface = Cat->getClassInterface(); + if (const ObjCCategoryDecl *Cat = dyn_cast<ObjCCategoryDecl>(CurDC)) { + const ObjCInterfaceDecl *Interface = Cat->getClassInterface(); if (!Interface) { // Assign an empty StringRef but with non-null data to distinguish // between empty because we didn't process the DeclContext yet. @@ -377,7 +377,7 @@ void CodeCompletionBuilder::AddChunk(CodeCompletionString::ChunkKind CK, Chunks.push_back(Chunk(CK, Text)); } -void CodeCompletionBuilder::addParentContext(DeclContext *DC) { +void CodeCompletionBuilder::addParentContext(const DeclContext *DC) { if (DC->isTranslationUnit()) { return; } @@ -385,7 +385,7 @@ void CodeCompletionBuilder::addParentContext(DeclContext *DC) { if (DC->isFunctionOrMethod()) return; - NamedDecl *ND = dyn_cast<NamedDecl>(DC); + const NamedDecl *ND = dyn_cast<NamedDecl>(DC); if (!ND) return; @@ -396,33 +396,6 @@ void CodeCompletionBuilder::addBriefComment(StringRef Comment) { BriefComment = Allocator.CopyString(Comment); } -unsigned CodeCompletionResult::getPriorityFromDecl(NamedDecl *ND) { - if (!ND) - return CCP_Unlikely; - - // Context-based decisions. - DeclContext *DC = ND->getDeclContext()->getRedeclContext(); - if (DC->isFunctionOrMethod() || isa<BlockDecl>(DC)) { - // _cmd is relatively rare - if (ImplicitParamDecl *ImplicitParam = dyn_cast<ImplicitParamDecl>(ND)) - if (ImplicitParam->getIdentifier() && - ImplicitParam->getIdentifier()->isStr("_cmd")) - return CCP_ObjC_cmd; - - return CCP_LocalDeclaration; - } - if (DC->isRecord() || isa<ObjCContainerDecl>(DC)) - return CCP_MemberDeclaration; - - // Content-based decisions. - if (isa<EnumConstantDecl>(ND)) - return CCP_Constant; - if (isa<TypeDecl>(ND) || isa<ObjCInterfaceDecl>(ND)) - return CCP_Type; - - return CCP_Declaration; -} - //===----------------------------------------------------------------------===// // Code completion overload candidate implementation //===----------------------------------------------------------------------===// @@ -526,7 +499,7 @@ PrintingCodeCompleteConsumer::ProcessOverloadCandidates(Sema &SemaRef, } /// \brief Retrieve the effective availability of the given declaration. -static AvailabilityResult getDeclAvailability(Decl *D) { +static AvailabilityResult getDeclAvailability(const Decl *D) { AvailabilityResult AR = D->getAvailability(); if (isa<EnumConstantDecl>(D)) AR = std::max(AR, cast<Decl>(D->getDeclContext())->getAvailability()); @@ -559,7 +532,7 @@ void CodeCompletionResult::computeCursorKindAndAvailability(bool Accessible) { break; } - if (FunctionDecl *Function = dyn_cast<FunctionDecl>(Declaration)) + if (const FunctionDecl *Function = dyn_cast<FunctionDecl>(Declaration)) if (Function->isDeleted()) Availability = CXAvailability_NotAvailable; |