FLANG
Fortran::semantics::ConstructVisitor Class Reference
Inheritance diagram for Fortran::semantics::ConstructVisitor:
Fortran::semantics::DeclarationVisitor Fortran::semantics::ArraySpecVisitor Fortran::semantics::GenericHandler Fortran::semantics::BaseVisitor Fortran::semantics::ScopeHandler Fortran::semantics::ImplicitRulesVisitor Fortran::semantics::DeclTypeSpecVisitor Fortran::semantics::AttrsVisitor Fortran::semantics::BaseVisitor Fortran::semantics::ResolveNamesVisitor

Public Member Functions

bool Pre (const parser::ConcurrentHeader &)
bool Pre (const parser::LocalitySpec::Local &)
bool Pre (const parser::LocalitySpec::LocalInit &)
bool Pre (const parser::LocalitySpec::Reduce &)
bool Pre (const parser::LocalitySpec::Shared &)
bool Pre (const parser::AcSpec &)
bool Pre (const parser::AcImpliedDo &)
bool Pre (const parser::DataImpliedDo &)
bool Pre (const parser::DataIDoObject &)
bool Pre (const parser::DataStmtObject &)
bool Pre (const parser::DataStmtValue &)
bool Pre (const parser::DoConstruct &)
void Post (const parser::DoConstruct &)
bool Pre (const parser::ForallConstruct &)
void Post (const parser::ForallConstruct &)
bool Pre (const parser::ForallStmt &)
void Post (const parser::ForallStmt &)
bool Pre (const parser::BlockConstruct &)
void Post (const parser::Selector &)
void Post (const parser::AssociateStmt &)
void Post (const parser::EndAssociateStmt &)
bool Pre (const parser::Association &)
void Post (const parser::SelectTypeStmt &)
void Post (const parser::SelectRankStmt &)
bool Pre (const parser::SelectTypeConstruct &)
void Post (const parser::SelectTypeConstruct &)
bool Pre (const parser::SelectTypeConstruct::TypeCase &)
void Post (const parser::SelectTypeConstruct::TypeCase &)
bool Pre (const parser::SelectRankConstruct::RankCase &)
void Post (const parser::SelectRankConstruct::RankCase &)
bool Pre (const parser::TypeGuardStmt::Guard &)
void Post (const parser::TypeGuardStmt::Guard &)
void Post (const parser::SelectRankCaseStmt::Rank &)
bool Pre (const parser::ChangeTeamStmt &)
void Post (const parser::EndChangeTeamStmt &)
void Post (const parser::CoarrayAssociation &)
bool Pre (const parser::WhereConstructStmt &x)
bool Pre (const parser::ForallConstructStmt &x)
bool Pre (const parser::CriticalStmt &x)
bool Pre (const parser::LabelDoStmt &)
bool Pre (const parser::NonLabelDoStmt &x)
bool Pre (const parser::IfThenStmt &x)
bool Pre (const parser::SelectCaseStmt &x)
bool Pre (const parser::SelectRankConstruct &)
void Post (const parser::SelectRankConstruct &)
bool Pre (const parser::SelectRankStmt &x)
bool Pre (const parser::SelectTypeStmt &x)
void Post (const parser::MaskedElsewhereStmt &x)
void Post (const parser::ElsewhereStmt &x)
void Post (const parser::EndWhereStmt &x)
void Post (const parser::EndForallStmt &x)
void Post (const parser::EndCriticalStmt &x)
void Post (const parser::EndDoStmt &x)
void Post (const parser::ElseIfStmt &x)
void Post (const parser::ElseStmt &x)
void Post (const parser::EndIfStmt &x)
void Post (const parser::CaseStmt &x)
void Post (const parser::EndSelectStmt &x)
void Post (const parser::SelectRankCaseStmt &x)
void Post (const parser::TypeGuardStmt &x)
void Post (const parser::CycleStmt &x)
void Post (const parser::ExitStmt &x)
void HandleImpliedAsynchronousInScope (const parser::Block &)
Public Member Functions inherited from Fortran::semantics::DeclarationVisitor
bool Pre (const parser::Initialization &)
void Post (const parser::EntityDecl &)
void Post (const parser::ObjectDecl &)
void Post (const parser::PointerDecl &)
bool Pre (const parser::BindStmt &)
void Post (const parser::BindStmt &)
bool Pre (const parser::BindEntity &)
bool Pre (const parser::OldParameterStmt &)
bool Pre (const parser::NamedConstantDef &)
bool Pre (const parser::NamedConstant &)
void Post (const parser::EnumDef &)
bool Pre (const parser::Enumerator &)
bool Pre (const parser::AccessSpec &)
bool Pre (const parser::AsynchronousStmt &)
bool Pre (const parser::ContiguousStmt &)
bool Pre (const parser::ExternalStmt &)
bool Pre (const parser::IntentStmt &)
bool Pre (const parser::IntrinsicStmt &)
bool Pre (const parser::OptionalStmt &)
bool Pre (const parser::ProtectedStmt &)
bool Pre (const parser::ValueStmt &)
bool Pre (const parser::VolatileStmt &)
bool Pre (const parser::AllocatableStmt &)
void Post (const parser::AllocatableStmt &)
bool Pre (const parser::TargetStmt &)
bool Pre (const parser::CUDAAttributesStmt &)
void Post (const parser::TargetStmt &)
void Post (const parser::DimensionStmt::Declaration &)
void Post (const parser::CodimensionDecl &)
bool Pre (const parser::TypeDeclarationStmt &)
void Post (const parser::TypeDeclarationStmt &)
void Post (const parser::IntegerTypeSpec &)
void Post (const parser::UnsignedTypeSpec &)
void Post (const parser::IntrinsicTypeSpec::Real &)
void Post (const parser::IntrinsicTypeSpec::Complex &)
void Post (const parser::IntrinsicTypeSpec::Logical &)
void Post (const parser::IntrinsicTypeSpec::Character &)
void Post (const parser::CharSelector::LengthAndKind &)
void Post (const parser::CharLength &)
void Post (const parser::LengthSelector &)
bool Pre (const parser::KindParam &)
bool Pre (const parser::VectorTypeSpec &)
void Post (const parser::VectorTypeSpec &)
bool Pre (const parser::DeclarationTypeSpec::Type &)
void Post (const parser::DeclarationTypeSpec::Type &)
bool Pre (const parser::DeclarationTypeSpec::Class &)
void Post (const parser::DeclarationTypeSpec::Class &)
void Post (const parser::DeclarationTypeSpec::Record &)
void Post (const parser::DerivedTypeSpec &)
bool Pre (const parser::DerivedTypeDef &)
bool Pre (const parser::DerivedTypeStmt &)
void Post (const parser::DerivedTypeStmt &)
bool Pre (const parser::TypeParamDefStmt &)
void Post (const parser::TypeParamDefStmt &)
bool Pre (const parser::TypeAttrSpec::Extends &)
bool Pre (const parser::PrivateStmt &)
bool Pre (const parser::SequenceStmt &)
bool Pre (const parser::ComponentDefStmt &)
void Post (const parser::ComponentDefStmt &)
void Post (const parser::ComponentDecl &)
void Post (const parser::FillDecl &)
bool Pre (const parser::ProcedureDeclarationStmt &)
void Post (const parser::ProcedureDeclarationStmt &)
bool Pre (const parser::DataComponentDefStmt &)
bool Pre (const parser::ProcComponentDefStmt &)
void Post (const parser::ProcComponentDefStmt &)
bool Pre (const parser::ProcPointerInit &)
void Post (const parser::ProcInterface &)
void Post (const parser::ProcDecl &)
bool Pre (const parser::TypeBoundProcedurePart &)
void Post (const parser::TypeBoundProcedurePart &)
void Post (const parser::ContainsStmt &)
bool Pre (const parser::TypeBoundProcBinding &)
void Post (const parser::TypeBoundProcBinding &)
void Post (const parser::TypeBoundProcedureStmt::WithoutInterface &)
void Post (const parser::TypeBoundProcedureStmt::WithInterface &)
bool Pre (const parser::FinalProcedureStmt &)
bool Pre (const parser::TypeBoundGenericStmt &)
bool Pre (const parser::StructureDef &)
bool Pre (const parser::Union::UnionStmt &)
bool Pre (const parser::StructureField &)
void Post (const parser::StructureField &)
bool Pre (const parser::AllocateStmt &)
void Post (const parser::AllocateStmt &)
bool Pre (const parser::StructureConstructor &)
bool Pre (const parser::NamelistStmt::Group &)
bool Pre (const parser::IoControlSpec &)
bool Pre (const parser::CommonStmt::Block &)
bool Pre (const parser::CommonBlockObject &)
void Post (const parser::CommonBlockObject &)
bool Pre (const parser::EquivalenceStmt &)
bool Pre (const parser::SaveStmt &)
bool Pre (const parser::BasedPointer &)
void Post (const parser::BasedPointer &)
void PointerInitialization (const parser::Name &, const parser::InitialDataTarget &)
void PointerInitialization (const parser::Name &, const parser::ProcPointerInit &)
void NonPointerInitialization (const parser::Name &, const parser::ConstantExpr &)
void CheckExplicitInterface (const parser::Name &)
void CheckBindings (const parser::TypeBoundProcedureStmt::WithoutInterface &)
const parser::NameResolveDesignator (const parser::Designator &)
int GetVectorElementKind (TypeCategory category, const std::optional< parser::KindSelector > &kind)
void Post (const parser::ArraySpec &)
void Post (const parser::ComponentArraySpec &)
void Post (const parser::CoarraySpec &)
void Post (const parser::AttrSpec &)
void Post (const parser::ComponentAttrSpec &)
template<typename T>
void Post (const parser::Statement< T > &)
void Post (const parser::ParameterStmt &)
void Post (const parser::ImplicitSpec &)
void Post (const parser::IntrinsicTypeSpec::DoublePrecision &)
void Post (const parser::IntrinsicTypeSpec::DoubleComplex &)
void Post (const parser::DeclarationTypeSpec::ClassStar &)
void Post (const parser::DeclarationTypeSpec::TypeStar &)
void Post (const parser::TypeGuardStmt &)
void Post (const parser::TypeSpec &)
void Post (const parser::LanguageBindingSpec &)
template<typename T>
bool Pre (const parser::Statement< T > &x)
bool Pre (const parser::ImplicitStmt &)
bool Pre (const parser::LetterSpec &)
bool Pre (const parser::ImplicitSpec &)
bool Pre (const parser::TypeGuardStmt &)
bool Pre (const parser::IntentSpec &)
bool Pre (const parser::Pass &)
bool Pre (const common::CUDADataAttr)
Public Member Functions inherited from Fortran::semantics::ArraySpecVisitor
void Post (const parser::ArraySpec &)
void Post (const parser::ComponentArraySpec &)
void Post (const parser::CoarraySpec &)
void Post (const parser::AttrSpec &)
void Post (const parser::ComponentAttrSpec &)
Public Member Functions inherited from Fortran::semantics::BaseVisitor
 BaseVisitor (SemanticsContext &c, ResolveNamesVisitor &v, ImplicitRulesMap &rules)
