clang 22.0.0git
clang::SemaCodeCompletion Class Reference

#include "clang/Sema/SemaCodeCompletion.h"

Inheritance diagram for clang::SemaCodeCompletion:
[legend]

Classes

struct  CodeCompleteExpressionData

Public Types

enum  ParserCompletionContext {
  PCC_Namespace , PCC_Class , PCC_ObjCInterface , PCC_ObjCImplementation ,
  PCC_ObjCInstanceVariableList , PCC_Template , PCC_MemberTemplate , PCC_Expression ,
  PCC_Statement , PCC_ForInit , PCC_Condition , PCC_RecoveryInFunction ,
  PCC_Type , PCC_ParenthesizedExpression , PCC_LocalDeclarationSpecifiers , PCC_TopLevelOrExpression
}
 Describes the context in which code completion occurs. More...
enum class  AttributeCompletion { Attribute , Scope , None }
using TemplateTy = OpaquePtr<TemplateName>
using DeclGroupPtrTy = OpaquePtr<DeclGroupRef>

Public Member Functions

 SemaCodeCompletion (Sema &S, CodeCompleteConsumer *CompletionConsumer)
void CodeCompleteModuleImport (SourceLocation ImportLoc, ModuleIdPath Path)
void CodeCompleteOrdinaryName (Scope *S, ParserCompletionContext CompletionContext)
void CodeCompleteDeclSpec (Scope *S, DeclSpec &DS, bool AllowNonIdentifiers, bool AllowNestedNameSpecifiers)
void CodeCompleteExpression (Scope *S, const CodeCompleteExpressionData &Data)
 Perform code-completion in an expression context when we know what type we're looking for.
void CodeCompleteExpression (Scope *S, QualType PreferredType, bool IsParenthesized=false)
void CodeCompleteMemberReferenceExpr (Scope *S, Expr *Base, Expr *OtherOpBase, SourceLocation OpLoc, bool IsArrow, bool IsBaseExprStatement, QualType PreferredType)
void CodeCompletePostfixExpression (Scope *S, ExprResult LHS, QualType PreferredType)
void CodeCompleteTag (Scope *S, unsigned TagSpec)
void CodeCompleteTypeQualifiers (DeclSpec &DS)
void CodeCompleteFunctionQualifiers (DeclSpec &DS, Declarator &D, const VirtSpecifiers *VS=nullptr)
void CodeCompleteBracketDeclarator (Scope *S)
void CodeCompleteCase (Scope *S)
void CodeCompleteAttribute (AttributeCommonInfo::Syntax Syntax, AttributeCompletion Completion=AttributeCompletion::Attribute, const IdentifierInfo *Scope=nullptr)
QualType ProduceCallSignatureHelp (Expr *Fn, ArrayRef< Expr * > Args, SourceLocation OpenParLoc)
 Determines the preferred type of the current function argument, by examining the signatures of all possible overloads.
QualType ProduceConstructorSignatureHelp (QualType Type, SourceLocation Loc, ArrayRef< Expr * > Args, SourceLocation OpenParLoc, bool Braced)
QualType ProduceCtorInitMemberSignatureHelp (Decl *ConstructorDecl, CXXScopeSpec SS, ParsedType TemplateTypeTy, ArrayRef< Expr * > ArgExprs, IdentifierInfo *II, SourceLocation OpenParLoc, bool Braced)
QualType ProduceTemplateArgumentSignatureHelp (TemplateTy, ArrayRef< ParsedTemplateArgument >, SourceLocation LAngleLoc)
void CodeCompleteInitializer (Scope *S, Decl *D)
void CodeCompleteDesignator (const QualType BaseType, llvm::ArrayRef< Expr * > InitExprs, const Designation &D)
 Trigger code completion for a record of BaseType.
