clang API Documentation

Classes | Defines | Typedefs | Enumerations | Functions
SemaCodeComplete.cpp File Reference
#include "clang/Sema/SemaInternal.h"
#include "clang/AST/DeclObjC.h"
#include "clang/AST/ExprCXX.h"
#include "clang/AST/ExprObjC.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Lex/HeaderSearch.h"
#include "clang/Lex/MacroInfo.h"
#include "clang/Lex/Preprocessor.h"
#include "clang/Sema/CodeCompleteConsumer.h"
#include "clang/Sema/ExternalSemaSource.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/Overload.h"
#include "clang/Sema/Scope.h"
#include "clang/Sema/ScopeInfo.h"
#include "llvm/ADT/DenseSet.h"
#include "llvm/ADT/SmallBitVector.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include <list>
#include <map>
#include <vector>
#include "clang/Basic/OperatorKinds.def"
Include dependency graph for SemaCodeComplete.cpp:

Go to the source code of this file.

Classes

class  ResultBuilder::ShadowMapEntry::iterator
class  ResultBuilder::ShadowMapEntry::iterator::pointer
struct  clang::Sema::CodeCompleteExpressionData

Defines

#define OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly)   case OO_##Name: OperatorName = "operator" Spelling; break;
#define OVERLOADED_OPERATOR_MULTI(Name, Spelling, Unary, Binary, MemberOnly)
#define OVERLOADED_OPERATOR(Name, Spelling, Token, Unary, Binary, MemberOnly)
#define OBJC_AT_KEYWORD_NAME(NeedAt, Keyword)   ((NeedAt)? "@" Keyword : Keyword)

Typedefs

typedef llvm::SmallPtrSet
< IdentifierInfo *, 16 > 
AddedPropertiesSet
 The set of properties that have already been added, referenced by property name.
typedef llvm::DenseMap
< Selector,
llvm::PointerIntPair
< ObjCMethodDecl *, 1, bool > > 
KnownMethodsMap

Enumerations

enum  ObjCMethodKind { MK_Any, MK_ZeroArgSelector, MK_OneArgSelector }
 Describes the kind of Objective-C method that we want to find via code completion. More...

Functions

static NestedNameSpecifiergetRequiredQualification (ASTContext &Context, const DeclContext *CurContext, const DeclContext *TargetContext)
 Compute the qualification required to get from the current context (CurContext) to the target context (TargetContext).
static bool isReservedName (const IdentifierInfo *Id)
static bool isObjCReceiverType (ASTContext &C, QualType T)
static void AddTypeSpecifierResults (const LangOptions &LangOpts, ResultBuilder &Results)
 Add type specifiers for the current language as keyword results.
static void AddStorageSpecifiers (Sema::ParserCompletionContext CCC, const LangOptions &LangOpts, ResultBuilder &Results)
static void AddFunctionSpecifiers (Sema::ParserCompletionContext CCC, const LangOptions &LangOpts, ResultBuilder &Results)
static void AddObjCExpressionResults (ResultBuilder &Results, bool NeedAt)
static void AddObjCStatementResults (ResultBuilder &Results, bool NeedAt)
static void AddObjCVisibilityResults (const LangOptions &LangOpts, ResultBuilder &Results, bool NeedAt)
static void AddObjCImplementationResults (const LangOptions &LangOpts, ResultBuilder &Results, bool NeedAt)
static void AddObjCInterfaceResults (const LangOptions &LangOpts, ResultBuilder &Results, bool NeedAt)
static void AddObjCTopLevelResults (ResultBuilder &Results, bool NeedAt)
static void AddTypedefResult (ResultBuilder &Results)
static bool WantTypesInContext (Sema::ParserCompletionContext CCC, const LangOptions &LangOpts)
static PrintingPolicy getCompletionPrintingPolicy (const ASTContext &Context, const Preprocessor &PP)
static PrintingPolicy getCompletionPrintingPolicy (Sema &S)
 Retrieve a printing policy suitable for code completion.
static const char * GetCompletionTypeString (QualType T, ASTContext &Context, const PrintingPolicy &Policy, CodeCompletionAllocator &Allocator)
 Retrieve the string representation of the given type as a string that has the appropriate lifetime for code completion.
static void addThisCompletion (Sema &S, ResultBuilder &Results)
 Add a completion for "this", if we're in a member function.
