FLANG
Fortran::semantics::Scope Class Reference

Public Types

using size_type = mapType::size_type
using iterator = mapType::iterator
using const_iterator = mapType::const_iterator

Public Member Functions

 ENUM_CLASS (Kind, Global, IntrinsicModules, Module, MainProgram, Subprogram, BlockData, DerivedType, BlockConstruct, Forall, OtherConstruct, OpenACCConstruct, ImpliedDos, OtherClause) using ImportKind
 Scope (SemanticsContext &context)
 Scope (Scope &parent, Kind kind, Symbol *symbol, SemanticsContext &context)
 Scope (const Scope &)=delete
bool operator== (const Scope &that) const
bool operator!= (const Scope &that) const
Scopeparent ()
const Scopeparent () const
Kind kind () const
bool IsGlobal () const
bool IsIntrinsicModules () const
bool IsTopLevel () const
bool IsModule () const
bool IsSubmodule () const
bool IsDerivedType () const
bool IsStmtFunction () const
bool IsParameterizedDerivedType () const
bool IsParameterizedDerivedTypeInstantiation () const
bool IsDerivedTypeWithKindParameter () const
 Does this derived type have at least one kind parameter ?
bool IsDerivedTypeWithLengthParameter () const
 Does this derived type have at least one length parameter ?
Symbolsymbol ()
const Symbolsymbol () const
SemanticsContextcontext () const
const SymbolGetSymbol () const
const ScopeGetDerivedTypeParent () const
const ScopeGetDerivedTypeBase () const
std::optional< SourceNameGetName () const
bool Contains (const Scope &) const
ScopeMakeScope (Kind kind, Symbol *symbol=nullptr)
 Make a scope nested in this one.
SemanticsContextGetMutableSemanticsContext () const
iterator begin ()
iterator end ()
const_iterator begin () const
const_iterator end () const
const_iterator cbegin () const
const_iterator cend () const
SymbolVector GetSymbols () const
MutableSymbolVector GetSymbols ()
iterator find (const SourceName &name)
const_iterator find (const SourceName &name) const
size_type erase (const SourceName &)
bool empty () const
SymbolFindSymbol (const SourceName &) const
SymbolFindComponent (SourceName) const
std::pair< iterator, bool > try_emplace (const SourceName &name, Attrs attrs=Attrs())
 Make a Symbol with unknown details.
template<typename D>
common::IfNoLvalue< std::pair< iterator, bool >, D > try_emplace (const SourceName &name, D &&details)
 Make a Symbol with provided details.
template<typename D>
common::IfNoLvalue< std::pair< iterator, bool >, D > try_emplace (const SourceName &name, Attrs attrs, D &&details)
 Make a Symbol with attrs and details.
SymbolCopySymbol (const Symbol &)
std::list< EquivalenceSet > & equivalenceSets ()
const std::list< EquivalenceSet > & equivalenceSets () const
void add_equivalenceSet (EquivalenceSet &&)
const mapType & crayPointers () const
void add_crayPointer (const SourceName &, Symbol &)
mapType & commonBlocks ()
const mapType & commonBlocks () const
SymbolMakeCommonBlock (const SourceName &)
SymbolFindCommonBlock (const SourceName &) const
template<typename D>
common::IfNoLvalue< Symbol &, D > MakeSymbol (const SourceName &name, Attrs attrs, D &&details)
 Make a Symbol but don't add it to the scope.
std::list< Scope > & children ()
const std::list< Scope > & children () const
ScopeFindSubmodule (const SourceName &) const
bool AddSubmodule (const SourceName &, Scope &)
const DeclTypeSpecFindType (const DeclTypeSpec &) const
const DeclTypeSpecMakeNumericType (TypeCategory, KindExpr &&kind)
const DeclTypeSpecMakeLogicalType (KindExpr &&kind)
const DeclTypeSpecMakeCharacterType (ParamValue &&length, KindExpr &&kind=KindExpr{0})
DeclTypeSpecMakeDerivedType (DeclTypeSpec::Category, DerivedTypeSpec &&)
const DeclTypeSpecMakeTypeStarType ()
const DeclTypeSpecMakeClassStarType ()
const DeclTypeSpecGetType (const SomeExpr &)
std::size_t size () const
void set_size (std::size_t size)
std::optional< std::size_t > alignment () const
void SetAlignment (std::size_t n)
ImportKind GetImportKind () const
std::set< SourceNameimportNames () const
bool CanImport (const SourceName &) const
std::optional< parser::MessageFixedTextSetImportKind (ImportKind)
void add_importName (const SourceName &)
const DerivedTypeSpecderivedTypeSpec () const
DerivedTypeSpecderivedTypeSpec ()
void set_derivedTypeSpec (DerivedTypeSpec &spec)
parser::Message::Reference instantiationContext () const
void set_instantiationContext (parser::Message::Reference &&mref)
bool hasSAVE () const
void set_hasSAVE (bool yes=true)
const parser::CharBlocksourceRange () const
void AddSourceRange (parser::CharBlock)
const DeclTypeSpecFindInstantiatedDerivedType (const DerivedTypeSpec &, DeclTypeSpec::Category=DeclTypeSpec::TypeDerived) const
bool IsModuleFile () const
void InstantiateDerivedTypes ()
const SymbolruntimeDerivedTypeDescription () const
void set_runtimeDerivedTypeDescription (const Symbol &symbol)

Friends

llvm::raw_ostream & operator<< (llvm::raw_ostream &os, const Scope &scope)

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