void CodeCompleteKeywordAfterIf (bool AfterExclaim) const
void CodeCompleteAfterIf (Scope *S, bool IsBracedThen)
void CodeCompleteQualifiedId (Scope *S, CXXScopeSpec &SS, bool EnteringContext, bool IsUsingDeclaration, QualType BaseType, QualType PreferredType)
void CodeCompleteUsing (Scope *S)
void CodeCompleteUsingDirective (Scope *S)
void CodeCompleteNamespaceDecl (Scope *S)
void CodeCompleteNamespaceAliasDecl (Scope *S)
void CodeCompleteOperatorName (Scope *S)
void CodeCompleteConstructorInitializer (Decl *Constructor, ArrayRef< CXXCtorInitializer * > Initializers)
void CodeCompleteLambdaIntroducer (Scope *S, LambdaIntroducer &Intro, bool AfterAmpersand)
void CodeCompleteAfterFunctionEquals (Declarator &D)
void CodeCompleteObjCAtDirective (Scope *S)
void CodeCompleteObjCAtVisibility (Scope *S)
void CodeCompleteObjCAtStatement (Scope *S)
void CodeCompleteObjCAtExpression (Scope *S)
void CodeCompleteObjCPropertyFlags (Scope *S, ObjCDeclSpec &ODS)
void CodeCompleteObjCPropertyGetter (Scope *S)
void CodeCompleteObjCPropertySetter (Scope *S)
void CodeCompleteObjCPassingType (Scope *S, ObjCDeclSpec &DS, bool IsParameter)
void CodeCompleteObjCMessageReceiver (Scope *S)
void CodeCompleteObjCSuperMessage (Scope *S, SourceLocation SuperLoc, ArrayRef< const IdentifierInfo * > SelIdents, bool AtArgumentExpression)
void CodeCompleteObjCClassMessage (Scope *S, ParsedType Receiver, ArrayRef< const IdentifierInfo * > SelIdents, bool AtArgumentExpression, bool IsSuper=false)
void CodeCompleteObjCInstanceMessage (Scope *S, Expr *Receiver, ArrayRef< const IdentifierInfo * > SelIdents, bool AtArgumentExpression, ObjCInterfaceDecl *Super=nullptr)
void CodeCompleteObjCForCollection (Scope *S, DeclGroupPtrTy IterationVar)
void CodeCompleteObjCSelector (Scope *S, ArrayRef< const IdentifierInfo * > SelIdents)
void CodeCompleteObjCProtocolReferences (ArrayRef< IdentifierLoc > Protocols)
void CodeCompleteObjCProtocolDecl (Scope *S)
void CodeCompleteObjCInterfaceDecl (Scope *S)
void CodeCompleteObjCClassForwardDecl (Scope *S)
void CodeCompleteObjCSuperclass (Scope *S, IdentifierInfo *ClassName, SourceLocation ClassNameLoc)
void CodeCompleteObjCImplementationDecl (Scope *S)
void CodeCompleteObjCInterfaceCategory (Scope *S, IdentifierInfo *ClassName, SourceLocation ClassNameLoc)
void CodeCompleteObjCImplementationCategory (Scope *S, IdentifierInfo *ClassName, SourceLocation ClassNameLoc)
void CodeCompleteObjCPropertyDefinition (Scope *S)
void CodeCompleteObjCPropertySynthesizeIvar (Scope *S, IdentifierInfo *PropertyName)
void CodeCompleteObjCMethodDecl (Scope *S, std::optional< bool > IsInstanceMethod, ParsedType ReturnType)
void CodeCompleteObjCMethodDeclSelector (Scope *S, bool IsInstanceMethod, bool AtParameterName, ParsedType ReturnType, ArrayRef< const IdentifierInfo * > SelIdents)
void CodeCompleteObjCClassPropertyRefExpr (Scope *S, const IdentifierInfo &ClassName, SourceLocation ClassNameLoc, bool IsBaseExprStatement)
void CodeCompletePreprocessorDirective (bool InConditional)
void CodeCompleteInPreprocessorConditionalExclusion (Scope *S)
void CodeCompletePreprocessorMacroName (bool IsDefinition)
void CodeCompletePreprocessorExpression ()
void CodeCompletePreprocessorMacroArgument (Scope *S, IdentifierInfo *Macro, MacroInfo *MacroInfo, unsigned Argument)
void CodeCompleteIncludedFile (llvm::StringRef Dir, bool IsAngled)
void CodeCompleteNaturalLanguage ()
void CodeCompleteAvailabilityPlatformName ()
void GatherGlobalCodeCompletions (CodeCompletionAllocator &Allocator, CodeCompletionTUInfo &CCTUInfo, SmallVectorImpl< CodeCompletionResult > &Results)
Public Member Functions inherited from clang::SemaBase
 SemaBase (Sema &S)
ASTContextgetASTContext () const
DiagnosticsEnginegetDiagnostics () const
const LangOptionsgetLangOpts () const
DeclContextgetCurContext () const
SemaDiagnosticBuilder Diag (SourceLocation Loc, unsigned DiagID, bool DeferHint=false)
 Emit a diagnostic.
SemaDiagnosticBuilder Diag (SourceLocation Loc, const PartialDiagnostic &PD, bool DeferHint=false)
 Emit a partial diagnostic.