static void AddOrdinaryNameResults (Sema::ParserCompletionContext CCC, Scope *S, Sema &SemaRef, ResultBuilder &Results)
 Add language constructs that show up for "ordinary" names.
static void AddResultTypeChunk (ASTContext &Context, const PrintingPolicy &Policy, const NamedDecl *ND, CodeCompletionBuilder &Result)
 If the given declaration has an associated type, add it as a result type chunk.
static void MaybeAddSentinel (ASTContext &Context, const NamedDecl *FunctionOrMethod, CodeCompletionBuilder &Result)
static std::string formatObjCParamQualifiers (unsigned ObjCQuals)
static std::string FormatFunctionParameter (ASTContext &Context, const PrintingPolicy &Policy, const ParmVarDecl *Param, bool SuppressName=false, bool SuppressBlock=false)
static void AddFunctionParameterChunks (ASTContext &Context, const PrintingPolicy &Policy, const FunctionDecl *Function, CodeCompletionBuilder &Result, unsigned Start=0, bool InOptional=false)
 Add function parameter chunks to the given code completion string.
static void AddTemplateParameterChunks (ASTContext &Context, const PrintingPolicy &Policy, const TemplateDecl *Template, CodeCompletionBuilder &Result, unsigned MaxParameters=0, unsigned Start=0, bool InDefaultArg=false)
 Add template parameter chunks to the given code completion string.
static void AddQualifierToCompletionString (CodeCompletionBuilder &Result, NestedNameSpecifier *Qualifier, bool QualifierIsInformative, ASTContext &Context, const PrintingPolicy &Policy)
 Add a qualifier to the given code-completion string, if the provided nested-name-specifier is non-NULL.
static void AddFunctionTypeQualsToCompletionString (CodeCompletionBuilder &Result, const FunctionDecl *Function)
static void AddMacroResults (Preprocessor &PP, ResultBuilder &Results, bool IncludeUndefined, bool TargetTypeIsPointer=false)
static void AddPrettyFunctionResults (const LangOptions &LangOpts, ResultBuilder &Results)
static void HandleCodeCompleteResults (Sema *S, CodeCompleteConsumer *CodeCompleter, CodeCompletionContext Context, CodeCompletionResult *Results, unsigned NumResults)
static enum
CodeCompletionContext::Kind 
mapCodeCompletionContext (Sema &S, Sema::ParserCompletionContext PCC)
static void MaybeAddOverrideCalls (Sema &S, DeclContext *InContext, ResultBuilder &Results)
 If we're in a C++ virtual member function, add completion results that invoke the functions we override, since it's common to invoke the overridden function as well as adding new functionality.
static void AddClassMessageCompletions (Sema &SemaRef, Scope *S, ParsedType Receiver, ArrayRef< IdentifierInfo * > SelIdents, bool AtArgumentExpression, bool IsSuper, ResultBuilder &Results)
static ObjCContainerDeclgetContainerDef (ObjCContainerDecl *Container)
 Retrieve the container definition, if any?
static void AddObjCProperties (ObjCContainerDecl *Container, bool AllowCategories, bool AllowNullaryMethods, DeclContext *CurContext, AddedPropertiesSet &AddedProperties, ResultBuilder &Results)
static bool anyNullArguments (ArrayRef< Expr * > Args)
static bool isNamespaceScope (Scope *S)
 Determine whether this scope denotes a namespace.
static bool ObjCPropertyFlagConflicts (unsigned Attributes, unsigned NewFlag)
 Determine whether the addition of the given flag to an Objective-C property's attributes will cause a conflict.
static bool isAcceptableObjCSelector (Selector Sel, ObjCMethodKind WantKind, ArrayRef< IdentifierInfo * > SelIdents, bool AllowSameLength=true)
static bool isAcceptableObjCMethod (ObjCMethodDecl *Method, ObjCMethodKind WantKind, ArrayRef< IdentifierInfo * > SelIdents, bool AllowSameLength=true)
static void AddObjCMethods (ObjCContainerDecl *Container, bool WantInstanceMethods, ObjCMethodKind WantKind, ArrayRef< IdentifierInfo * > SelIdents, DeclContext *CurContext, VisitedSelectorSet &Selectors, bool AllowSameLength, ResultBuilder &Results, bool InOriginalClass=true)
 Add all of the Objective-C methods in the given Objective-C container to the set of results.
static ObjCInterfaceDeclGetAssumedMessageSendExprType (Expr *E)
 When we have an expression with type "id", we may assume that it has some more-specific class type based on knowledge of common uses of Objective-C. This routine returns that class type, or NULL if no better result could be determined.
