clang
13.0.0git
|
Captures a result of code completion. More...
#include "clang/Sema/CodeCompleteConsumer.h"
Public Types | |
enum | ResultKind { RK_Declaration = 0, RK_Keyword, RK_Macro, RK_Pattern } |
Describes the kind of result generated. More... | |
Public Attributes | |
const NamedDecl * | Declaration = nullptr |
When Kind == RK_Declaration or RK_Pattern, the declaration we are referring to. More... | |
union { | |
const char * Keyword | |
When Kind == RK_Keyword, the string representing the keyword or symbol's spelling. More... | |
CodeCompletionString * Pattern | |
When Kind == RK_Pattern, the code-completion string that describes the completion text to insert. More... | |
const IdentifierInfo * Macro | |
When Kind == RK_Macro, the identifier that refers to a macro. More... | |
}; | |
unsigned | Priority |
The priority of this particular code-completion result. More... | |
unsigned | StartParameter = 0 |
Specifies which parameter (of a function, Objective-C method, macro, etc.) we should start with when formatting the result. More... | |
ResultKind | Kind |
The kind of result stored here. More... | |
CXCursorKind | CursorKind |
The cursor kind that describes this result. More... | |
CXAvailabilityKind | Availability = CXAvailability_Available |
The availability of this result. More... | |
std::vector< FixItHint > | FixIts |
Fix-its that must be applied before inserting the text for the corresponding completion. More... | |
bool | Hidden: 1 |
Whether this result is hidden by another name. More... | |
bool | InBaseClass: 1 |
Whether this is a class member from base class. More... | |
bool | QualifierIsInformative: 1 |
Whether this result was found via lookup into a base class. More... | |
bool | StartsNestedNameSpecifier: 1 |
Whether this declaration is the beginning of a nested-name-specifier and, therefore, should be followed by '::'. More... | |
bool | AllParametersAreInformative: 1 |
Whether all parameters (of a function, Objective-C method, etc.) should be considered "informative". More... | |
bool | DeclaringEntity: 1 |
Whether we're completing a declaration of the given entity, rather than a use of that entity. More... | |
NestedNameSpecifier * | Qualifier = nullptr |
If the result should have a nested-name-specifier, this is it. More... | |
const UsingShadowDecl * | ShadowDecl = nullptr |
If this Decl was unshadowed by using declaration, this can store a pointer to the UsingShadowDecl which was used in the unshadowing process. More... | |
const MacroInfo * | MacroDefInfo = nullptr |
If the result is RK_Macro, this can store the information about the macro definition. More... | |
Captures a result of code completion.
Definition at line 746 of file CodeCompleteConsumer.h.
Describes the kind of result generated.
Enumerator | |
---|---|
RK_Declaration | Refers to a declaration. |
RK_Keyword | Refers to a keyword or symbol. |
RK_Macro | Refers to a macro. |
RK_Pattern | Refers to a precomputed pattern. |
Definition at line 749 of file CodeCompleteConsumer.h.
|
inline |
Build a result that refers to a declaration.
Definition at line 864 of file CodeCompleteConsumer.h.
|
inline |
Build a result that refers to a keyword or symbol.
Definition at line 879 of file CodeCompleteConsumer.h.
|
inline |
Build a result that refers to a macro.
Definition at line 886 of file CodeCompleteConsumer.h.
|
inline |
Build a result that refers to a pattern.
Definition at line 896 of file CodeCompleteConsumer.h.
|
inline |
Build a result that refers to a pattern with an associated declaration.
Definition at line 909 of file CodeCompleteConsumer.h.
CodeCompletionString * CodeCompletionResult::CreateCodeCompletionString | ( | ASTContext & | Ctx, |
Preprocessor & | PP, | ||
const CodeCompletionContext & | CCContext, | ||
CodeCompletionAllocator & | Allocator, | ||
CodeCompletionTUInfo & | CCTUInfo, | ||
bool | IncludeBriefComments | ||
) |
If possible, create a new code completion string for the given result.
Definition at line 3340 of file SemaCodeComplete.cpp.
CodeCompletionString * CodeCompletionResult::CreateCodeCompletionString | ( | Sema & | S, |
const CodeCompletionContext & | CCContext, | ||
CodeCompletionAllocator & | Allocator, | ||
CodeCompletionTUInfo & | CCTUInfo, | ||
bool | IncludeBriefComments | ||
) |
Create a new code-completion string that describes how to insert this result into a program.
S | The semantic analysis that created the result. |
Allocator | The allocator that will be used to allocate the string itself. |
Definition at line 3280 of file SemaCodeComplete.cpp.
CodeCompletionString * CodeCompletionResult::createCodeCompletionStringForDecl | ( | Preprocessor & | PP, |
ASTContext & | Ctx, | ||
CodeCompletionBuilder & | Result, | ||
bool | IncludeBriefComments, | ||
const CodeCompletionContext & | CCContext, | ||
PrintingPolicy & | Policy | ||
) |
Definition at line 3427 of file SemaCodeComplete.cpp.
References AddFunctionParameterChunks(), AddFunctionTypeQualsToCompletionString(), AddQualifierToCompletionString(), AddResultTypeChunk(), AddTemplateParameterChunks(), AddTypedNameChunk(), clang::CodeCompletionString::CK_HorizontalSpace, clang::CodeCompletionString::CK_LeftAngle, clang::CodeCompletionString::CK_LeftParen, clang::CodeCompletionString::CK_RightAngle, clang::CodeCompletionString::CK_RightParen, extractFunctorCallOperator(), FormatFunctionParameter(), formatObjCParamQualifiers(), clang::QualType::getAsString(), clang::CodeCompletionContext::getBaseType(), clang::getCompletionComment(), clang::Decl::getDeclContext(), clang::Selector::getIdentifierInfoForSlot(), clang::NamedDecl::getName(), clang::NamedDecl::getNameAsString(), clang::Selector::getNameForSlot(), clang::Selector::getNumArgs(), clang::Type::getObjCSubstitutions(), clang::Type::isBlockPointerType(), clang::QualType::isNull(), clang::Selector::isUnarySelector(), clang::Sema::MarkDeducedTemplateParameters(), MaybeAddSentinel(), P, clang::Parameter, clang::Decl::specific_attrs(), string(), and clang::QualType::substObjCTypeArgs().
CodeCompletionString * CodeCompletionResult::CreateCodeCompletionStringForMacro | ( | Preprocessor & | PP, |
CodeCompletionAllocator & | Allocator, | ||
CodeCompletionTUInfo & | CCTUInfo | ||
) |
Creates a new code-completion string for the macro result.
Similar to the above overloads, except this only requires preprocessor information. The result kind must be RK_Macro
.
Definition at line 3288 of file SemaCodeComplete.cpp.
CodeCompletionString * CodeCompletionResult::createCodeCompletionStringForOverride | ( | Preprocessor & | PP, |
ASTContext & | Ctx, | ||
CodeCompletionBuilder & | Result, | ||
bool | IncludeBriefComments, | ||
const CodeCompletionContext & | CCContext, | ||
PrintingPolicy & | Policy | ||
) |
Definition at line 3396 of file SemaCodeComplete.cpp.
References clang::CodeCompletionString::CK_HorizontalSpace, printOverrideString(), and string().
|
inline |
Retrieve the declaration stored in this result.
This might be nullptr if Kind is RK_Pattern.
Definition at line 920 of file CodeCompleteConsumer.h.
References Declaration, Kind, RK_Declaration, and RK_Pattern.
|
inline |
Retrieve the keyword stored in this result.
Definition at line 927 of file CodeCompleteConsumer.h.
References Keyword, Kind, and RK_Keyword.
StringRef CodeCompletionResult::getOrderedName | ( | std::string & | Saved | ) | const |
Retrieve the name that should be used to order a result.
If the name needs to be constructed as a string, that string will be saved into Saved and the returned StringRef will refer to it.
Definition at line 726 of file CodeCompleteConsumer.cpp.
Referenced by clang::operator<().
union { ... } |
bool clang::CodeCompletionResult::AllParametersAreInformative |
Whether all parameters (of a function, Objective-C method, etc.) should be considered "informative".
Definition at line 841 of file CodeCompleteConsumer.h.
CXAvailabilityKind clang::CodeCompletionResult::Availability = CXAvailability_Available |
The availability of this result.
Definition at line 794 of file CodeCompleteConsumer.h.
CXCursorKind clang::CodeCompletionResult::CursorKind |
The cursor kind that describes this result.
Definition at line 791 of file CodeCompleteConsumer.h.
const NamedDecl* clang::CodeCompletionResult::Declaration = nullptr |
When Kind == RK_Declaration or RK_Pattern, the declaration we are referring to.
In the latter case, the declaration might be NULL.
Definition at line 765 of file CodeCompleteConsumer.h.
Referenced by getDeclaration().
bool clang::CodeCompletionResult::DeclaringEntity |
Whether we're completing a declaration of the given entity, rather than a use of that entity.
Definition at line 845 of file CodeCompleteConsumer.h.
std::vector<FixItHint> clang::CodeCompletionResult::FixIts |
Fix-its that must be applied before inserting the text for the corresponding completion.
By default, CodeCompletionBuilder only returns completions with empty fix-its. Extra completions with non-empty fix-its should be explicitly requested by setting CompletionOptions::IncludeFixIts.
For the clients to be able to compute position of the cursor after applying fix-its, the following conditions are guaranteed to hold for RemoveRange of the stored fix-its:
The intuition is that provided fix-its change code around the identifier we complete, but are not allowed to touch the identifier itself or the completion point. One example of completions with corrections are the ones replacing '.' with '->' and vice versa:
std::unique_ptr<std::vector<int>> vec_ptr; In 'vec_ptr.^', one of the completions is 'push_back', it requires replacing '.' with '->'. In 'vec_ptr->^', one of the completions is 'release', it requires replacing '->' with '.'.
Definition at line 824 of file CodeCompleteConsumer.h.
bool clang::CodeCompletionResult::Hidden |
Whether this result is hidden by another name.
Definition at line 827 of file CodeCompleteConsumer.h.
bool clang::CodeCompletionResult::InBaseClass |
Whether this is a class member from base class.
Definition at line 830 of file CodeCompleteConsumer.h.
Referenced by setInBaseClass().
const char* clang::CodeCompletionResult::Keyword |
When Kind == RK_Keyword, the string representing the keyword or symbol's spelling.
Definition at line 770 of file CodeCompleteConsumer.h.
Referenced by getKeyword().
ResultKind clang::CodeCompletionResult::Kind |
The kind of result stored here.
Definition at line 788 of file CodeCompleteConsumer.h.
Referenced by getDeclaration(), and getKeyword().
const IdentifierInfo* clang::CodeCompletionResult::Macro |
When Kind == RK_Macro, the identifier that refers to a macro.
Definition at line 777 of file CodeCompleteConsumer.h.
const MacroInfo* clang::CodeCompletionResult::MacroDefInfo = nullptr |
If the result is RK_Macro, this can store the information about the macro definition.
This should be set in most cases but can be missing when the macro has been undefined.
Definition at line 861 of file CodeCompleteConsumer.h.
CodeCompletionString* clang::CodeCompletionResult::Pattern |
When Kind == RK_Pattern, the code-completion string that describes the completion text to insert.
Definition at line 774 of file CodeCompleteConsumer.h.
unsigned clang::CodeCompletionResult::Priority |
The priority of this particular code-completion result.
Definition at line 781 of file CodeCompleteConsumer.h.
Referenced by setInBaseClass().
NestedNameSpecifier* clang::CodeCompletionResult::Qualifier = nullptr |
If the result should have a nested-name-specifier, this is it.
When QualifierIsInformative
, the nested-name-specifier is informative rather than required.
Definition at line 850 of file CodeCompleteConsumer.h.
bool clang::CodeCompletionResult::QualifierIsInformative |
Whether this result was found via lookup into a base class.
Definition at line 833 of file CodeCompleteConsumer.h.
const UsingShadowDecl* clang::CodeCompletionResult::ShadowDecl = nullptr |
If this Decl was unshadowed by using declaration, this can store a pointer to the UsingShadowDecl which was used in the unshadowing process.
This information can be used to uprank CodeCompletionResults / which have corresponding using decl::qualified::name;
nearby.
Definition at line 856 of file CodeCompleteConsumer.h.
unsigned clang::CodeCompletionResult::StartParameter = 0 |
Specifies which parameter (of a function, Objective-C method, macro, etc.) we should start with when formatting the result.
Definition at line 785 of file CodeCompleteConsumer.h.
bool clang::CodeCompletionResult::StartsNestedNameSpecifier |
Whether this declaration is the beginning of a nested-name-specifier and, therefore, should be followed by '::'.
Definition at line 837 of file CodeCompleteConsumer.h.