template<typename T>
void Walk (const T &)
MessageHandlermessageHandler ()
const std::optional< SourceName > & currStmtSource ()
SemanticsContextcontext () const
evaluate::FoldingContextGetFoldingContext () const
bool IsIntrinsic (const SourceName &name, std::optional< Symbol::Flag > flag) const
bool InModuleFile () const
void MakePlaceholder (const parser::Name &, MiscDetails::Kind)
template<typename T>
common::IfNoLvalue< T, T > FoldExpr (T &&expr)
template<typename T>
MaybeExpr EvaluateExpr (const T &expr)
template<typename T>
MaybeExpr EvaluateNonPointerInitializer (const Symbol &symbol, const T &expr, parser::CharBlock source)
template<typename T>
MaybeIntExpr EvaluateIntExpr (const T &expr)
template<typename T>
MaybeSubscriptIntExpr EvaluateSubscriptIntExpr (const T &expr)
template<typename... A>
MessageSay (A &&...args)
template<typename... A>
MessageSay (const parser::Name &name, MessageFixedText &&text, const A &...args)
Public Member Functions inherited from Fortran::semantics::ScopeHandler
ScopecurrScope ()
ScopeGetHostProcedure ()
ScopeInclusiveScope ()
ScopeNonDerivedTypeScope ()
void PushScope (Scope::Kind kind, Symbol *symbol)
void PushScope (Scope &scope)
void PopScope ()
void SetScope (Scope &)
template<typename T>
bool Pre (const parser::Statement< T > &x)
template<typename T>
void Post (const parser::Statement< T > &)
void SayAlreadyDeclared (const parser::Name &, Symbol &)
void SayAlreadyDeclared (const SourceName &, Symbol &)
void SayAlreadyDeclared (const SourceName &, const SourceName &)
void SayWithReason (const parser::Name &, Symbol &, MessageFixedText &&, Message &&)
template<typename... A>
MessageSayWithDecl (const parser::Name &, Symbol &, MessageFixedText &&, A &&...args)
void SayLocalMustBeVariable (const parser::Name &, Symbol &)
MessageSayDerivedType (const SourceName &, MessageFixedText &&, const Scope &)
MessageSay2 (const SourceName &, MessageFixedText &&, const SourceName &, MessageFixedText &&)
MessageSay2 (const SourceName &, MessageFixedText &&, Symbol &, MessageFixedText &&)
MessageSay2 (const parser::Name &, MessageFixedText &&, Symbol &, MessageFixedText &&)
SymbolFindSymbol (const parser::Name &)
SymbolFindSymbol (const Scope &, const parser::Name &)
SymbolFindInScope (const Scope &, const parser::Name &)
SymbolFindInScope (const Scope &, const SourceName &)
template<typename T>
SymbolFindInScope (const T &name)
SymbolFindInTypeOrParents (const Scope &, const parser::Name &)
SymbolFindInTypeOrParents (const parser::Name &)
SymbolFindInScopeOrBlockConstructs (const Scope &, SourceName)
SymbolFindSeparateModuleProcedureInterface (const parser::Name &)
void EraseSymbol (const parser::Name &)
void EraseSymbol (const Symbol &symbol)
SymbolCopySymbol (const SourceName &, const Symbol &)
SymbolMakeSymbol (Scope &, const SourceName &, Attrs)
SymbolMakeSymbol (const SourceName &, Attrs=Attrs{})
SymbolMakeSymbol (const parser::Name &, Attrs=Attrs{})
SymbolMakeHostAssocSymbol (const parser::Name &, const Symbol &)
template<typename D>
common::IfNoLvalue< Symbol &, D > MakeSymbol (const parser::Name &name, D &&details)
template<typename D>
common::IfNoLvalue< Symbol &, D > MakeSymbol (const parser::Name &name, const Attrs &attrs, D &&details)
template<typename D>
common::IfNoLvalue< Symbol &, D > MakeSymbol (const SourceName &name, const Attrs &attrs, D &&details)
void MakeExternal (Symbol &)
bool CheckDuplicatedAttr (SourceName, Symbol &, Attr)
bool CheckDuplicatedAttrs (SourceName, Symbol &, Attrs)
void SetExplicitAttr (Symbol &symbol, Attr attr) const
void SetExplicitAttrs (Symbol &symbol, Attrs attrs) const
void SetImplicitAttr (Symbol &symbol, Attr attr) const
void SetCUDADataAttr (SourceName, Symbol &, std::optional< common::CUDADataAttr >)
void Post (const parser::ParameterStmt &)
void Post (const parser::ImplicitSpec &)
void Post (const parser::IntrinsicTypeSpec::DoublePrecision &)
void Post (const parser::IntrinsicTypeSpec::DoubleComplex &)
void Post (const parser::DeclarationTypeSpec::ClassStar &)
void Post (const parser::DeclarationTypeSpec::TypeStar &)
void Post (const parser::TypeGuardStmt &)
void Post (const parser::TypeSpec &)
void Post (const parser::LanguageBindingSpec &)
bool Pre (const parser::ImplicitStmt &)
bool Pre (const parser::LetterSpec &)
bool Pre (const parser::ImplicitSpec &)
bool Pre (const parser::TypeGuardStmt &)
bool Pre (const parser::IntentSpec &)
bool Pre (const parser::Pass &)
bool Pre (const common::CUDADataAttr)
Public Member Functions inherited from Fortran::semantics::ImplicitRulesVisitor
void Post (const parser::ParameterStmt &)
bool Pre (const parser::ImplicitStmt &)
bool Pre (const parser::LetterSpec &)
bool Pre (const parser::ImplicitSpec &)
void Post (const parser::ImplicitSpec &)
const DeclTypeSpecGetType (SourceName name, bool respectImplicitNoneType=true)
bool isImplicitNoneType () const
bool isImplicitNoneType (const Scope &scope) const
bool isImplicitNoneExternal () const
void set_inheritFromParent (bool x)
void Post (const parser::IntrinsicTypeSpec::DoublePrecision &)
void Post (const parser::IntrinsicTypeSpec::DoubleComplex &)
void Post (const parser::DeclarationTypeSpec::ClassStar &)
void Post (const parser::DeclarationTypeSpec::TypeStar &)
void Post (const parser::TypeGuardStmt &)
void Post (const parser::TypeSpec &)
void Post (const parser::LanguageBindingSpec &)
bool Pre (const parser::TypeGuardStmt &)
bool Pre (const parser::IntentSpec &)
bool Pre (const parser::Pass &)
bool Pre (const common::CUDADataAttr)
Public Member Functions inherited from Fortran::semantics::DeclTypeSpecVisitor
void Post (const parser::IntrinsicTypeSpec::DoublePrecision &)
void Post (const parser::IntrinsicTypeSpec::DoubleComplex &)
void Post (const parser::DeclarationTypeSpec::ClassStar &)
void Post (const parser::DeclarationTypeSpec::TypeStar &)
bool Pre (const parser::TypeGuardStmt &)
void Post (const parser::TypeGuardStmt &)
void Post (const parser::TypeSpec &)
template<typename T>
const DeclTypeSpecProcessTypeSpec (const T &x, bool allowForward=false)
void Post (const parser::LanguageBindingSpec &)
bool Pre (const parser::IntentSpec &)
bool Pre (const parser::Pass &)
bool Pre (const common::CUDADataAttr)
Public Member Functions inherited from Fortran::semantics::AttrsVisitor
bool BeginAttrs ()
Attrs GetAttrs ()
std::optional< common::CUDADataAttr > cudaDataAttr ()
Attrs EndAttrs ()
bool SetPassNameOn (Symbol &)
void SetBindNameOn (Symbol &)
void Post (const parser::LanguageBindingSpec &)
bool Pre (const parser::IntentSpec &)
bool Pre (const parser::Pass &)
bool CheckAndSet (Attr)
bool Pre (const common::CUDADataAttr)