static ObjCMethodDeclAddSuperSendCompletion (Sema &S, bool NeedSuperKeyword, ArrayRef< IdentifierInfo * > SelIdents, ResultBuilder &Results)
static QualType getPreferredArgumentTypeForMessageSend (ResultBuilder &Results, unsigned NumSelIdents)
 Given a set of code-completion results for the argument of a message send, determine the preferred type (if any) for that argument expression.
static void AddProtocolResults (DeclContext *Ctx, DeclContext *CurContext, bool OnlyForwardDeclarations, ResultBuilder &Results)
 Add all of the protocol declarations that we find in the given (translation unit) context.
static void AddInterfaceResults (DeclContext *Ctx, DeclContext *CurContext, bool OnlyForwardDeclarations, bool OnlyUnimplemented, ResultBuilder &Results)
 Add all of the Objective-C interface declarations that we find in the given (translation unit) context.
static void FindImplementableMethods (ASTContext &Context, ObjCContainerDecl *Container, bool WantInstanceMethods, QualType ReturnType, KnownMethodsMap &KnownMethods, bool InOriginalClass=true)
 Find all of the methods that reside in the given container (and its superclasses, protocols, etc.) that meet the given criteria. Insert those methods into the map of known methods, indexed by selector so they can be easily found.
static void AddObjCPassingTypeChunk (QualType Type, unsigned ObjCDeclQuals, ASTContext &Context, const PrintingPolicy &Policy, CodeCompletionBuilder &Builder)
 Add the parenthesized return or parameter type chunk to a code completion string.
static bool InheritsFromClassNamed (ObjCInterfaceDecl *Class, StringRef Name)
 Determine whether the given class is or inherits from a class by the given name.
static void AddObjCKeyValueCompletions (ObjCPropertyDecl *Property, bool IsInstanceMethod, QualType ReturnType, ASTContext &Context, VisitedSelectorSet &KnownSelectors, ResultBuilder &Results)
 Add code completions for Objective-C Key-Value Coding (KVC) and Key-Value Observing (KVO).

Define Documentation

#define OBJC_AT_KEYWORD_NAME (   NeedAt,
  Keyword 
)    ((NeedAt)? "@" Keyword : Keyword)

Macro that optionally prepends an "@" to the string literal passed in via Keyword, depending on whether NeedAt is true or false.

Definition at line 4370 of file SemaCodeComplete.cpp.

Referenced by AddObjCExpressionResults(), AddObjCImplementationResults(), AddObjCInterfaceResults(), AddObjCStatementResults(), AddObjCTopLevelResults(), and AddObjCVisibilityResults().

#define OVERLOADED_OPERATOR (   Name,
  Spelling,
  Token,
  Unary,
  Binary,
  MemberOnly 
)    case OO_##Name: OperatorName = "operator" Spelling; break;
#define OVERLOADED_OPERATOR (   Name,
  Spelling,
  Token,
  Unary,
  Binary,
  MemberOnly 
)
Value:
if (std::strcmp(Spelling, "?"))                                                  \
    Results.AddResult(Result(Spelling));
#define OVERLOADED_OPERATOR_MULTI (   Name,
  Spelling,
  Unary,
  Binary,
  MemberOnly 
)

Typedef Documentation

typedef llvm::SmallPtrSet<IdentifierInfo*, 16> AddedPropertiesSet

The set of properties that have already been added, referenced by property name.

Definition at line 3437 of file SemaCodeComplete.cpp.

typedef llvm::DenseMap< Selector, llvm::PointerIntPair<ObjCMethodDecl *, 1, bool> > KnownMethodsMap

Definition at line 6049 of file SemaCodeComplete.cpp.


Enumeration Type Documentation

Describes the kind of Objective-C method that we want to find via code completion.

Enumerator:
MK_Any 

Any kind of method, provided it means other specified criteria.

MK_ZeroArgSelector 

Zero-argument (unary) selector.

MK_OneArgSelector 

One-argument selector.

Definition at line 4734 of file SemaCodeComplete.cpp.


Function Documentation

