NestedNameSpecifier;
61 unsignedQualifierDistance = 0)
62: CorrectionName(Name), CorrectionNameSpec(NNS),
63CharDistance(CharDistance), QualifierDistance(QualifierDistance) {
65CorrectionDecls.push_back(NameDecl);
69 unsignedCharDistance = 0)
70: CorrectionName(Name->getDeclName()), CorrectionNameSpec(NNS),
71CharDistance(CharDistance) {
73CorrectionDecls.push_back(Name);
77 unsignedCharDistance = 0)
78: CorrectionName(Name), CorrectionNameSpec(NNS),
79CharDistance(CharDistance) {}
92 returnCorrectionNameSpec;
96CorrectionNameSpec = NNS;
97ForceSpecifierReplacement = (NNS !=
nullptr);
101ForceSpecifierReplacement = ForceReplacement;
105 returnForceSpecifierReplacement;
109QualifierDistance = ED;
113CallbackDistance = ED;
147 returnhasCorrectionDecl() ? *(CorrectionDecls.begin()) :
nullptr;
153 return D?
D->getUnderlyingDecl() :
nullptr;
155 template<
classDeclClass>
162CorrectionDecls.clear();
167CorrectionDecls.clear();
173CorrectionDecls.clear();
174CorrectionDecls.insert(CorrectionDecls.begin(), Decls.begin(), Decls.end());
188 explicit operator bool()
const{
return bool(CorrectionName); }
195CorrectionDecls.clear();
196CorrectionDecls.push_back(
nullptr);
197ForceSpecifierReplacement =
true;
203 return!CorrectionDecls.empty() && CorrectionDecls.front() ==
nullptr;
207 template<std::
size_tStrLen>
213 bool isResolved()
const{
return!CorrectionDecls.empty(); }
216 returnCorrectionDecls.size() > 1;
222 if(ForceSpecifierReplacement && SS && !SS->
isEmpty())
227 returnCorrectionRange;
233 return isKeyword() ? CorrectionDecls.end() : CorrectionDecls.begin();
241 return isKeyword() ? CorrectionDecls.end() : CorrectionDecls.begin();
254ExtraDiagnostics.push_back(std::move(PD));
257 returnExtraDiagnostics;
261 boolhasCorrectionDecl()
const{
262 return(!
isKeyword() && !CorrectionDecls.empty());
266DeclarationName CorrectionName;
267NestedNameSpecifier *CorrectionNameSpec =
nullptr;
268SmallVector<NamedDecl *, 1> CorrectionDecls;
269 unsignedCharDistance = 0;
270 unsignedQualifierDistance = 0;
271 unsignedCallbackDistance = 0;
272SourceRange CorrectionRange;
273 boolForceSpecifierReplacement =
false;
274 boolRequiresImport =
false;
276std::vector<PartialDiagnostic> ExtraDiagnostics;
320 virtualstd::unique_ptr<CorrectionCandidateCallback>
clone() = 0;
358std::unique_ptr<CorrectionCandidateCallback>
clone()
override{
359 returnstd::make_unique<DefaultFilterCCC>(*
this);
375std::unique_ptr<CorrectionCandidateCallback>
clone()
override{
376 returnstd::make_unique<DeclFilterCCC>(*
this);
386 boolHasExplicitTemplateArgs,
390std::unique_ptr<CorrectionCandidateCallback>
clone()
override{
391 returnstd::make_unique<FunctionCallFilterCCC>(*
this);
396 boolHasExplicitTemplateArgs;
415std::unique_ptr<CorrectionCandidateCallback>
clone()
override{
416 returnstd::make_unique<NoTypoCorrectionCCC>(*
this);
Forward-declares and imports various common LLVM datatypes that clang wants to use unqualified.
Implements a partial diagnostic that can be emitted anwyhere in a DiagnosticBuilder stream.
Defines the clang::SourceLocation class and associated facilities.
Represents a C++ nested-name-specifier or a global scope specifier.
SourceLocation getBeginLoc() const
bool isEmpty() const
No scope specifier.
Base class for callback objects used by Sema::CorrectTypo to check the validity of a potential typo c...
bool WantExpressionKeywords
void setTypoName(const IdentifierInfo *II)
virtual unsigned RankCandidate(const TypoCorrection &candidate)
Method used by Sema::CorrectTypo to assign an "edit distance" rank to a candidate (where a lower valu...
NestedNameSpecifier * TypoNNS
virtual bool ValidateCandidate(const TypoCorrection &candidate)
Simple predicate used by the default RankCandidate to determine whether to return an edit distance of...
const IdentifierInfo * Typo
bool MatchesTypo(const TypoCorrection &candidate)
bool WantFunctionLikeCasts
virtual ~CorrectionCandidateCallback()=default
CorrectionCandidateCallback(const IdentifierInfo *Typo=nullptr, NestedNameSpecifier *TypoNNS=nullptr)
void setTypoNNS(NestedNameSpecifier *NNS)
static const unsigned InvalidDistance
bool WantRemainingKeywords
virtual std::unique_ptr< CorrectionCandidateCallback > clone()=0
Clone this CorrectionCandidateCallback.
DeclContext - This is used only as base class of specific decl types that can act as declaration cont...
Simple template class for restricting typo correction candidates to ones having a single Decl* of the...
DeclFilterCCC(const IdentifierInfo *Typo=nullptr, NestedNameSpecifier *TypoNNS=nullptr)
std::unique_ptr< CorrectionCandidateCallback > clone() override
Clone this CorrectionCandidateCallback.
bool ValidateCandidate(const TypoCorrection &candidate) override
Simple predicate used by the default RankCandidate to determine whether to return an edit distance of...
The name of a declaration.
IdentifierInfo * getAsIdentifierInfo() const
Retrieve the IdentifierInfo * stored in this declaration name, or null if this declaration name isn't...
std::unique_ptr< CorrectionCandidateCallback > clone() override
Clone this CorrectionCandidateCallback.
DefaultFilterCCC(const IdentifierInfo *Typo=nullptr, NestedNameSpecifier *TypoNNS=nullptr)
bool ValidateCandidate(const TypoCorrection &candidate) override
Simple predicate used by the default RankCandidate to determine whether to return an edit distance of...
std::unique_ptr< CorrectionCandidateCallback > clone() override
Clone this CorrectionCandidateCallback.
One of these records is kept for each identifier that is lexed.
bool isStr(const char(&Str)[StrLen]) const
Return true if this is the identifier for the specified string.
Keeps track of the various options that can be enabled, which controls the dialect of C or C++ that i...
MemberExpr - [C99 6.5.2.3] Structure and Union Members.
This represents a decl that may have a name.
Represents a C++ nested name specifier, such as "\::std::vector<int>::".
std::unique_ptr< CorrectionCandidateCallback > clone() override
Clone this CorrectionCandidateCallback.
bool ValidateCandidate(const TypoCorrection &candidate) override
Simple predicate used by the default RankCandidate to determine whether to return an edit distance of...
Sema - This implements semantic analysis and AST building for C.
A trivial tuple used to represent a source range.
void setBegin(SourceLocation b)
Simple class containing the result of Sema::CorrectTypo.
IdentifierInfo * getCorrectionAsIdentifierInfo() const
TypoCorrection(DeclarationName Name, NestedNameSpecifier *NNS=nullptr, unsigned CharDistance=0)
TypoCorrection(const DeclarationName &Name, NamedDecl *NameDecl, NestedNameSpecifier *NNS=nullptr, unsigned CharDistance=0, unsigned QualifierDistance=0)
void setCorrectionSpecifier(NestedNameSpecifier *NNS)
ArrayRef< PartialDiagnostic > getExtraDiagnostics() const
static const unsigned InvalidDistance
void addCorrectionDecl(NamedDecl *CDecl)
Add the given NamedDecl to the list of NamedDecls that are the declarations associated with the Decla...
TypoCorrection(NamedDecl *Name, NestedNameSpecifier *NNS=nullptr, unsigned CharDistance=0)
void setCorrectionDecls(ArrayRef< NamedDecl * > Decls)
Clears the list of NamedDecls and adds the given set.
std::string getAsString(const LangOptions &LO) const
static const unsigned MaximumDistance
bool requiresImport() const
Returns whether this typo correction is correcting to a declaration that was declared in a module tha...
const_decl_iterator begin() const
void setCorrectionRange(CXXScopeSpec *SS, const DeclarationNameInfo &TypoName)
NamedDecl * getCorrectionDecl() const
Gets the pointer to the declaration of the typo correction.
bool isKeyword(const char(&Str)[StrLen]) const
SourceRange getCorrectionRange() const
void setQualifierDistance(unsigned ED)
void WillReplaceSpecifier(bool ForceReplacement)
void setCallbackDistance(unsigned ED)
SmallVectorImpl< NamedDecl * >::const_iterator const_decl_iterator
static unsigned NormalizeEditDistance(unsigned ED)
DeclClass * getCorrectionDeclAs() const
const_decl_iterator end() const
DeclarationName getCorrection() const
Gets the DeclarationName of the typo correction.
unsigned getEditDistance(bool Normalized=true) const
Gets the "edit distance" of the typo correction from the typo.
void ClearCorrectionDecls()
Clears the list of NamedDecls.
static const unsigned CallbackDistanceWeight
NestedNameSpecifier * getCorrectionSpecifier() const
Gets the NestedNameSpecifier needed to use the typo correction.
static const unsigned QualifierDistanceWeight
SmallVectorImpl< NamedDecl * >::iterator decl_iterator
void setCorrectionDecl(NamedDecl *CDecl)
Clears the list of NamedDecls before adding the new one.
void setRequiresImport(bool Req)
std::string getQuoted(const LangOptions &LO) const
bool isOverloaded() const
static const unsigned CharDistanceWeight
bool WillReplaceSpecifier() const
NamedDecl * getFoundDecl() const
Get the correction declaration found by name lookup (before we looked through using shadow declaratio...
void addExtraDiagnostic(PartialDiagnostic PD)
Extra diagnostics are printed after the first diagnostic for the typo.
void makeKeyword()
Mark this TypoCorrection as being a keyword.
The JSON file list parser is used to communicate input to InstallAPI.
DeclarationNameInfo - A collector data type for bundling together a DeclarationName and the correspon...
SourceRange getSourceRange() const LLVM_READONLY
getSourceRange - The range of the declaration name.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4