clang 10.0.0git

Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | List of all members
clang::TypoCorrection Class Reference

Simple class containing the result of Sema::CorrectTypo. More...

`#include "clang/Sema/TypoCorrection.h"`

Collaboration diagram for clang::TypoCorrection:
[legend]

## Public Types
using | decl_iterator = SmallVectorImpl< NamedDecl * >::iterator
using | const_decl_iterator = SmallVectorImpl< NamedDecl * >::const_iterator

## Public Member Functions
| TypoCorrection (const DeclarationName &Name, NamedDecl *NameDecl, NestedNameSpecifier *NNS=nullptr, unsigned CharDistance=0, unsigned QualifierDistance=0)
| TypoCorrection (NamedDecl *Name, NestedNameSpecifier *NNS=nullptr, unsigned CharDistance=0)
| TypoCorrection (DeclarationName Name, NestedNameSpecifier *NNS=nullptr, unsigned CharDistance=0)
| TypoCorrection ()=default
DeclarationName | getCorrection () const
| Gets the DeclarationName of the typo correction. More...
IdentifierInfo * | getCorrectionAsIdentifierInfo () const
NestedNameSpecifier * | getCorrectionSpecifier () const
| Gets the NestedNameSpecifier needed to use the typo correction. More...
void | setCorrectionSpecifier (NestedNameSpecifier *NNS)
void | WillReplaceSpecifier (bool ForceReplacement)
bool | WillReplaceSpecifier () const
void | setQualifierDistance (unsigned ED)
void | setCallbackDistance (unsigned ED)
unsigned | getEditDistance (bool Normalized=true) const
| Gets the "edit distance" of the typo correction from the typo. More...
NamedDecl * | getFoundDecl () const
| Get the correction declaration found by name lookup (before we looked through using shadow declarations and the like). More...
NamedDecl * | getCorrectionDecl () const
| Gets the pointer to the declaration of the typo correction. More...
template<class DeclClass >
DeclClass * | getCorrectionDeclAs () const
void | ClearCorrectionDecls ()
| Clears the list of NamedDecls. More...
void | setCorrectionDecl (NamedDecl *CDecl)
| Clears the list of NamedDecls before adding the new one. More...
void | setCorrectionDecls (ArrayRef< NamedDecl *> Decls)
| Clears the list of NamedDecls and adds the given set. More...
void | addCorrectionDecl (NamedDecl *CDecl)
| Add the given NamedDecl to the list of NamedDecls that are the declarations associated with the DeclarationName of this TypoCorrection. More...
std::string | getAsString (const LangOptions &LO) const
std::string | getQuoted (const LangOptions &LO) const
| operator bool () const
| Returns whether this TypoCorrection has a non-empty DeclarationName. More...
void | makeKeyword ()
| Mark this TypoCorrection as being a keyword. More...
bool | isKeyword () const
template<std::size_t StrLen>
bool | isKeyword (const char(&Str)[StrLen]) const
bool | isResolved () const
bool | isOverloaded () const
void | setCorrectionRange (CXXScopeSpec *SS, const DeclarationNameInfo &TypoName)
SourceRange | getCorrectionRange () const
decl_iterator | begin ()
decl_iterator | end ()
const_decl_iterator | begin () const
const_decl_iterator | end () const
bool | requiresImport () const
| Returns whether this typo correction is correcting to a declaration that was declared in a module that has not been imported. More...
void | setRequiresImport (bool Req)
void | addExtraDiagnostic (PartialDiagnostic PD)
| Extra diagnostics are printed after the first diagnostic for the typo. More...
ArrayRef< PartialDiagnostic > | getExtraDiagnostics () const

## Static Public Member Functions
static unsigned | NormalizeEditDistance (unsigned ED)

## Static Public Attributes
static const unsigned | InvalidDistance = std::numeric_limits<unsigned>::max()
static const unsigned | MaximumDistance = 10000U
static const unsigned | CharDistanceWeight = 100U
static const unsigned | QualifierDistanceWeight = 110U
static const unsigned | CallbackDistanceWeight = 150U

## Detailed Description

Simple class containing the result of Sema::CorrectTypo.

Definition at line 42 of file TypoCorrection.h.

## Member Typedef Documentation

## ◆ const_decl_iterator

using clang::TypoCorrection::const_decl_iterator = SmallVectorImpl<NamedDecl *>::const_iterator

Definition at line 238 of file TypoCorrection.h.

## ◆ decl_iterator

using clang::TypoCorrection::decl_iterator = SmallVectorImpl<NamedDecl *>::iterator

Definition at line 230 of file TypoCorrection.h.

## Constructor & Destructor Documentation

## ◆ TypoCorrection() [1/4]

clang::TypoCorrection::TypoCorrection | ( | const DeclarationName & | Name,
|  | NamedDecl * | NameDecl,
|  | NestedNameSpecifier * | NNS = `nullptr`,
|  | unsigned | CharDistance = `0`,
|  | unsigned | QualifierDistance = `0`
| ) |  |
| inline

Definition at line 59 of file TypoCorrection.h.

## ◆ TypoCorrection() [2/4]

clang::TypoCorrection::TypoCorrection | ( | NamedDecl * | Name,
|  | NestedNameSpecifier * | NNS = `nullptr`,
|  | unsigned | CharDistance = `0`
| ) |  |
| inline

Definition at line 68 of file TypoCorrection.h.

## ◆ TypoCorrection() [3/4]

clang::TypoCorrection::TypoCorrection | ( | DeclarationName | Name,
|  | NestedNameSpecifier * | NNS = `nullptr`,
|  | unsigned | CharDistance = `0`
| ) |  |
| inline

Definition at line 76 of file TypoCorrection.h.

## ◆ TypoCorrection() [4/4]

clang::TypoCorrection::TypoCorrection | ( |  | ) |
| default

## Member Function Documentation

## ◆ addCorrectionDecl()

void TypoCorrection::addCorrectionDecl | ( | NamedDecl * | CDecl | ) |

Add the given NamedDecl to the list of NamedDecls that are the declarations associated with the DeclarationName of this TypoCorrection.

Definition at line 5168 of file SemaLookup.cpp.

References clang::NamedDecl::getDeclName().

Referenced by setCorrectionDecl(), and setCorrectionDecls().

## ◆ addExtraDiagnostic()

void clang::TypoCorrection::addExtraDiagnostic | ( | PartialDiagnostic | PD | ) |
| inline

Extra diagnostics are printed after the first diagnostic for the typo.

This can be used to attach external notes to the diag.

Definition at line 253 of file TypoCorrection.h.

## ◆ begin() [1/2]

decl_iterator clang::TypoCorrection::begin | ( |  | ) |
| inline

Definition at line 232 of file TypoCorrection.h.

References isKeyword().

Referenced by checkCorrectionVisibility(), and clang::TypoCorrectionConsumer::getNextCorrection().

## ◆ begin() [2/2]

const_decl_iterator clang::TypoCorrection::begin | ( |  | ) | const
| inline

Definition at line 240 of file TypoCorrection.h.

References isKeyword().

## ◆ ClearCorrectionDecls()

void clang::TypoCorrection::ClearCorrectionDecls | ( |  | ) |
| inline

Clears the list of NamedDecls.

Definition at line 161 of file TypoCorrection.h.

## ◆ end() [1/2]

decl_iterator clang::TypoCorrection::end | ( |  | ) |
| inline

Definition at line 236 of file TypoCorrection.h.

Referenced by checkCorrectionVisibility().

## ◆ end() [2/2]

const_decl_iterator clang::TypoCorrection::end | ( |  | ) | const
| inline

Definition at line 244 of file TypoCorrection.h.

## ◆ getAsString()

std::string TypoCorrection::getAsString | ( | const LangOptions & | LO | ) | const

Definition at line 5180 of file SemaLookup.cpp.

Referenced by clang::Sema::diagnoseTypo(), getQuoted(), and setCorrectionDecls().

## ◆ getCorrection()

DeclarationName clang::TypoCorrection::getCorrection | ( |  | ) | const
| inline

Gets the DeclarationName of the typo correction.

Definition at line 84 of file TypoCorrection.h.

## ◆ getCorrectionAsIdentifierInfo()

IdentifierInfo* clang::TypoCorrection::getCorrectionAsIdentifierInfo | ( |  | ) | const
| inline

Definition at line 86 of file TypoCorrection.h.

References clang::DeclarationName::getAsIdentifierInfo().

Referenced by clang::TypoCorrectionConsumer::getNextCorrection(), and isKeyword().

## ◆ getCorrectionDecl()

NamedDecl* clang::TypoCorrection::getCorrectionDecl | ( |  | ) | const
| inline

Gets the pointer to the declaration of the typo correction.

Definition at line 151 of file TypoCorrection.h.

References getFoundDecl().

Referenced by clang::Sema::CheckQualifiedMemberReference(), clang::Sema::containsUnexpandedParameterPacks(), clang::Sema::EndOpenMPDSABlock(), getCorrectionDeclAs(), IsUsingDirectiveInToplevelContext(), and clang::FunctionCallFilterCCC::ValidateCandidate().

## ◆ getCorrectionDeclAs()

template<class DeclClass >

DeclClass* clang::TypoCorrection::getCorrectionDeclAs | ( |  | ) | const
| inline

Definition at line 156 of file TypoCorrection.h.

References getCorrectionDecl().

Referenced by clang::Sema::ActOnStartClassImplementation(), clang::Sema::ActOnStartOfObjCMethodDef(), CloneDesignatedInitExpr(), clang::Sema::FindProtocolDeclaration(), and clang::DeclFilterCCC< C >::ValidateCandidate().

## ◆ getCorrectionRange()

SourceRange clang::TypoCorrection::getCorrectionRange | ( |  | ) | const
| inline

Definition at line 226 of file TypoCorrection.h.

Referenced by attemptRecovery(), and clang::Sema::diagnoseTypo().

## ◆ getCorrectionSpecifier()

NestedNameSpecifier* clang::TypoCorrection::getCorrectionSpecifier | ( |  | ) | const
| inline

Gets the NestedNameSpecifier needed to use the typo correction.

Definition at line 91 of file TypoCorrection.h.

Referenced by attemptRecovery().

## ◆ getEditDistance()

unsigned clang::TypoCorrection::getEditDistance | ( | bool | Normalized = `true` | ) | const
| inline

Gets the "edit distance" of the typo correction from the typo.

If Normalized is true, scale the distance down by the CharDistanceWeight to return the edit distance in terms of single-character edits.

Definition at line 128 of file TypoCorrection.h.

References CallbackDistanceWeight, InvalidDistance, and NormalizeEditDistance().

Referenced by isCandidateViable().

## ◆ getExtraDiagnostics()

ArrayRef<PartialDiagnostic> clang::TypoCorrection::getExtraDiagnostics | ( |  | ) | const
| inline

Definition at line 256 of file TypoCorrection.h.

References isKeyword().

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

## ◆ getFoundDecl()

NamedDecl* clang::TypoCorrection::getFoundDecl | ( |  | ) | const
| inline

Get the correction declaration found by name lookup (before we looked through using shadow declarations and the like).

Definition at line 146 of file TypoCorrection.h.

Referenced by attemptRecovery(), clang::Sema::diagnoseTypo(), and getCorrectionDecl().

## ◆ getQuoted()

std::string clang::TypoCorrection::getQuoted | ( | const LangOptions & | LO | ) | const
| inline

Definition at line 183 of file TypoCorrection.h.

References getAsString().

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

## ◆ isKeyword() [1/2]

bool clang::TypoCorrection::isKeyword | ( |  | ) | const
| inline

Definition at line 202 of file TypoCorrection.h.

Referenced by begin(), clang::Sema::diagnoseTypo(), getExtraDiagnostics(), isKeyword(), clang::CorrectionCandidateCallback::ValidateCandidate(), and clang::FunctionCallFilterCCC::ValidateCandidate().

## ◆ isKeyword() [2/2]

template<std::size_t StrLen>

bool clang::TypoCorrection::isKeyword | ( | const char(&) | Str[StrLen] | ) | const
| inline

Definition at line 208 of file TypoCorrection.h.

References getCorrectionAsIdentifierInfo(), isKeyword(), and clang::IdentifierInfo::isStr().

## ◆ isOverloaded()

bool clang::TypoCorrection::isOverloaded | ( |  | ) | const
| inline

Definition at line 215 of file TypoCorrection.h.

## ◆ isResolved()

bool clang::TypoCorrection::isResolved | ( |  | ) | const
| inline

Definition at line 213 of file TypoCorrection.h.

Referenced by clang::TypoCorrectionConsumer::getNextCorrection(), and clang::CorrectionCandidateCallback::ValidateCandidate().

## ◆ makeKeyword()

void clang::TypoCorrection::makeKeyword | ( |  | ) |
| inline

Mark this TypoCorrection as being a keyword.

Since addCorrectionDeclsand setCorrectionDecl don't allow NULL to be added to the list of the correction's NamedDecl pointers, NULL is added as the only element in the list to mark this TypoCorrection as a keyword.

Definition at line 194 of file TypoCorrection.h.

## ◆ NormalizeEditDistance()

static unsigned clang::TypoCorrection::NormalizeEditDistance | ( | unsigned | ED | ) |
| inline static

Definition at line 119 of file TypoCorrection.h.

References CharDistanceWeight, and InvalidDistance.

Referenced by clang::TypoCorrectionConsumer::getBestEditDistance(), and getEditDistance().

## ◆ operator bool()

clang::TypoCorrection::operator bool | ( |  | ) | const
| inline explicit

Returns whether this TypoCorrection has a non-empty DeclarationName.

Definition at line 188 of file TypoCorrection.h.

References bool.

## ◆ requiresImport()

bool clang::TypoCorrection::requiresImport | ( |  | ) | const
| inline

Returns whether this typo correction is correcting to a declaration that was declared in a module that has not been imported.

Definition at line 248 of file TypoCorrection.h.

Referenced by clang::Sema::diagnoseTypo(), and clang::TypoCorrectionConsumer::getNextCorrection().

## ◆ setCallbackDistance()

void clang::TypoCorrection::setCallbackDistance | ( | unsigned | ED | ) |
| inline

Definition at line 112 of file TypoCorrection.h.

Referenced by isCandidateViable().

## ◆ setCorrectionDecl()

void clang::TypoCorrection::setCorrectionDecl | ( | NamedDecl * | CDecl | ) |
| inline

Clears the list of NamedDecls before adding the new one.

Definition at line 166 of file TypoCorrection.h.

References addCorrectionDecl().

Referenced by attemptRecovery().

## ◆ setCorrectionDecls()

void clang::TypoCorrection::setCorrectionDecls | ( | ArrayRef< NamedDecl *> | Decls | ) |
| inline

Clears the list of NamedDecls and adds the given set.

Definition at line 172 of file TypoCorrection.h.

References addCorrectionDecl(), and getAsString().

Referenced by checkCorrectionVisibility().

## ◆ setCorrectionRange()

void clang::TypoCorrection::setCorrectionRange | ( | CXXScopeSpec * | SS,
|  | const DeclarationNameInfo & | TypoName
| ) |  |
| inline

Definition at line 219 of file TypoCorrection.h.

References clang::CXXScopeSpec::getBeginLoc(), clang::DeclarationNameInfo::getSourceRange(), clang::CXXScopeSpec::isEmpty(), and clang::SourceRange::setBegin().

## ◆ setCorrectionSpecifier()

void clang::TypoCorrection::setCorrectionSpecifier | ( | NestedNameSpecifier * | NNS | ) |
| inline

Definition at line 95 of file TypoCorrection.h.

## ◆ setQualifierDistance()

void clang::TypoCorrection::setQualifierDistance | ( | unsigned | ED | ) |
| inline

Definition at line 108 of file TypoCorrection.h.

## ◆ setRequiresImport()

void clang::TypoCorrection::setRequiresImport | ( | bool | Req | ) |
| inline

Definition at line 249 of file TypoCorrection.h.

Referenced by checkCorrectionVisibility().

## ◆ WillReplaceSpecifier() [1/2]

void clang::TypoCorrection::WillReplaceSpecifier | ( | bool | ForceReplacement | ) |
| inline

Definition at line 100 of file TypoCorrection.h.

Referenced by attemptRecovery().

## ◆ WillReplaceSpecifier() [2/2]

bool clang::TypoCorrection::WillReplaceSpecifier | ( |  | ) | const
| inline

Definition at line 104 of file TypoCorrection.h.

## Member Data Documentation

## ◆ CallbackDistanceWeight

const unsigned clang::TypoCorrection::CallbackDistanceWeight = 150U
| static

Definition at line 57 of file TypoCorrection.h.

Referenced by getEditDistance().

## ◆ CharDistanceWeight

const unsigned clang::TypoCorrection::CharDistanceWeight = 100U
| static

Definition at line 55 of file TypoCorrection.h.

Referenced by NormalizeEditDistance().

## ◆ InvalidDistance

const unsigned clang::TypoCorrection::InvalidDistance = std::numeric_limits<unsigned>::max()
| static

Definition at line 45 of file TypoCorrection.h.

Referenced by getEditDistance(), isCandidateViable(), NormalizeEditDistance(), and clang::CorrectionCandidateCallback::RankCandidate().

## ◆ MaximumDistance

const unsigned clang::TypoCorrection::MaximumDistance = 10000U
| static

Definition at line 49 of file TypoCorrection.h.

## ◆ QualifierDistanceWeight

const unsigned clang::TypoCorrection::QualifierDistanceWeight = 110U
| static

Definition at line 56 of file TypoCorrection.h.

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

- include/clang/Sema/TypoCorrection.h
- lib/Sema/SemaLookup.cpp