static void AddClassMessageCompletions ( Sema SemaRef,
Scope S,
ParsedType  Receiver,
ArrayRef< IdentifierInfo * >  SelIdents,
bool  AtArgumentExpression,
bool  IsSuper,
ResultBuilder &  Results 
) [static]
static void AddFunctionParameterChunks ( ASTContext Context,
const PrintingPolicy Policy,
const FunctionDecl Function,
CodeCompletionBuilder Result,
unsigned  Start = 0,
bool  InOptional = false 
) [static]
static void AddFunctionSpecifiers ( Sema::ParserCompletionContext  CCC,
const LangOptions LangOpts,
ResultBuilder &  Results 
) [static]
static void AddFunctionTypeQualsToCompletionString ( CodeCompletionBuilder Result,
const FunctionDecl Function 
) [static]
static void AddInterfaceResults ( DeclContext Ctx,
DeclContext CurContext,
bool  OnlyForwardDeclarations,
bool  OnlyUnimplemented,
ResultBuilder &  Results 
) [static]

Add all of the Objective-C interface declarations that we find in the given (translation unit) context.

Definition at line 5758 of file SemaCodeComplete.cpp.

References clang::DeclContext::decls().

Referenced by clang::Sema::CodeCompleteObjCImplementationDecl(), clang::Sema::CodeCompleteObjCInterfaceDecl(), and clang::Sema::CodeCompleteObjCSuperclass().

static void AddMacroResults ( Preprocessor PP,
ResultBuilder &  Results,
bool  IncludeUndefined,
bool  TargetTypeIsPointer = false 
) [static]
static void AddObjCExpressionResults ( ResultBuilder &  Results,
bool  NeedAt 
) [static]
static void AddObjCImplementationResults ( const LangOptions LangOpts,
ResultBuilder &  Results,
bool  NeedAt 
) [static]
static void AddObjCInterfaceResults ( const LangOptions LangOpts,
ResultBuilder &  Results,
bool  NeedAt 
) [static]
static void AddObjCKeyValueCompletions ( ObjCPropertyDecl Property,
bool  IsInstanceMethod,
QualType  ReturnType,
ASTContext Context,
VisitedSelectorSet &  KnownSelectors,
ResultBuilder &  Results 
) [static]
static void AddObjCMethods ( ObjCContainerDecl Container,
bool  WantInstanceMethods,
ObjCMethodKind  WantKind,
ArrayRef< IdentifierInfo * >  SelIdents,
DeclContext CurContext,
VisitedSelectorSet &  Selectors,
bool  AllowSameLength,
ResultBuilder &  Results,
bool  InOriginalClass = true 
) [static]

Add all of the Objective-C methods in the given Objective-C container to the set of results.

The container will be a class, protocol, category, or implementation of any of the above. This mether will recurse to include methods from the superclasses of classes along with their categories, protocols, and implementations.

Parameters:
Containerthe container in which we'll look to find methods.
WantInstanceMethodsWhether to add instance methods (only); if false, this routine will add factory methods (only).
CurContextthe context in which we're performing the lookup that finds methods.
AllowSameLengthWhether we allow a method to be added to the list when it has the same number of parameters as we have selector identifiers.
Resultsthe structure into which we'll add results.

Definition at line 4798 of file SemaCodeComplete.cpp.

References clang::ObjCList< T >::begin(), clang::CCD_InBaseClass, clang::ObjCList< T >::end(), getContainerDef(), clang::ObjCInterfaceDecl::getImplementation(), clang::ObjCInterfaceDecl::getSuperClass(), clang::ObjCInterfaceDecl::hasDefinition(), isAcceptableObjCMethod(), clang::ObjCInterfaceDecl::known_categories(), clang::ObjCContainerDecl::methods(), MK_Any, and clang::ObjCInterfaceDecl::protocols().

Referenced by AddClassMessageCompletions(), clang::Sema::CodeCompleteObjCInstanceMessage(), clang::Sema::CodeCompleteObjCPropertyGetter(), and clang::Sema::CodeCompleteObjCPropertySetter().

static void AddObjCPassingTypeChunk ( QualType  Type,
unsigned  ObjCDeclQuals,
ASTContext Context,
const PrintingPolicy Policy,
CodeCompletionBuilder Builder 
) [static]
static void AddObjCProperties ( ObjCContainerDecl Container,
bool  AllowCategories,
bool  AllowNullaryMethods,
DeclContext CurContext,
AddedPropertiesSet AddedProperties,
ResultBuilder &  Results 
) [static]
static void AddObjCStatementResults ( ResultBuilder &  Results,
bool  NeedAt 
) [static]
static void AddObjCTopLevelResults ( ResultBuilder &  Results,
bool  NeedAt 
) [static]
static void AddObjCVisibilityResults ( const LangOptions LangOpts,
ResultBuilder &  Results,
bool  NeedAt 
) [static]
static void AddOrdinaryNameResults ( Sema::ParserCompletionContext  CCC,
Scope S,
Sema SemaRef,
ResultBuilder &  Results 
) [static]