Additional Inherited Members

Public Types inherited from Fortran::semantics::ImplicitRulesVisitor
using ImplicitNoneNameSpec = parser::ImplicitStmt::ImplicitNoneNameSpec
Protected Types inherited from Fortran::semantics::GenericHandler
using ProcedureKind = parser::ProcedureStmt::Kind
using SpecificProcMapType
using GenericProcMapType = std::multimap<SourceName, Symbol *>
Protected Member Functions inherited from Fortran::semantics::DeclarationVisitor
bool BeginDecl ()
void EndDecl ()
SymbolDeclareObjectEntity (const parser::Name &, Attrs=Attrs{})
SymbolFindOrDeclareEnclosingEntity (const parser::Name &)
void DeclareLocalEntity (const parser::Name &, Symbol::Flag)
SymbolDeclareStatementEntity (const parser::DoVariable &, const std::optional< parser::IntegerTypeSpec > &)
SymbolMakeCommonBlockSymbol (const parser::Name &)
SymbolMakeCommonBlockSymbol (const std::optional< parser::Name > &)
bool CheckUseError (const parser::Name &)
void CheckAccessibility (const SourceName &, bool, Symbol &)
void CheckCommonBlocks ()
void CheckSaveStmts ()
void CheckEquivalenceSets ()
bool CheckNotInBlock (const char *)
bool NameIsKnownOrIntrinsic (const parser::Name &)
void FinishNamelists ()
const parser::NameResolveStructureComponent (const parser::StructureComponent &)
const parser::NameResolveDataRef (const parser::DataRef &)
const parser::NameResolveName (const parser::Name &)
bool PassesSharedLocalityChecks (const parser::Name &name, Symbol &symbol)
SymbolNoteInterfaceName (const parser::Name &)
bool IsUplevelReference (const Symbol &)
std::optional< SourceNameBeginCheckOnIndexUseInOwnBounds (const parser::DoVariable &name)
void EndCheckOnIndexUseInOwnBounds (const std::optional< SourceName > &restore)
void NoteScalarSpecificationArgument (const Symbol &symbol)
template<typename T>
SymbolDeclareEntity (const parser::Name &name, Attrs attrs)
Protected Member Functions inherited from Fortran::semantics::ArraySpecVisitor
const ArraySpecarraySpec ()
void set_arraySpec (const ArraySpec arraySpec)
const ArraySpeccoarraySpec ()
void BeginArraySpec ()
void EndArraySpec ()
void ClearArraySpec ()
void ClearCoarraySpec ()
Protected Member Functions inherited from Fortran::semantics::GenericHandler
void ResolveSpecificsInGeneric (Symbol &, bool isEndOfSpecificationPart)
void DeclaredPossibleSpecificProc (Symbol &)
Protected Member Functions inherited from Fortran::semantics::ScopeHandler
FuncResultStackfuncResultStack ()
void ApplyImplicitRules (Symbol &, bool allowForwardReference=false)
bool ImplicitlyTypeForwardRef (Symbol &)
void AcquireIntrinsicProcedureFlags (Symbol &)
const DeclTypeSpecGetImplicitType (Symbol &, bool respectImplicitNoneType=true)
void CheckEntryDummyUse (SourceName, Symbol *)
bool ConvertToObjectEntity (Symbol &)
bool ConvertToProcEntity (Symbol &, std::optional< SourceName >=std::nullopt)
const DeclTypeSpecMakeNumericType (TypeCategory, const std::optional< parser::KindSelector > &)
const DeclTypeSpecMakeNumericType (TypeCategory, int)
const DeclTypeSpecMakeLogicalType (const std::optional< parser::KindSelector > &)
const DeclTypeSpecMakeLogicalType (int)
void NotePossibleBadForwardRef (const parser::Name &)
std::optional< SourceNameHadForwardRef (const Symbol &) const
bool CheckPossibleBadForwardRef (const Symbol &)
bool ConvertToUseError (Symbol &, const SourceName &, const Symbol &used)
DeferredDeclarationStateGetDeferredDeclarationState (bool add=false)
void SkipImplicitTyping (bool skip)
void NoteEarlyDeclaredDummyArgument (Symbol &symbol)
bool IsEarlyDeclaredDummyArgument (Symbol &symbol)
void ForgetEarlyDeclaredDummyArgument (Symbol &symbol)
Protected Member Functions inherited from Fortran::semantics::ImplicitRulesVisitor
void BeginScope (const Scope &)
void SetScope (const Scope &)
Protected Member Functions inherited from Fortran::semantics::DeclTypeSpecVisitor
bool allowForwardReferenceToDerivedType () const
void set_allowForwardReferenceToDerivedType (bool yes)
const DeclTypeSpecGetDeclTypeSpec ()
void BeginDeclTypeSpec ()
void EndDeclTypeSpec ()
void SetDeclTypeSpec (const DeclTypeSpec &)
void SetDeclTypeSpecCategory (DeclTypeSpec::Category)
DeclTypeSpec::Category GetDeclTypeSpecCategory () const
KindExpr GetKindParamExpr (TypeCategory, const std::optional< parser::KindSelector > &)
void CheckForAbstractType (const Symbol &typeSymbol)
Protected Member Functions inherited from Fortran::semantics::AttrsVisitor
Attr AccessSpecToAttr (const parser::AccessSpec &x)
Attr IntentSpecToAttr (const parser::IntentSpec &x)
Protected Attributes inherited from Fortran::semantics::BaseVisitor
ImplicitRulesMap * implicitRulesMap_ {nullptr}
Protected Attributes inherited from Fortran::semantics::GenericHandler
SpecificProcMapType specificsForGenericProcs_
GenericProcMapType genericsForSpecificProcs_
Protected Attributes inherited from Fortran::semantics::ScopeHandler
bool inSpecificationPart_ {false}
bool deferImplicitTyping_ {false}
bool skipImplicitTyping_ {false}
bool inEquivalenceStmt_ {false}
struct Fortran::semantics::ScopeHandler::SpecificationPartState specPartState_
Protected Attributes inherited from Fortran::semantics::AttrsVisitor
std::optional< Attrs > attrs_
std::optional< common::CUDADataAttr > cudaDataAttr_

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