SemaDiagnosticBuilder DiagCompat (SourceLocation Loc, unsigned CompatDiagId, bool DeferHint=false)
 Emit a compatibility diagnostic.
PartialDiagnostic PDiag (unsigned DiagID=0)
 Build a partial diagnostic.

Public Attributes

CodeCompleteConsumerCodeCompleter
 Code-completion consumer.
HeuristicResolver Resolver
Public Attributes inherited from clang::SemaBase
SemaSemaRef

Detailed Description

Definition at line 38 of file SemaCodeCompletion.h.

Member Typedef Documentation

◆ DeclGroupPtrTy

◆ TemplateTy

Member Enumeration Documentation

◆ AttributeCompletion

Enumerator
Attribute 
Scope 
None 

Definition at line 119 of file SemaCodeCompletion.h.

◆ ParserCompletionContext

Describes the context in which code completion occurs.

Enumerator
PCC_Namespace 

Code completion occurs at top-level or namespace context.

PCC_Class 

Code completion occurs within a class, struct, or union.

PCC_ObjCInterface 

Code completion occurs within an Objective-C interface, protocol, or category.

PCC_ObjCImplementation 

Code completion occurs within an Objective-C implementation or category implementation.

PCC_ObjCInstanceVariableList 

Code completion occurs within the list of instance variables in an Objective-C interface, protocol, category, or implementation.

PCC_Template 

Code completion occurs following one or more template headers.

PCC_MemberTemplate 

Code completion occurs following one or more template headers within a class.

PCC_Expression 

Code completion occurs within an expression.

PCC_Statement 

Code completion occurs within a statement, which may also be an expression or a declaration.

PCC_ForInit 

Code completion occurs at the beginning of the initialization statement (or expression) in a for loop.

PCC_Condition 

Code completion occurs within the condition of an if, while, switch, or for statement.

PCC_RecoveryInFunction 

Code completion occurs within the body of a function on a recovery path, where we do not have a specific handle on our position in the grammar.

PCC_Type 

Code completion occurs where only a type is permitted.

PCC_ParenthesizedExpression 

Code completion occurs in a parenthesized expression, which might also be a type cast.

PCC_LocalDeclarationSpecifiers 

Code completion occurs within a sequence of declaration specifiers within a function, method, or block.

PCC_TopLevelOrExpression 

Code completion occurs at top-level in a REPL session.

Definition at line 50 of file SemaCodeCompletion.h.

Constructor & Destructor Documentation

◆ SemaCodeCompletion()

SemaCodeCompletion::SemaCodeCompletion ( Sema & S,
CodeCompleteConsumer * CompletionConsumer )

Member Function Documentation

◆ CodeCompleteAfterFunctionEquals()

◆ CodeCompleteAfterIf()

◆ CodeCompleteAttribute()

◆ CodeCompleteAvailabilityPlatformName()

void SemaCodeCompletion::CodeCompleteAvailabilityPlatformName ( )

◆ CodeCompleteBracketDeclarator()

void SemaCodeCompletion::CodeCompleteBracketDeclarator ( Scope * S)

◆ CodeCompleteCase()

◆ CodeCompleteConstructorInitializer()

◆ CodeCompleteDeclSpec()

◆ CodeCompleteDesignator()

void SemaCodeCompletion::CodeCompleteDesignator ( const QualType BaseType,
llvm::ArrayRef< Expr * > InitExprs,
const Designation & D )

Trigger code completion for a record of BaseType.

InitExprs are expressions in the initializer list seen so far and D is the current Designation being parsed.

Definition at line 6745 of file SemaCodeComplete.cpp.

References clang::CodeCompletionContext::CCC_DotMemberAccess, CodeCompleter, getAsRecordDecl(), getDesignatedType(), HandleCodeCompleteResults(), Resolver, clang::Result, and clang::SemaBase::SemaRef.

◆ CodeCompleteExpression() [1/2]

◆ CodeCompleteExpression() [2/2]

void SemaCodeCompletion::CodeCompleteExpression ( Scope * S,
QualType PreferredType,
bool IsParenthesized = false )

Definition at line 5144 of file SemaCodeComplete.cpp.

References CodeCompleteExpression(), and Scope.

◆ CodeCompleteFunctionQualifiers()

◆ CodeCompleteIncludedFile()

◆ CodeCompleteInitializer()

void SemaCodeCompletion::CodeCompleteInitializer ( Scope * S,
Decl * D )

