clang  6.0.0svn
Classes | Public Member Functions | List of all members
clang::IdentifierResolver Class Reference

IdentifierResolver - Keeps track of shadowed decls on enclosing scopes. More...

#include "clang/Sema/IdentifierResolver.h"

Classes

class  IdDeclInfoMap
 IdDeclInfoMap - Associates IdDeclInfos with declaration names. More...
 
class  iterator
 iterator - Iterate over the decls of a specified declaration name. More...
 

Public Member Functions

iterator begin (DeclarationName Name)
 begin - Returns an iterator for decls with the name 'Name'. More...
 
iterator end ()
 end - Returns an iterator that has 'finished'. More...
 
bool isDeclInScope (Decl *D, DeclContext *Ctx, Scope *S=nullptr, bool AllowInlineNamespace=false) const
 isDeclInScope - If 'Ctx' is a function/method, isDeclInScope returns true if 'D' is in Scope 'S', otherwise 'S' is ignored and isDeclInScope returns true if 'D' belongs to the given declaration context. More...
 
void AddDecl (NamedDecl *D)
 AddDecl - Link the decl to its shadowed decl chain. More...
 
void RemoveDecl (NamedDecl *D)
 RemoveDecl - Unlink the decl from its shadowed decl chain. More...
 
void InsertDeclAfter (iterator Pos, NamedDecl *D)
 Insert the given declaration after the given iterator position. More...
 
bool tryAddTopLevelDecl (NamedDecl *D, DeclarationName Name)
 Try to add the given declaration to the top level scope, if it (or a redeclaration of it) hasn't already been added. More...
 
 IdentifierResolver (Preprocessor &PP)
 
 ~IdentifierResolver ()
 

Detailed Description

IdentifierResolver - Keeps track of shadowed decls on enclosing scopes.

It manages the shadowing chains of declaration names and implements efficient decl lookup based on a declaration name.

Definition at line 35 of file IdentifierResolver.h.

Constructor & Destructor Documentation

◆ IdentifierResolver()

IdentifierResolver::IdentifierResolver ( Preprocessor PP)
explicit

Definition at line 85 of file IdentifierResolver.cpp.

◆ ~IdentifierResolver()

IdentifierResolver::~IdentifierResolver ( )

Definition at line 90 of file IdentifierResolver.cpp.

Member Function Documentation

◆ AddDecl()

void IdentifierResolver::AddDecl ( NamedDecl D)

AddDecl - Link the decl to its shadowed decl chain.

Definition at line 142 of file IdentifierResolver.cpp.

◆ begin()

IdentifierResolver::iterator IdentifierResolver::begin ( DeclarationName  Name)

begin - Returns an iterator for decls with the name 'Name'.

begin - Returns an iterator for decls with name 'Name'.

Definition at line 228 of file IdentifierResolver.cpp.

Referenced by getDeclForLocalLookup(), clang::Sema::Initialize(), and clang::IdentifierResolver::iterator::operator++().

◆ end()

iterator clang::IdentifierResolver::end ( )
inline

end - Returns an iterator that has 'finished'.

Definition at line 135 of file IdentifierResolver.h.

References isDeclInScope().

Referenced by getDeclForLocalLookup(), and clang::Sema::Initialize().

◆ InsertDeclAfter()

void IdentifierResolver::InsertDeclAfter ( iterator  Pos,
NamedDecl D 
)

Insert the given declaration after the given iterator position.

Definition at line 167 of file IdentifierResolver.cpp.

◆ isDeclInScope()

bool IdentifierResolver::isDeclInScope ( Decl D,
DeclContext Ctx,
Scope S = nullptr,
bool  AllowInlineNamespace = false 
) const

isDeclInScope - If 'Ctx' is a function/method, isDeclInScope returns true if 'D' is in Scope 'S', otherwise 'S' is ignored and isDeclInScope returns true if 'D' belongs to the given declaration context.

Parameters
AllowInlineNamespaceIf true, we are checking whether a prior declaration is in scope in a declaration that requires a prior declaration (because it is either explicitly qualified or is a template instantiation or specialization). In this case, a declaration is in scope if it's in the inline namespace set of the context.

Definition at line 97 of file IdentifierResolver.cpp.

Referenced by end().

◆ RemoveDecl()

void IdentifierResolver::RemoveDecl ( NamedDecl D)

RemoveDecl - Unlink the decl from its shadowed decl chain.

The decl must already be part of the decl chain.

Definition at line 207 of file IdentifierResolver.cpp.

◆ tryAddTopLevelDecl()

bool IdentifierResolver::tryAddTopLevelDecl ( NamedDecl D,
DeclarationName  Name 
)

Try to add the given declaration to the top level scope, if it (or a redeclaration of it) hasn't already been added.

Parameters
DThe externally-produced declaration to add.
NameThe name of the externally-produced declaration.
Returns
true if the declaration was added, false otherwise.

Definition at line 298 of file IdentifierResolver.cpp.


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