Add language constructs that show up for "ordinary" names.

while (condition) { statements }

Definition at line 1516 of file SemaCodeComplete.cpp.

References AddFunctionSpecifiers(), AddObjCExpressionResults(), AddObjCImplementationResults(), AddObjCInterfaceResults(), AddObjCStatementResults(), AddObjCTopLevelResults(), AddObjCVisibilityResults(), AddStorageSpecifiers(), addThisCompletion(), AddTypedefResult(), AddTypeSpecifierResults(), Builder, clang::CodeCompletionString::CK_Colon, clang::CodeCompletionString::CK_Equal, clang::CodeCompletionString::CK_HorizontalSpace, clang::CodeCompletionString::CK_LeftAngle, clang::CodeCompletionString::CK_LeftBrace, clang::CodeCompletionString::CK_LeftBracket, clang::CodeCompletionString::CK_LeftParen, clang::CodeCompletionString::CK_RightAngle, clang::CodeCompletionString::CK_RightBrace, clang::CodeCompletionString::CK_RightBracket, clang::CodeCompletionString::CK_RightParen, clang::CodeCompletionString::CK_SemiColon, clang::CodeCompletionString::CK_VerticalSpace, clang::CodeCompletionAllocator::CopyString(), clang::Sema::CurContext, clang::IdentifierTable::get(), clang::Sema::getASTContext(), clang::Scope::getBreakParent(), getCompletionPrintingPolicy(), clang::Scope::getContinueParent(), clang::Sema::getCurBlock(), clang::Sema::getCurFunction(), clang::Sema::getCurMethodDecl(), clang::Sema::getLangOpts(), clang::IdentifierInfo::hasMacroDefinition(), clang::ASTContext::Idents, clang::DeclContext::isDependentContext(), clang::QualType::isNull(), clang::Type::isVoidType(), clang::Sema::PCC_Class, clang::Sema::PCC_Condition, clang::Sema::PCC_Expression, clang::Sema::PCC_ForInit, clang::Sema::PCC_LocalDeclarationSpecifiers, clang::Sema::PCC_MemberTemplate, clang::Sema::PCC_Namespace, clang::Sema::PCC_ObjCImplementation, clang::Sema::PCC_ObjCInstanceVariableList, clang::Sema::PCC_ObjCInterface, clang::Sema::PCC_ParenthesizedExpression, clang::Sema::PCC_RecoveryInFunction, clang::Sema::PCC_Statement, clang::Sema::PCC_Template, clang::Sema::PCC_Type, clang::sema::CapturingScopeInfo::ReturnType, clang::sema::FunctionScopeInfo::SwitchStack, and WantTypesInContext().

Referenced by clang::Sema::CodeCompleteAfterIf(), clang::Sema::CodeCompleteExpression(), clang::Sema::CodeCompleteObjCPassingType(), and clang::Sema::CodeCompleteOrdinaryName().

static void AddPrettyFunctionResults ( const LangOptions LangOpts,
ResultBuilder &  Results 
) [static]
static void AddProtocolResults ( DeclContext Ctx,
DeclContext CurContext,
bool  OnlyForwardDeclarations,
ResultBuilder &  Results 
) [static]

Add all of the protocol declarations that we find in the given (translation unit) context.

Definition at line 5693 of file SemaCodeComplete.cpp.

References clang::DeclContext::decls().

Referenced by clang::Sema::CodeCompleteObjCProtocolDecl(), and clang::Sema::CodeCompleteObjCProtocolReferences().

static void AddQualifierToCompletionString ( CodeCompletionBuilder Result,
NestedNameSpecifier Qualifier,
bool  QualifierIsInformative,
ASTContext Context,
const PrintingPolicy Policy 
) [static]
static void AddResultTypeChunk ( ASTContext Context,
const PrintingPolicy Policy,
const NamedDecl ND,
CodeCompletionBuilder Result 
) [static]
static void AddStorageSpecifiers ( Sema::ParserCompletionContext  CCC,
const LangOptions LangOpts,
ResultBuilder &  Results 
) [static]

Definition at line 1349 of file SemaCodeComplete.cpp.

Referenced by AddOrdinaryNameResults().

static ObjCMethodDecl* AddSuperSendCompletion ( Sema S,
bool  NeedSuperKeyword,
ArrayRef< IdentifierInfo * >  SelIdents,
ResultBuilder &  Results 
) [static]
Parameters:
SThe semantic analysis object.
NeedSuperKeywordWhether we need to prefix this completion with the "super" keyword. Otherwise, we just need to provide the arguments.
SelIdentsThe identifiers in the selector that have already been provided as arguments for a send to "super".
ResultsThe set of results to augment.
Returns:
the Objective-C method declaration that would be invoked by this "super" completion. If NULL, no completion was added.

Definition at line 5106 of file SemaCodeComplete.cpp.

References AddResultTypeChunk(), Builder, clang::CCP_SuperCompletion, clang::CodeCompletionString::CK_HorizontalSpace, clang::Sema::Context, clang::ObjCMethodDecl::getClassInterface(), getCompletionPrintingPolicy(), clang::Sema::getCurMethodDecl(), clang::ObjCContainerDecl::getMethod(), clang::Selector::getNameForSlot(), clang::Selector::getNumArgs(), clang::ObjCMethodDecl::getSelector(), clang::ObjCInterfaceDecl::getSuperClass(), clang::ASTContext::hasSameUnqualifiedType(), clang::ObjCMethodDecl::isInstanceMethod(), clang::Selector::isUnarySelector(), clang::ObjCMethodDecl::isVariadic(), clang::ObjCInterfaceDecl::known_categories(), clang::ObjCMethodDecl::param_begin(), clang::ObjCMethodDecl::param_end(), and clang::ObjCMethodDecl::param_size().

Referenced by AddClassMessageCompletions(), clang::Sema::CodeCompleteObjCInstanceMessage(), and clang::Sema::CodeCompleteObjCMessageReceiver().

static void AddTemplateParameterChunks ( ASTContext Context,
const PrintingPolicy Policy,
const TemplateDecl Template,
CodeCompletionBuilder Result,
unsigned  MaxParameters = 0,
unsigned  Start = 0,
bool  InDefaultArg = false 
) [static]
static void addThisCompletion ( Sema S,
ResultBuilder &  Results 
) [static]
static void AddTypedefResult ( ResultBuilder &  Results) [static]
static void AddTypeSpecifierResults ( const LangOptions LangOpts,
ResultBuilder &  Results 
) [static]
static bool anyNullArguments ( ArrayRef< Expr * >  Args) [static]

Definition at line 3808 of file SemaCodeComplete.cpp.

Referenced by clang::Sema::CodeCompleteCall().

static void FindImplementableMethods ( ASTContext Context,
ObjCContainerDecl Container,
bool  WantInstanceMethods,
QualType  ReturnType,
KnownMethodsMap KnownMethods,
bool  InOriginalClass = true 
) [static]

Find all of the methods that reside in the given container (and its superclasses, protocols, etc.) that meet the given criteria. Insert those methods into the map of known methods, indexed by selector so they can be easily found.

Definition at line 6055 of file SemaCodeComplete.cpp.

References clang::ObjCList< T >::begin(), clang::ObjCList< T >::end(), clang::ASTContext::hasSameUnqualifiedType(), clang::QualType::isNull(), and clang::ObjCContainerDecl::methods().

Referenced by clang::Sema::CodeCompleteObjCMethodDecl().

static std::string FormatFunctionParameter ( ASTContext Context,
const PrintingPolicy Policy,
const ParmVarDecl Param,
bool  SuppressName = false,
bool  SuppressBlock = false 
) [static]
static std::string formatObjCParamQualifiers ( unsigned  ObjCQuals) [static]
static PrintingPolicy getCompletionPrintingPolicy ( const ASTContext Context,
const Preprocessor PP 
) [static]

Retrieve a printing policy suitable for code completion.

Definition at line 1460 of file SemaCodeComplete.cpp.

References clang::Sema::Context, getCompletionPrintingPolicy(), and clang::Sema::PP.

static const char* GetCompletionTypeString ( QualType  T,
ASTContext Context,
const PrintingPolicy Policy,
CodeCompletionAllocator Allocator 
) [static]

Retrieve the string representation of the given type as a string that has the appropriate lifetime for code completion.

This routine provides a fast path where we provide constant strings for common type names.

Definition at line 1469 of file SemaCodeComplete.cpp.

References clang::CodeCompletionAllocator::CopyString(), clang::QualType::getAsStringInternal(), clang::QualType::getLocalQualifiers(), clang::TTK_Class, clang::TTK_Enum, clang::TTK_Interface, clang::TTK_Struct, and clang::TTK_Union.

Referenced by AddObjCKeyValueCompletions(), AddObjCPassingTypeChunk(), AddResultTypeChunk(), addThisCompletion(), clang::Sema::CodeCompleteObjCPropertySynthesizeIvar(), and clang::CodeCompleteConsumer::OverloadCandidate::CreateSignatureString().

static ObjCContainerDecl* getContainerDef ( ObjCContainerDecl Container) [static]

Retrieve the container definition, if any?

Definition at line 3440 of file SemaCodeComplete.cpp.

Referenced by AddObjCMethods(), AddObjCProperties(), and clang::Sema::CodeCompleteObjCPropertyDefinition().

static QualType getPreferredArgumentTypeForMessageSend ( ResultBuilder &  Results,
unsigned  NumSelIdents 
) [static]

Given a set of code-completion results for the argument of a message send, determine the preferred type (if any) for that argument expression.

Definition at line 5311 of file SemaCodeComplete.cpp.

References clang::CCP_Unlikely, clang::ASTContext::hasSameUnqualifiedType(), clang::QualType::isNull(), and clang::ObjCMethodDecl::parameters().

Referenced by clang::Sema::CodeCompleteObjCClassMessage(), and clang::Sema::CodeCompleteObjCInstanceMessage().

static NestedNameSpecifier* getRequiredQualification ( ASTContext Context,
const DeclContext CurContext,
const DeclContext TargetContext 
) [static]

Compute the qualification required to get from the current context (CurContext) to the target context (TargetContext).

Parameters:
Contextthe AST context in which the qualification will be used.
CurContextthe context where an entity is being named, which is typically based on the current scope.
TargetContextthe context in which the named entity actually resides.
Returns:
a nested name specifier that refers into the target context, or NULL if no qualification is needed.

Definition at line 450 of file SemaCodeComplete.cpp.

References clang::NestedNameSpecifier::Create(), clang::DeclContext::Encloses(), clang::ASTContext::getTypeDeclType(), and clang::QualType::getTypePtr().

Referenced by clang::Sema::CodeCompleteCase(), and MaybeAddOverrideCalls().

static void HandleCodeCompleteResults ( Sema S,
CodeCompleteConsumer CodeCompleter,
CodeCompletionContext  Context,
CodeCompletionResult Results,
unsigned  NumResults 
) [static]

Definition at line 3022 of file SemaCodeComplete.cpp.

References clang::CodeCompleteConsumer::ProcessCodeCompleteResults().

Referenced by clang::Sema::CodeCompleteAfterIf(), clang::Sema::CodeCompleteCase(), clang::Sema::CodeCompleteConstructorInitializer(), clang::Sema::CodeCompleteDeclSpec(), clang::Sema::CodeCompleteExpression(), clang::Sema::CodeCompleteLambdaIntroducer(), clang::Sema::CodeCompleteMemberReferenceExpr(), clang::Sema::CodeCompleteModuleImport(), clang::Sema::CodeCompleteNamespaceAliasDecl(), clang::Sema::CodeCompleteNamespaceDecl(), clang::Sema::CodeCompleteNaturalLanguage(), clang::Sema::CodeCompleteObjCAtDirective(), clang::Sema::CodeCompleteObjCAtExpression(), clang::Sema::CodeCompleteObjCAtStatement(), clang::Sema::CodeCompleteObjCAtVisibility(), clang::Sema::CodeCompleteObjCClassMessage(), clang::Sema::CodeCompleteObjCImplementationCategory(), clang::Sema::CodeCompleteObjCImplementationDecl(), clang::Sema::CodeCompleteObjCInstanceMessage(), clang::Sema::CodeCompleteObjCInterfaceCategory(), clang::Sema::CodeCompleteObjCInterfaceDecl(), clang::Sema::CodeCompleteObjCMessageReceiver(), clang::Sema::CodeCompleteObjCMethodDecl(), clang::Sema::CodeCompleteObjCMethodDeclSelector(), clang::Sema::CodeCompleteObjCPassingType(), clang::Sema::CodeCompleteObjCPropertyDefinition(), clang::Sema::CodeCompleteObjCPropertyFlags(), clang::Sema::CodeCompleteObjCPropertyGetter(), clang::Sema::CodeCompleteObjCPropertySetter(), clang::Sema::CodeCompleteObjCPropertySynthesizeIvar(), clang::Sema::CodeCompleteObjCProtocolDecl(), clang::Sema::CodeCompleteObjCProtocolReferences(), clang::Sema::CodeCompleteObjCSelector(), clang::Sema::CodeCompleteObjCSuperclass(), clang::Sema::CodeCompleteOrdinaryName(), clang::Sema::CodeCompletePreprocessorDirective(), clang::Sema::CodeCompletePreprocessorExpression(), clang::Sema::CodeCompletePreprocessorMacroName(), clang::Sema::CodeCompleteQualifiedId(), clang::Sema::CodeCompleteTag(), clang::Sema::CodeCompleteTypeQualifiers(), clang::Sema::CodeCompleteUsing(), and clang::Sema::CodeCompleteUsingDirective().