◆ CodeCompleteInPreprocessorConditionalExclusion()

void SemaCodeCompletion::CodeCompleteInPreprocessorConditionalExclusion ( Scope * S)

◆ CodeCompleteKeywordAfterIf()

◆ CodeCompleteLambdaIntroducer()

◆ CodeCompleteMemberReferenceExpr()

◆ CodeCompleteModuleImport()

◆ CodeCompleteNamespaceAliasDecl()

void SemaCodeCompletion::CodeCompleteNamespaceAliasDecl ( Scope * S)

◆ CodeCompleteNamespaceDecl()

◆ CodeCompleteNaturalLanguage()

void SemaCodeCompletion::CodeCompleteNaturalLanguage ( )

◆ CodeCompleteObjCAtDirective()

◆ CodeCompleteObjCAtExpression()

void SemaCodeCompletion::CodeCompleteObjCAtExpression ( Scope * S)

◆ CodeCompleteObjCAtStatement()

◆ CodeCompleteObjCAtVisibility()

◆ CodeCompleteObjCClassForwardDecl()

◆ CodeCompleteObjCClassMessage()

◆ CodeCompleteObjCClassPropertyRefExpr()

void SemaCodeCompletion::CodeCompleteObjCClassPropertyRefExpr ( Scope * S,
const IdentifierInfo & ClassName,
SourceLocation ClassNameLoc,
bool IsBaseExprStatement )

◆ CodeCompleteObjCForCollection()

◆ CodeCompleteObjCImplementationCategory()

◆ CodeCompleteObjCImplementationDecl()

◆ CodeCompleteObjCInstanceMessage()

◆ CodeCompleteObjCInterfaceCategory()

◆ CodeCompleteObjCInterfaceDecl()

◆ CodeCompleteObjCMessageReceiver()

◆ CodeCompleteObjCMethodDecl()

◆ CodeCompleteObjCMethodDeclSelector()

void SemaCodeCompletion::CodeCompleteObjCMethodDeclSelector ( Scope * S,
bool IsInstanceMethod,
bool AtParameterName,
ParsedType ReturnType,
ArrayRef< const IdentifierInfo * > SelIdents )

◆ CodeCompleteObjCPassingType()

◆ CodeCompleteObjCPropertyDefinition()

◆ CodeCompleteObjCPropertyFlags()

◆ CodeCompleteObjCPropertyGetter()

void SemaCodeCompletion::CodeCompleteObjCPropertyGetter ( Scope * S)

◆ CodeCompleteObjCPropertySetter()

void SemaCodeCompletion::CodeCompleteObjCPropertySetter ( Scope * S)

◆ CodeCompleteObjCPropertySynthesizeIvar()

◆ CodeCompleteObjCProtocolDecl()

◆ CodeCompleteObjCProtocolReferences()

◆ CodeCompleteObjCSelector()

◆ CodeCompleteObjCSuperclass()

◆ CodeCompleteObjCSuperMessage()

◆ CodeCompleteOperatorName()

◆ CodeCompleteOrdinaryName()

◆ CodeCompletePostfixExpression()

◆ CodeCompletePreprocessorDirective()

◆ CodeCompletePreprocessorExpression()

◆ CodeCompletePreprocessorMacroArgument()

void SemaCodeCompletion::CodeCompletePreprocessorMacroArgument ( Scope * S,
IdentifierInfo * Macro,
MacroInfo * MacroInfo,
unsigned Argument )

Definition at line 10366 of file SemaCodeComplete.cpp.

References clang::Macro, and Scope.

◆ CodeCompletePreprocessorMacroName()

◆ CodeCompleteQualifiedId()

◆ CodeCompleteTag()

◆ CodeCompleteTypeQualifiers()

◆ CodeCompleteUsing()

◆ CodeCompleteUsingDirective()

void SemaCodeCompletion::CodeCompleteUsingDirective ( Scope * S)

◆ GatherGlobalCodeCompletions()

◆ ProduceCallSignatureHelp()

QualType SemaCodeCompletion::ProduceCallSignatureHelp ( Expr * Fn,
ArrayRef< Expr * > Args,
SourceLocation OpenParLoc )

Determines the preferred type of the current function argument, by examining the signatures of all possible overloads.

Returns null if unknown or ambiguous, or if code completion is off.

If the code completion point has been reached, also reports the function signatures that were considered.

FIXME: rename to GuessCallArgumentType to reduce confusion.

Definition at line 6386 of file SemaCodeComplete.cpp.