static bool InheritsFromClassNamed ( ObjCInterfaceDecl Class,
StringRef  Name 
) [static]

Determine whether the given class is or inherits from a class by the given name.

Definition at line 6157 of file SemaCodeComplete.cpp.

References clang::NamedDecl::getIdentifier(), clang::IdentifierInfo::getName(), and clang::ObjCInterfaceDecl::getSuperClass().

Referenced by AddObjCKeyValueCompletions().

static bool isAcceptableObjCMethod ( ObjCMethodDecl Method,
ObjCMethodKind  WantKind,
ArrayRef< IdentifierInfo * >  SelIdents,
bool  AllowSameLength = true 
) [static]
static bool isAcceptableObjCSelector ( Selector  Sel,
ObjCMethodKind  WantKind,
ArrayRef< IdentifierInfo * >  SelIdents,
bool  AllowSameLength = true 
) [static]
static bool isNamespaceScope ( Scope S) [static]

Determine whether this scope denotes a namespace.

Definition at line 4316 of file SemaCodeComplete.cpp.

References clang::Scope::getEntity(), and clang::DeclContext::isFileContext().

Referenced by clang::Sema::CodeCompleteLambdaIntroducer().

static bool isObjCReceiverType ( ASTContext C,
QualType  T 
) [static]
static bool isReservedName ( const IdentifierInfo Id) [static]

Determine whether Id is a name reserved for the implementation (C99 7.1.3, C++ [lib.global.names]).

Definition at line 485 of file SemaCodeComplete.cpp.

References clang::IdentifierInfo::getLength(), and clang::IdentifierInfo::getNameStart().

static void MaybeAddOverrideCalls ( Sema S,
DeclContext InContext,
ResultBuilder &  Results 
) [static]

If we're in a C++ virtual member function, add completion results that invoke the functions we override, since it's common to invoke the overridden function as well as adding new functionality.

Parameters:
SThe semantic analysis object for which we are generating results.
InContextThis context in which the nested-name-specifier preceding the code-completion point

Definition at line 3095 of file SemaCodeComplete.cpp.

References clang::CXXMethodDecl::begin_overridden_methods(), Builder, clang::CCP_SuperCompletion, clang::CodeCompletionString::CK_Comma, clang::CodeCompletionString::CK_LeftParen, clang::CodeCompletionString::CK_RightParen, clang::Sema::Context, clang::Sema::CurContext, CXAvailability_Available, CXCursor_CXXMethod, clang::CXXMethodDecl::end_overridden_methods(), clang::DeclContext::Equals(), clang::CXXMethodDecl::getCanonicalDecl(), getCompletionPrintingPolicy(), clang::DeclContext::getParent(), getRequiredQualification(), clang::CXXMethodDecl::isVirtual(), P, clang::FunctionDecl::params(), and clang::NestedNameSpecifier::print().

Referenced by clang::Sema::CodeCompleteOrdinaryName(), and clang::Sema::CodeCompleteQualifiedId().

static void MaybeAddSentinel ( ASTContext Context,
const NamedDecl FunctionOrMethod,
CodeCompletionBuilder Result 
) [static]
static bool ObjCPropertyFlagConflicts ( unsigned  Attributes,
unsigned  NewFlag 
) [static]
static bool WantTypesInContext ( Sema::ParserCompletionContext  CCC,
const LangOptions LangOpts 
) [static]