References anyNullArguments(), clang::UnresolvedSetImpl::append(), clang::LookupResult::asUnresolvedSet(), CodeCompleter, clang::CPlusPlus, clang::OverloadCandidateSet::CSK_CodeCompletion, clang::OverloadCandidateSet::empty(), clang::Decl::getAccess(), clang::Type::getAs(), clang::Type::getAsCXXRecordDecl(), clang::SemaBase::getASTContext(), clang::SemaBase::getLangOpts(), clang::Expr::getType(), clang::ValueDecl::getType(), clang::Expr::isTypeDependent(), clang::Sema::LookupOrdinaryName, clang::DeclAccessPair::make(), mergeCandidatesWithResults(), ProduceSignatureHelp(), Resolver, clang::SemaBase::SemaRef, clang::LookupResult::suppressDiagnostics(), and clang::T.

◆ ProduceConstructorSignatureHelp()

◆ ProduceCtorInitMemberSignatureHelp()

QualType SemaCodeCompletion::ProduceCtorInitMemberSignatureHelp ( Decl * ConstructorDecl,
CXXScopeSpec SS,
ParsedType TemplateTypeTy,
ArrayRef< Expr * > ArgExprs,
IdentifierInfo * II,
SourceLocation OpenParLoc,
bool Braced )

◆ ProduceTemplateArgumentSignatureHelp()

QualType SemaCodeCompletion::ProduceTemplateArgumentSignatureHelp ( TemplateTy ParsedTemplate,
ArrayRef< ParsedTemplateArgument > Args,
SourceLocation LAngleLoc )

Member Data Documentation

◆ CodeCompleter

CodeCompleteConsumer* clang::SemaCodeCompletion::CodeCompleter

Code-completion consumer.

Definition at line 46 of file SemaCodeCompletion.h.

Referenced by AddRecordMembersCompletionResults(), CodeCompleteAfterFunctionEquals(), CodeCompleteAfterIf(), CodeCompleteAttribute(), CodeCompleteAvailabilityPlatformName(), CodeCompleteCase(), CodeCompleteConstructorInitializer(), CodeCompleteDeclSpec(), CodeCompleteDesignator(), CodeCompleteExpression(), CodeCompleteFunctionQualifiers(), CodeCompleteIncludedFile(), CodeCompleteKeywordAfterIf(), CodeCompleteLambdaIntroducer(), CodeCompleteMemberReferenceExpr(), CodeCompleteModuleImport(), CodeCompleteNamespaceAliasDecl(), CodeCompleteNamespaceDecl(), CodeCompleteNaturalLanguage(), CodeCompleteObjCAtDirective(), CodeCompleteObjCAtExpression(), CodeCompleteObjCAtStatement(), CodeCompleteObjCAtVisibility(), CodeCompleteObjCClassForwardDecl(), CodeCompleteObjCClassMessage(), CodeCompleteObjCClassPropertyRefExpr(), CodeCompleteObjCImplementationCategory(), CodeCompleteObjCImplementationDecl(), CodeCompleteObjCInstanceMessage(), CodeCompleteObjCInterfaceCategory(), CodeCompleteObjCInterfaceDecl(), CodeCompleteObjCMessageReceiver(), CodeCompleteObjCMethodDecl(), CodeCompleteObjCMethodDeclSelector(), CodeCompleteObjCPassingType(), CodeCompleteObjCPropertyDefinition(), CodeCompleteObjCPropertyFlags(), CodeCompleteObjCPropertyGetter(), CodeCompleteObjCPropertySetter(), CodeCompleteObjCPropertySynthesizeIvar(), CodeCompleteObjCProtocolDecl(), CodeCompleteObjCProtocolReferences(), CodeCompleteObjCSelector(), CodeCompleteObjCSuperclass(), CodeCompleteOperatorName(), CodeCompleteOrdinaryName(), CodeCompletePreprocessorDirective(), CodeCompletePreprocessorExpression(), CodeCompletePreprocessorMacroName(), CodeCompleteQualifiedId(), CodeCompleteTag(), CodeCompleteTypeQualifiers(), CodeCompleteUsing(), CodeCompleteUsingDirective(), GatherGlobalCodeCompletions(), ProduceCallSignatureHelp(), ProduceConstructorSignatureHelp(), ProduceCtorInitMemberSignatureHelp(), ProduceSignatureHelp(), ProduceTemplateArgumentSignatureHelp(), and SemaCodeCompletion().

◆ Resolver


The documentation for this class was generated from the following files: