Lines Matching refs:parser

47 using namespace parser::literals;
50 using Message = parser::Message;
51 using Messages = parser::Messages;
52 using MessageFixedText = parser::MessageFixedText;
53 using MessageFormattedText = parser::MessageFormattedText;
78 void SetTypeMapping(const DeclTypeSpec &type, parser::Location fromLetter,
79 parser::Location toLetter);
178 void MakePlaceholder(const parser::Name &, MiscDetails::Kind);
190 const Symbol &symbol, const T &expr, parser::CharBlock source) { in EvaluateNonPointerInitializer()
220 const parser::Name &name, MessageFixedText &&text, const A &...args) { in Say()
241 void Post(const parser::LanguageBindingSpec &);
242 bool Pre(const parser::IntentSpec &);
243 bool Pre(const parser::Pass &);
249 bool Pre(const parser::CLASSNAME &) { \
282 Attr AccessSpecToAttr(const parser::AccessSpec &x) { in AccessSpecToAttr()
284 case parser::AccessSpec::Kind::Public: in AccessSpecToAttr()
286 case parser::AccessSpec::Kind::Private: in AccessSpecToAttr()
291 Attr IntentSpecToAttr(const parser::IntentSpec &x) { in IntentSpecToAttr()
293 case parser::IntentSpec::Intent::In: in IntentSpecToAttr()
295 case parser::IntentSpec::Intent::Out: in IntentSpecToAttr()
297 case parser::IntentSpec::Intent::InOut: in IntentSpecToAttr()
317 void Post(const parser::IntrinsicTypeSpec::DoublePrecision &);
318 void Post(const parser::IntrinsicTypeSpec::DoubleComplex &);
319 void Post(const parser::DeclarationTypeSpec::ClassStar &);
320 void Post(const parser::DeclarationTypeSpec::TypeStar &);
321 bool Pre(const parser::TypeGuardStmt &);
322 void Post(const parser::TypeGuardStmt &);
323 void Post(const parser::TypeSpec &);
364 TypeCategory, const std::optional<parser::KindSelector> &);
378 using ImplicitNoneNameSpec = parser::ImplicitStmt::ImplicitNoneNameSpec;
380 void Post(const parser::ParameterStmt &);
381 bool Pre(const parser::ImplicitStmt &);
382 bool Pre(const parser::LetterSpec &);
383 bool Pre(const parser::ImplicitSpec &);
384 void Post(const parser::ImplicitSpec &);
428 void Post(const parser::ArraySpec &);
429 void Post(const parser::ComponentArraySpec &);
430 void Post(const parser::CoarraySpec &);
431 void Post(const parser::AttrSpec &) { PostAttrSpec(); } in Post()
432 void Post(const parser::ComponentAttrSpec &) { PostAttrSpec(); } in Post()
470 const parser::DeclarationTypeSpec *parsedType{nullptr};
472 const parser::Name *resultName{nullptr};
514 template <typename T> bool Pre(const parser::Statement<T> &x) { in Pre()
519 template <typename T> void Post(const parser::Statement<T> &) { in Post()
525 void SayAlreadyDeclared(const parser::Name &, Symbol &);
529 const parser::Name &, Symbol &, MessageFixedText &&, Message &&);
530 void SayWithDecl(const parser::Name &, Symbol &, MessageFixedText &&);
531 void SayLocalMustBeVariable(const parser::Name &, Symbol &);
538 const parser::Name &, MessageFixedText &&, Symbol &, MessageFixedText &&);
542 Symbol *FindSymbol(const parser::Name &);
543 Symbol *FindSymbol(const Scope &, const parser::Name &);
545 Symbol *FindInScope(const Scope &, const parser::Name &);
551 Symbol *FindInTypeOrParents(const Scope &, const parser::Name &);
552 Symbol *FindInTypeOrParents(const parser::Name &);
553 void EraseSymbol(const parser::Name &);
561 Symbol &MakeSymbol(const parser::Name &, Attrs = Attrs{});
562 Symbol &MakeHostAssocSymbol(const parser::Name &, const Symbol &);
566 const parser::Name &name, D &&details) { in MakeSymbol()
572 const parser::Name &name, const Attrs &attrs, D &&details) { in MakeSymbol()
650 TypeCategory, const std::optional<parser::KindSelector> &);
652 const std::optional<parser::KindSelector> &);
653 void NotePossibleBadForwardRef(const parser::Name &);
669 std::vector<const std::list<parser::EquivalenceObject> *> equivalenceSets;
685 std::list<const parser::NamelistStmt::Group *> namelistGroups;
704 bool Pre(const parser::AccessStmt &);
705 bool Pre(const parser::Only &);
706 bool Pre(const parser::Rename::Names &);
707 bool Pre(const parser::Rename::Operators &);
708 bool Pre(const parser::UseStmt &);
709 void Post(const parser::UseStmt &);
711 void BeginModule(const parser::Name &, bool isSubmodule);
712 bool BeginSubmodule(const parser::Name &, const parser::ParentIdentifier &);
767 Scope *FindModule(const parser::Name &, std::optional<bool> isIntrinsic,
773 bool Pre(const parser::InterfaceStmt &);
774 void Post(const parser::InterfaceStmt &);
775 void Post(const parser::EndInterfaceStmt &);
776 bool Pre(const parser::GenericSpec &);
777 bool Pre(const parser::ProcedureStmt &);
778 bool Pre(const parser::GenericStmt &);
779 void Post(const parser::GenericStmt &);
803 using ProcedureKind = parser::ProcedureStmt::Kind;
805 std::multimap<Symbol *, std::pair<const parser::Name *, ProcedureKind>>
808 void AddSpecificProcs(const std::list<parser::Name> &, ProcedureKind);
814 bool HandleStmtFunction(const parser::StmtFunctionStmt &);
815 bool Pre(const parser::SubroutineStmt &);
816 bool Pre(const parser::FunctionStmt &);
817 void Post(const parser::FunctionStmt &);
818 bool Pre(const parser::EntryStmt &);
819 void Post(const parser::EntryStmt &);
820 bool Pre(const parser::InterfaceBody::Subroutine &);
821 void Post(const parser::InterfaceBody::Subroutine &);
822 bool Pre(const parser::InterfaceBody::Function &);
823 void Post(const parser::InterfaceBody::Function &);
824 bool Pre(const parser::Suffix &);
825 bool Pre(const parser::PrefixSpec &);
827 bool BeginSubprogram(const parser::Name &, Symbol::Flag,
829 const parser::LanguageBindingSpec * = nullptr,
831 bool BeginMpSubprogram(const parser::Name &);
832 void PushBlockDataScope(const parser::Name &);
833 void EndSubprogram(std::optional<parser::CharBlock> stmtSource = std::nullopt,
834 const std::optional<parser::LanguageBindingSpec> * = nullptr);
843 bool HandlePreviousCalls(const parser::Name &, Symbol &, Symbol::Flag);
844 void CheckExtantProc(const parser::Name &, Symbol::Flag);
846 Symbol &PushSubprogramScope(const parser::Name &, Symbol::Flag,
847 const parser::LanguageBindingSpec * = nullptr);
848 Symbol *GetSpecificFromGeneric(const parser::Name &);
849 SubprogramDetails &PostSubprogramStmt(const parser::Name &);
850 void CreateEntry(const parser::EntryStmt &stmt, Symbol &subprogram);
851 void PostEntryStmt(const parser::EntryStmt &stmt);
861 bool Pre(const parser::Initialization &);
862 void Post(const parser::EntityDecl &);
863 void Post(const parser::ObjectDecl &);
864 void Post(const parser::PointerDecl &);
865 bool Pre(const parser::BindStmt &) { return BeginAttrs(); } in Pre()
866 void Post(const parser::BindStmt &) { EndAttrs(); } in Post()
867 bool Pre(const parser::BindEntity &);
868 bool Pre(const parser::OldParameterStmt &);
869 bool Pre(const parser::NamedConstantDef &);
870 bool Pre(const parser::NamedConstant &);
871 void Post(const parser::EnumDef &);
872 bool Pre(const parser::Enumerator &);
873 bool Pre(const parser::AccessSpec &);
874 bool Pre(const parser::AsynchronousStmt &);
875 bool Pre(const parser::ContiguousStmt &);
876 bool Pre(const parser::ExternalStmt &);
877 bool Pre(const parser::IntentStmt &);
878 bool Pre(const parser::IntrinsicStmt &);
879 bool Pre(const parser::OptionalStmt &);
880 bool Pre(const parser::ProtectedStmt &);
881 bool Pre(const parser::ValueStmt &);
882 bool Pre(const parser::VolatileStmt &);
883 bool Pre(const parser::AllocatableStmt &) { in Pre()
887 void Post(const parser::AllocatableStmt &) { objectDeclAttr_ = std::nullopt; } in Post()
888 bool Pre(const parser::TargetStmt &) { in Pre()
892 void Post(const parser::TargetStmt &) { objectDeclAttr_ = std::nullopt; } in Post()
893 void Post(const parser::DimensionStmt::Declaration &);
894 void Post(const parser::CodimensionDecl &);
895 bool Pre(const parser::TypeDeclarationStmt &) { return BeginDecl(); } in Pre()
896 void Post(const parser::TypeDeclarationStmt &);
897 void Post(const parser::IntegerTypeSpec &);
898 void Post(const parser::IntrinsicTypeSpec::Real &);
899 void Post(const parser::IntrinsicTypeSpec::Complex &);
900 void Post(const parser::IntrinsicTypeSpec::Logical &);
901 void Post(const parser::IntrinsicTypeSpec::Character &);
902 void Post(const parser::CharSelector::LengthAndKind &);
903 void Post(const parser::CharLength &);
904 void Post(const parser::LengthSelector &);
905 bool Pre(const parser::KindParam &);
906 bool Pre(const parser::DeclarationTypeSpec::Type &);
907 void Post(const parser::DeclarationTypeSpec::Type &);
908 bool Pre(const parser::DeclarationTypeSpec::Class &);
909 void Post(const parser::DeclarationTypeSpec::Class &);
910 void Post(const parser::DeclarationTypeSpec::Record &);
911 void Post(const parser::DerivedTypeSpec &);
912 bool Pre(const parser::DerivedTypeDef &);
913 bool Pre(const parser::DerivedTypeStmt &);
914 void Post(const parser::DerivedTypeStmt &);
915 bool Pre(const parser::TypeParamDefStmt &) { return BeginDecl(); } in Pre()
916 void Post(const parser::TypeParamDefStmt &);
917 bool Pre(const parser::TypeAttrSpec::Extends &);
918 bool Pre(const parser::PrivateStmt &);
919 bool Pre(const parser::SequenceStmt &);
920 bool Pre(const parser::ComponentDefStmt &) { return BeginDecl(); } in Pre()
921 void Post(const parser::ComponentDefStmt &) { EndDecl(); } in Post()
922 void Post(const parser::ComponentDecl &);
923 void Post(const parser::FillDecl &);
924 bool Pre(const parser::ProcedureDeclarationStmt &);
925 void Post(const parser::ProcedureDeclarationStmt &);
926 bool Pre(const parser::DataComponentDefStmt &); // returns false
927 bool Pre(const parser::ProcComponentDefStmt &);
928 void Post(const parser::ProcComponentDefStmt &);
929 bool Pre(const parser::ProcPointerInit &);
930 void Post(const parser::ProcInterface &);
931 void Post(const parser::ProcDecl &);
932 bool Pre(const parser::TypeBoundProcedurePart &);
933 void Post(const parser::TypeBoundProcedurePart &);
934 void Post(const parser::ContainsStmt &);
935 bool Pre(const parser::TypeBoundProcBinding &) { return BeginAttrs(); } in Pre()
936 void Post(const parser::TypeBoundProcBinding &) { EndAttrs(); } in Post()
937 void Post(const parser::TypeBoundProcedureStmt::WithoutInterface &);
938 void Post(const parser::TypeBoundProcedureStmt::WithInterface &);
939 void Post(const parser::FinalProcedureStmt &);
940 bool Pre(const parser::TypeBoundGenericStmt &);
941 bool Pre(const parser::StructureDef &); // returns false
942 bool Pre(const parser::Union::UnionStmt &);
943 bool Pre(const parser::StructureField &);
944 void Post(const parser::StructureField &);
945 bool Pre(const parser::AllocateStmt &);
946 void Post(const parser::AllocateStmt &);
947 bool Pre(const parser::StructureConstructor &);
948 bool Pre(const parser::NamelistStmt::Group &);
949 bool Pre(const parser::IoControlSpec &);
950 bool Pre(const parser::CommonStmt::Block &);
951 bool Pre(const parser::CommonBlockObject &);
952 void Post(const parser::CommonBlockObject &);
953 bool Pre(const parser::EquivalenceStmt &);
954 bool Pre(const parser::SaveStmt &);
955 bool Pre(const parser::BasedPointerStmt &);
958 const parser::Name &, const parser::InitialDataTarget &);
960 const parser::Name &, const parser::ProcPointerInit &);
962 const parser::Name &, const parser::ConstantExpr &);
963 void CheckExplicitInterface(const parser::Name &);
964 void CheckBindings(const parser::TypeBoundProcedureStmt::WithoutInterface &);
966 const parser::Name *ResolveDesignator(const parser::Designator &);
971 Symbol &DeclareObjectEntity(const parser::Name &, Attrs = Attrs{});
973 Symbol &FindOrDeclareEnclosingEntity(const parser::Name &);
977 Symbol *DeclareLocalEntity(const parser::Name &);
982 Symbol *DeclareStatementEntity(const parser::DoVariable &,
983 const std::optional<parser::IntegerTypeSpec> &);
984 Symbol &MakeCommonBlockSymbol(const parser::Name &);
985 Symbol &MakeCommonBlockSymbol(const std::optional<parser::Name> &);
986 bool CheckUseError(const parser::Name &);
992 bool NameIsKnownOrIntrinsic(const parser::Name &);
997 const parser::Name *ResolveStructureComponent(
998 const parser::StructureComponent &);
999 const parser::Name *ResolveDataRef(const parser::DataRef &);
1000 const parser::Name *ResolveName(const parser::Name &);
1001 bool PassesSharedLocalityChecks(const parser::Name &name, Symbol &symbol);
1002 Symbol *NoteInterfaceName(const parser::Name &);
1006 const parser::DoVariable &name) { in BeginCheckOnIndexUseInOwnBounds()
1027 const parser::Name *extends{nullptr}; // EXTENDS(name)
1037 const parser::Name *interfaceName_{nullptr};
1039 std::multimap<Symbol *, const parser::Name *> genericBindings_;
1052 bool HandleAttributeStmt(Attr, const std::list<parser::Name> &);
1053 Symbol &HandleAttributeStmt(Attr, const parser::Name &);
1054 Symbol &DeclareUnknownEntity(const parser::Name &, Attrs);
1055 Symbol &DeclareProcEntity(const parser::Name &, Attrs, const ProcInterface &);
1056 void SetType(const parser::Name &, const DeclTypeSpec &);
1057 std::optional<DerivedTypeSpec> ResolveDerivedType(const parser::Name &);
1059 const parser::Name &, const parser::Name *);
1061 Symbol *MakeTypeSymbol(const parser::Name &, Details &&);
1062 bool OkToAddComponent(const parser::Name &, const Symbol * = nullptr);
1064 const parser::TypeParamValue &, common::TypeParamAttr attr);
1070 bool HandleUnrestrictedSpecificIntrinsicFunction(const parser::Name &);
1071 const parser::Name *FindComponent(const parser::Name *, const parser::Name &);
1072 void Initialization(const parser::Name &, const parser::Initialization &,
1074 bool PassesLocalityChecks(const parser::Name &name, Symbol &symbol);
1075 bool CheckForHostAssociatedImplicit(const parser::Name &);
1080 Symbol &DeclareEntity(const parser::Name &name, Attrs attrs) { in DeclareEntity()
1136 bool Pre(const parser::ConcurrentHeader &);
1137 bool Pre(const parser::LocalitySpec::Local &);
1138 bool Pre(const parser::LocalitySpec::LocalInit &);
1139 bool Pre(const parser::LocalitySpec::Shared &);
1140 bool Pre(const parser::AcSpec &);
1141 bool Pre(const parser::AcImpliedDo &);
1142 bool Pre(const parser::DataImpliedDo &);
1143 bool Pre(const parser::DataIDoObject &);
1144 bool Pre(const parser::DataStmtObject &);
1145 bool Pre(const parser::DataStmtValue &);
1146 bool Pre(const parser::DoConstruct &);
1147 void Post(const parser::DoConstruct &);
1148 bool Pre(const parser::ForallConstruct &);
1149 void Post(const parser::ForallConstruct &);
1150 bool Pre(const parser::ForallStmt &);
1151 void Post(const parser::ForallStmt &);
1152 bool Pre(const parser::BlockStmt &);
1153 bool Pre(const parser::EndBlockStmt &);
1154 void Post(const parser::Selector &);
1155 void Post(const parser::AssociateStmt &);
1156 void Post(const parser::EndAssociateStmt &);
1157 bool Pre(const parser::Association &);
1158 void Post(const parser::SelectTypeStmt &);
1159 void Post(const parser::SelectRankStmt &);
1160 bool Pre(const parser::SelectTypeConstruct &);
1161 void Post(const parser::SelectTypeConstruct &);
1162 bool Pre(const parser::SelectTypeConstruct::TypeCase &);
1163 void Post(const parser::SelectTypeConstruct::TypeCase &);
1165 bool Pre(const parser::SelectRankConstruct::RankCase &);
1166 void Post(const parser::SelectRankConstruct::RankCase &);
1167 void Post(const parser::TypeGuardStmt::Guard &);
1168 void Post(const parser::SelectRankCaseStmt::Rank &);
1169 bool Pre(const parser::ChangeTeamStmt &);
1170 void Post(const parser::EndChangeTeamStmt &);
1171 void Post(const parser::CoarrayAssociation &);
1174 bool Pre(const parser::WhereConstructStmt &x) { return CheckDef(x.t); } in Pre()
1175 bool Pre(const parser::ForallConstructStmt &x) { return CheckDef(x.t); } in Pre()
1176 bool Pre(const parser::CriticalStmt &x) { return CheckDef(x.t); } in Pre()
1177 bool Pre(const parser::LabelDoStmt &) { in Pre()
1180 bool Pre(const parser::NonLabelDoStmt &x) { return CheckDef(x.t); } in Pre()
1181 bool Pre(const parser::IfThenStmt &x) { return CheckDef(x.t); } in Pre()
1182 bool Pre(const parser::SelectCaseStmt &x) { return CheckDef(x.t); } in Pre()
1183 bool Pre(const parser::SelectRankConstruct &);
1184 void Post(const parser::SelectRankConstruct &);
1185 bool Pre(const parser::SelectRankStmt &x) { in Pre()
1188 bool Pre(const parser::SelectTypeStmt &x) { in Pre()
1193 void Post(const parser::MaskedElsewhereStmt &x) { CheckRef(x.t); } in Post()
1194 void Post(const parser::ElsewhereStmt &x) { CheckRef(x.v); } in Post()
1195 void Post(const parser::EndWhereStmt &x) { CheckRef(x.v); } in Post()
1196 void Post(const parser::EndForallStmt &x) { CheckRef(x.v); } in Post()
1197 void Post(const parser::EndCriticalStmt &x) { CheckRef(x.v); } in Post()
1198 void Post(const parser::EndDoStmt &x) { CheckRef(x.v); } in Post()
1199 void Post(const parser::ElseIfStmt &x) { CheckRef(x.t); } in Post()
1200 void Post(const parser::ElseStmt &x) { CheckRef(x.v); } in Post()
1201 void Post(const parser::EndIfStmt &x) { CheckRef(x.v); } in Post()
1202 void Post(const parser::CaseStmt &x) { CheckRef(x.t); } in Post()
1203 void Post(const parser::EndSelectStmt &x) { CheckRef(x.v); } in Post()
1204 void Post(const parser::SelectRankCaseStmt &x) { CheckRef(x.t); } in Post()
1205 void Post(const parser::TypeGuardStmt &x) { CheckRef(x.t); } in Post()
1206 void Post(const parser::CycleStmt &x) { CheckRef(x.v); } in Post()
1207 void Post(const parser::ExitStmt &x) { CheckRef(x.v); } in Post()
1217 parser::CharBlock source;
1222 const parser::Name *name{nullptr};
1229 return CheckDef(std::get<std::optional<parser::Name>>(t)); in CheckDef()
1232 CheckRef(std::get<std::optional<parser::Name>>(t)); in CheckRef()
1234 bool CheckDef(const std::optional<parser::Name> &);
1235 void CheckRef(const std::optional<parser::Name> &);
1242 Selector ResolveSelector(const parser::Selector &);
1243 void ResolveIndexName(const parser::ConcurrentControl &control);
1253 void AddAccSourceRange(const parser::CharBlock &);
1255 static bool NeedsScope(const parser::OpenACCBlockConstruct &);
1257 bool Pre(const parser::OpenACCBlockConstruct &);
1258 void Post(const parser::OpenACCBlockConstruct &);
1259 bool Pre(const parser::AccBeginBlockDirective &x) { in Pre()
1263 void Post(const parser::AccBeginBlockDirective &) { in Post()
1266 bool Pre(const parser::AccEndBlockDirective &x) { in Pre()
1270 void Post(const parser::AccEndBlockDirective &) { in Post()
1273 bool Pre(const parser::AccBeginLoopDirective &x) { in Pre()
1277 void Post(const parser::AccBeginLoopDirective &x) { in Post()
1282 bool AccVisitor::NeedsScope(const parser::OpenACCBlockConstruct &x) { in NeedsScope()
1283 const auto &beginBlockDir{std::get<parser::AccBeginBlockDirective>(x.t)}; in NeedsScope()
1284 const auto &beginDir{std::get<parser::AccBlockDirective>(beginBlockDir.t)}; in NeedsScope()
1297 void AccVisitor::AddAccSourceRange(const parser::CharBlock &source) { in AddAccSourceRange()
1302 bool AccVisitor::Pre(const parser::OpenACCBlockConstruct &x) { in Pre()
1309 void AccVisitor::Post(const parser::OpenACCBlockConstruct &x) { in Post()
1318 void AddOmpSourceRange(const parser::CharBlock &);
1320 static bool NeedsScope(const parser::OpenMPBlockConstruct &);
1322 bool Pre(const parser::OpenMPBlockConstruct &);
1323 void Post(const parser::OpenMPBlockConstruct &);
1324 bool Pre(const parser::OmpBeginBlockDirective &x) { in Pre()
1328 void Post(const parser::OmpBeginBlockDirective &) { in Post()
1331 bool Pre(const parser::OmpEndBlockDirective &x) { in Pre()
1335 void Post(const parser::OmpEndBlockDirective &) { in Post()
1339 bool Pre(const parser::OpenMPLoopConstruct &) { in Pre()
1343 void Post(const parser::OpenMPLoopConstruct &) { PopScope(); } in Post()
1344 bool Pre(const parser::OmpBeginLoopDirective &x) { in Pre()
1348 void Post(const parser::OmpBeginLoopDirective &) { in Post()
1351 bool Pre(const parser::OmpEndLoopDirective &x) { in Pre()
1355 void Post(const parser::OmpEndLoopDirective &) { in Post()
1359 bool Pre(const parser::OpenMPSectionsConstruct &) { in Pre()
1363 void Post(const parser::OpenMPSectionsConstruct &) { PopScope(); } in Post()
1364 bool Pre(const parser::OmpBeginSectionsDirective &x) { in Pre()
1368 void Post(const parser::OmpBeginSectionsDirective &) { in Post()
1371 bool Pre(const parser::OmpEndSectionsDirective &x) { in Pre()
1375 void Post(const parser::OmpEndSectionsDirective &) { in Post()
1380 bool OmpVisitor::NeedsScope(const parser::OpenMPBlockConstruct &x) { in NeedsScope()
1381 const auto &beginBlockDir{std::get<parser::OmpBeginBlockDirective>(x.t)}; in NeedsScope()
1382 const auto &beginDir{std::get<parser::OmpBlockDirective>(beginBlockDir.t)}; in NeedsScope()
1394 void OmpVisitor::AddOmpSourceRange(const parser::CharBlock &source) { in AddOmpSourceRange()
1399 bool OmpVisitor::Pre(const parser::OpenMPBlockConstruct &x) { in Pre()
1406 void OmpVisitor::Post(const parser::OpenMPBlockConstruct &x) { in Post()
1452 bool Pre(const parser::SpecificationPart &);
1453 void Post(const parser::Program &);
1454 bool Pre(const parser::ImplicitStmt &);
1455 void Post(const parser::PointerObject &);
1456 void Post(const parser::AllocateObject &);
1457 bool Pre(const parser::PointerAssignmentStmt &);
1458 void Post(const parser::Designator &);
1459 void Post(const parser::SubstringInquiry &);
1461 void Post(const parser::LoopBounds<A, B> &x) { in Post()
1462 ResolveName(*parser::Unwrap<parser::Name>(x.name)); in Post()
1464 void Post(const parser::ProcComponentRef &);
1465 bool Pre(const parser::FunctionReference &);
1466 bool Pre(const parser::CallStmt &);
1467 bool Pre(const parser::ImportStmt &);
1468 void Post(const parser::TypeGuardStmt &);
1469 bool Pre(const parser::StmtFunctionStmt &);
1470 bool Pre(const parser::DefinedOpName &);
1471 bool Pre(const parser::ProgramUnit &);
1472 void Post(const parser::AssignStmt &);
1473 void Post(const parser::AssignedGotoStmt &);
1476 bool Pre(const parser::MainProgram &) { in Pre()
1479 bool Pre(const parser::FunctionSubprogram &) { in Pre()
1482 bool Pre(const parser::SubroutineSubprogram &) { in Pre()
1485 bool Pre(const parser::SeparateModuleSubprogram &) { in Pre()
1488 bool Pre(const parser::Module &) { in Pre()
1491 bool Pre(const parser::Submodule &) { in Pre()
1494 bool Pre(const parser::BlockData &) { in Pre()
1498 void NoteExecutablePartCall(Symbol::Flag, const parser::Call &);
1508 void PreSpecificationConstruct(const parser::SpecificationConstruct &);
1509 void CreateCommonBlockSymbols(const parser::CommonStmt &);
1510 void CreateGeneric(const parser::GenericSpec &);
1511 void FinishSpecificationPart(const std::list<parser::DeclarationConstruct> &);
1512 void AnalyzeStmtFunctionStmt(const parser::StmtFunctionStmt &);
1515 void HandleCall(Symbol::Flag, const parser::Call &);
1516 void HandleProcedureName(Symbol::Flag, const parser::Name &);
1518 bool SetProcFlag(const parser::Name &, Symbol &, Symbol::Flag);
1569 parser::Location fromLetter, parser::Location toLetter) { in SetTypeMapping()
1573 context_.Say(parser::CharBlock{fromLetter}, in SetTypeMapping()
1617 parser::Walk(x, *this_); in Walk()
1621 const parser::Name &name, MiscDetails::Kind kind) { in MakePlaceholder()
1683 label = parser::ToLowerCaseLetters(symbol.name().ToString()); in SetBindNameOn()
1700 void AttrsVisitor::Post(const parser::LanguageBindingSpec &x) { in Post()
1708 bool AttrsVisitor::Pre(const parser::IntentSpec &x) { in Pre()
1713 bool AttrsVisitor::Pre(const parser::Pass &x) { in Pre()
1787 bool DeclTypeSpecVisitor::Pre(const parser::TypeGuardStmt &) { in Pre()
1791 void DeclTypeSpecVisitor::Post(const parser::TypeGuardStmt &) { in Post()
1795 void DeclTypeSpecVisitor::Post(const parser::TypeSpec &typeSpec) { in Post()
1820 const parser::IntrinsicTypeSpec::DoublePrecision &) { in Post()
1824 const parser::IntrinsicTypeSpec::DoubleComplex &) { in Post()
1837 void DeclTypeSpecVisitor::Post(const parser::DeclarationTypeSpec::ClassStar &) { in Post()
1840 void DeclTypeSpecVisitor::Post(const parser::DeclarationTypeSpec::TypeStar &) { in Post()
1853 TypeCategory category, const std::optional<parser::KindSelector> &kind) { in GetKindParamExpr()
1871 void ImplicitRulesVisitor::Post(const parser::ParameterStmt &) { in Post()
1875 bool ImplicitRulesVisitor::Pre(const parser::ImplicitStmt &x) { in Pre()
1881 [&](const std::list<parser::ImplicitSpec> &) { in Pre()
1896 bool ImplicitRulesVisitor::Pre(const parser::LetterSpec &x) { in Pre()
1897 auto loLoc{std::get<parser::Location>(x.t)}; in Pre()
1899 if (auto hiLocOpt{std::get<std::optional<parser::Location>>(x.t)}) { in Pre()
1911 bool ImplicitRulesVisitor::Pre(const parser::ImplicitSpec &) { in Pre()
1917 void ImplicitRulesVisitor::Post(const parser::ImplicitSpec &) { in Post()
1994 void ArraySpecVisitor::Post(const parser::ArraySpec &x) { in Post()
1998 void ArraySpecVisitor::Post(const parser::ComponentArraySpec &x) { in Post()
2002 void ArraySpecVisitor::Post(const parser::CoarraySpec &x) { in Post()
2087 void ScopeHandler::SayAlreadyDeclared(const parser::Name &name, Symbol &prev) { in SayAlreadyDeclared()
2115 void ScopeHandler::SayWithReason(const parser::Name &name, Symbol &symbol, in SayWithReason()
2122 const parser::Name &name, Symbol &symbol, MessageFixedText &&msg) { in SayWithDecl()
2133 const parser::Name &name, Symbol &symbol) { in SayLocalMustBeVariable()
2155 void ScopeHandler::Say2(const parser::Name &name, MessageFixedText &&msg1, in Say2()
2250 Symbol *ScopeHandler::FindSymbol(const parser::Name &name) { in FindSymbol()
2253 Symbol *ScopeHandler::FindSymbol(const Scope &scope, const parser::Name &name) { in FindSymbol()
2285 Symbol &ScopeHandler::MakeSymbol(const parser::Name &name, Attrs attrs) { in MakeSymbol()
2289 const parser::Name &name, const Symbol &hostSymbol) { in MakeHostAssocSymbol()
2305 const Scope &scope, const parser::Name &name) { in FindInScope()
2321 const Scope &scope, const parser::Name &name) { in FindInTypeOrParents()
2324 Symbol *ScopeHandler::FindInTypeOrParents(const parser::Name &name) { in FindInTypeOrParents()
2328 void ScopeHandler::EraseSymbol(const parser::Name &name) { in EraseSymbol()
2501 TypeCategory category, const std::optional<parser::KindSelector> &kind) { in MakeNumericType()
2511 const std::optional<parser::KindSelector> &kind) { in MakeLogicalType()
2520 void ScopeHandler::NotePossibleBadForwardRef(const parser::Name &name) { in NotePossibleBadForwardRef()
2587 bool ModuleVisitor::Pre(const parser::Only &x) { in Pre()
2589 [&](const Indirection<parser::GenericSpec> &generic) { in Pre()
2594 [&](const parser::Name &name) { in Pre()
2598 [&](const parser::Rename &rename) { Walk(rename); }, in Pre()
2604 bool ModuleVisitor::Pre(const parser::Rename::Names &x) { in Pre()
2616 bool ModuleVisitor::Pre(const parser::Rename::Operators &x) { in Pre()
2617 const parser::DefinedOpName &local{std::get<0>(x.t)}; in Pre()
2618 const parser::DefinedOpName &use{std::get<1>(x.t)}; in Pre()
2639 bool ModuleVisitor::Pre(const parser::UseStmt &x) { in Pre()
2642 isIntrinsic = *x.nature == parser::UseStmt::ModuleNature::Intrinsic; in Pre()
2658 void ModuleVisitor::Post(const parser::UseStmt &x) { in Post()
2659 if (const auto *list{std::get_if<std::list<parser::Rename>>(&x.u)}) { in Post()
2665 [&](const parser::Rename::Names &names) { in Post()
2668 [&](const parser::Rename::Operators &ops) { in Post()
2942 const parser::Name &name, const parser::ParentIdentifier &parentId) { in BeginSubmodule()
2943 const auto &ancestorName{std::get<parser::Name>(parentId.t)}; in BeginSubmodule()
2948 std::get<std::optional<parser::Name>>(parentId.t)}) { in BeginSubmodule()
2972 void ModuleVisitor::BeginModule(const parser::Name &name, bool isSubmodule) { in BeginModule()
2985 Scope *ModuleVisitor::FindModule(const parser::Name &name, in FindModule()
3010 bool InterfaceVisitor::Pre(const parser::InterfaceStmt &x) { in Pre()
3011 bool isAbstract{std::holds_alternative<parser::Abstract>(x.u)}; in Pre()
3016 void InterfaceVisitor::Post(const parser::InterfaceStmt &) { EndAttrs(); } in Post()
3018 void InterfaceVisitor::Post(const parser::EndInterfaceStmt &) { in Post()
3023 bool InterfaceVisitor::Pre(const parser::GenericSpec &x) { in Pre()
3030 bool InterfaceVisitor::Pre(const parser::ProcedureStmt &x) { in Pre()
3035 auto kind{std::get<parser::ProcedureStmt::Kind>(x.t)}; in Pre()
3036 const auto &names{std::get<std::list<parser::Name>>(x.t)}; in Pre()
3041 bool InterfaceVisitor::Pre(const parser::GenericStmt &) { in Pre()
3045 void InterfaceVisitor::Post(const parser::GenericStmt &x) { in Post()
3046 if (auto &accessSpec{std::get<std::optional<parser::AccessSpec>>(x.t)}) { in Post()
3049 const auto &names{std::get<std::list<parser::Name>>(x.t)}; in Post()
3065 const std::list<parser::Name> &names, ProcedureKind kind) { in AddSpecificProcs()
3082 const parser::Name *name{it->second.first}; in ResolveSpecificsInGeneric()
3180 bool SubprogramVisitor::HandleStmtFunction(const parser::StmtFunctionStmt &x) { in HandleStmtFunction()
3181 const auto &name{std::get<parser::Name>(x.t)}; in HandleStmtFunction()
3202 for (const auto &dummyName : std::get<std::list<parser::Name>>(x.t)) { in HandleStmtFunction()
3223 const auto &parsedExpr{std::get<parser::Scalar<parser::Expr>>(x.t)}; in HandleStmtFunction()
3232 bool SubprogramVisitor::Pre(const parser::Suffix &suffix) { in Pre()
3255 bool SubprogramVisitor::Pre(const parser::PrefixSpec &x) { in Pre()
3257 if (const auto *parsedType{std::get_if<parser::DeclarationTypeSpec>(&x.u)}) { in Pre()
3273 bool SubprogramVisitor::Pre(const parser::InterfaceBody::Subroutine &x) { in Pre()
3274 const auto &name{std::get<parser::Name>( in Pre()
3275 std::get<parser::Statement<parser::SubroutineStmt>>(x.t).statement.t)}; in Pre()
3278 void SubprogramVisitor::Post(const parser::InterfaceBody::Subroutine &x) { in Post()
3279 const auto &stmt{std::get<parser::Statement<parser::SubroutineStmt>>(x.t)}; in Post()
3281 &std::get<std::optional<parser::LanguageBindingSpec>>(stmt.statement.t)); in Post()
3283 bool SubprogramVisitor::Pre(const parser::InterfaceBody::Function &x) { in Pre()
3284 const auto &name{std::get<parser::Name>( in Pre()
3285 std::get<parser::Statement<parser::FunctionStmt>>(x.t).statement.t)}; in Pre()
3288 void SubprogramVisitor::Post(const parser::InterfaceBody::Function &x) { in Post()
3289 const auto &stmt{std::get<parser::Statement<parser::FunctionStmt>>(x.t)}; in Post()
3291 std::get<std::optional<parser::Suffix>>(stmt.statement.t)}; in Post()
3295 bool SubprogramVisitor::Pre(const parser::SubroutineStmt &stmt) { in Pre()
3297 Walk(std::get<std::list<parser::PrefixSpec>>(stmt.t)); in Pre()
3298 Walk(std::get<parser::Name>(stmt.t)); in Pre()
3299 Walk(std::get<std::list<parser::DummyArg>>(stmt.t)); in Pre()
3301 const auto &name{std::get<parser::Name>(stmt.t)}; in Pre()
3303 for (const auto &dummyArg : std::get<std::list<parser::DummyArg>>(stmt.t)) { in Pre()
3304 if (const auto *dummyName{std::get_if<parser::Name>(&dummyArg.u)}) { in Pre()
3313 bool SubprogramVisitor::Pre(const parser::FunctionStmt &) { in Pre()
3319 bool SubprogramVisitor::Pre(const parser::EntryStmt &) { return BeginAttrs(); } in Pre()
3321 void SubprogramVisitor::Post(const parser::FunctionStmt &stmt) { in Post()
3322 const auto &name{std::get<parser::Name>(stmt.t)}; in Post()
3324 for (const auto &dummyName : std::get<std::list<parser::Name>>(stmt.t)) { in Post()
3328 const parser::Name *funcResultName; in Post()
3389 const parser::Name &name) { in PostSubprogramStmt()
3398 void SubprogramVisitor::Post(const parser::EntryStmt &stmt) { in Post()
3399 if (const auto &suffix{std::get<std::optional<parser::Suffix>>(stmt.t)}) { in Post()
3407 const parser::EntryStmt &stmt, Symbol &subprogram) { in CreateEntry()
3408 const auto &entryName{std::get<parser::Name>(stmt.t)}; in CreateEntry()
3427 const auto &suffix{std::get<std::optional<parser::Suffix>>(stmt.t)}; in CreateEntry()
3433 const parser::Name &resultName{*suffix->resultName}; in CreateEntry()
3504 void SubprogramVisitor::PostEntryStmt(const parser::EntryStmt &stmt) { in PostEntryStmt()
3507 const auto &name{std::get<parser::Name>(stmt.t)}; in PostEntryStmt()
3536 for (const auto &dummyArg : std::get<std::list<parser::DummyArg>>(stmt.t)) { in PostEntryStmt()
3537 if (const auto *dummyName{std::get_if<parser::Name>(&dummyArg.u)}) { in PostEntryStmt()
3570 bool SubprogramVisitor::BeginMpSubprogram(const parser::Name &name) { in BeginMpSubprogram()
3607 bool SubprogramVisitor::BeginSubprogram(const parser::Name &name, in BeginSubprogram()
3609 const parser::LanguageBindingSpec *bindingSpec, in BeginSubprogram()
3654 std::optional<parser::CharBlock> stmtSource, in EndSubprogram()
3655 const std::optional<parser::LanguageBindingSpec> *binding) { in EndSubprogram()
3672 const parser::Name &name, Symbol &symbol, Symbol::Flag subpFlag) { in HandlePreviousCalls()
3703 const parser::Name &name, Symbol::Flag subpFlag) { in CheckExtantProc()
3718 Symbol &SubprogramVisitor::PushSubprogramScope(const parser::Name &name, in PushSubprogramScope()
3719 Symbol::Flag subpFlag, const parser::LanguageBindingSpec *bindingSpec) { in PushSubprogramScope()
3762 void SubprogramVisitor::PushBlockDataScope(const parser::Name &name) { in PushBlockDataScope()
3782 Symbol *SubprogramVisitor::GetSpecificFromGeneric(const parser::Name &name) { in GetSpecificFromGeneric()
3822 bool DeclarationVisitor::CheckUseError(const parser::Name &name) { in CheckUseError()
3847 void DeclarationVisitor::Post(const parser::TypeDeclarationStmt &) { in Post()
3870 void DeclarationVisitor::Post(const parser::DimensionStmt::Declaration &x) { in Post()
3871 DeclareObjectEntity(std::get<parser::Name>(x.t)); in Post()
3873 void DeclarationVisitor::Post(const parser::CodimensionDecl &x) { in Post()
3874 DeclareObjectEntity(std::get<parser::Name>(x.t)); in Post()
3877 bool DeclarationVisitor::Pre(const parser::Initialization &) { in Pre()
3884 void DeclarationVisitor::Post(const parser::EntityDecl &x) { in Post()
3885 const auto &name{std::get<parser::ObjectName>(x.t)}; in Post()
3889 if (const auto &init{std::get<std::optional<parser::Initialization>>(x.t)}) { in Post()
3897 void DeclarationVisitor::Post(const parser::PointerDecl &x) { in Post()
3898 const auto &name{std::get<parser::Name>(x.t)}; in Post()
3900 std::get<std::optional<parser::DeferredShapeSpecList>>(x.t)}) { in Post()
3908 HandleAttributeStmt(Attr::POINTER, std::get<parser::Name>(x.t)); in Post()
3912 bool DeclarationVisitor::Pre(const parser::BindEntity &x) { in Pre()
3913 auto kind{std::get<parser::BindEntity::Kind>(x.t)}; in Pre()
3914 auto &name{std::get<parser::Name>(x.t)}; in Pre()
3916 if (kind == parser::BindEntity::Kind::Object) { in Pre()
3935 bool DeclarationVisitor::Pre(const parser::OldParameterStmt &x) { in Pre()
3941 bool DeclarationVisitor::Pre(const parser::NamedConstantDef &x) { in Pre()
3942 auto &name{std::get<parser::NamedConstant>(x.t).v}; in Pre()
3951 const auto &expr{std::get<parser::ConstantExpr>(x.t)}; in Pre()
3993 bool DeclarationVisitor::Pre(const parser::NamedConstant &x) { in Pre()
3994 const parser::Name &name{x.v}; in Pre()
4003 bool DeclarationVisitor::Pre(const parser::Enumerator &enumerator) { in Pre()
4004 const parser::Name &name{std::get<parser::NamedConstant>(enumerator.t).v}; in Pre()
4023 if (auto &init{std::get<std::optional<parser::ScalarIntConstantExpr>>( in Pre()
4054 void DeclarationVisitor::Post(const parser::EnumDef &) { in Post()
4058 bool DeclarationVisitor::Pre(const parser::AccessSpec &x) { in Pre()
4069 bool DeclarationVisitor::Pre(const parser::AsynchronousStmt &x) { in Pre()
4072 bool DeclarationVisitor::Pre(const parser::ContiguousStmt &x) { in Pre()
4075 bool DeclarationVisitor::Pre(const parser::ExternalStmt &x) { in Pre()
4090 bool DeclarationVisitor::Pre(const parser::IntentStmt &x) { in Pre()
4091 auto &intentSpec{std::get<parser::IntentSpec>(x.t)}; in Pre()
4092 auto &names{std::get<std::list<parser::Name>>(x.t)}; in Pre()
4096 bool DeclarationVisitor::Pre(const parser::IntrinsicStmt &x) { in Pre()
4125 bool DeclarationVisitor::Pre(const parser::OptionalStmt &x) { in Pre()
4129 bool DeclarationVisitor::Pre(const parser::ProtectedStmt &x) { in Pre()
4132 bool DeclarationVisitor::Pre(const parser::ValueStmt &x) { in Pre()
4136 bool DeclarationVisitor::Pre(const parser::VolatileStmt &x) { in Pre()
4141 Attr attr, const std::list<parser::Name> &names) { in HandleAttributeStmt()
4148 Attr attr, const parser::Name &name) { in HandleAttributeStmt()
4183 void DeclarationVisitor::Post(const parser::ObjectDecl &x) { in Post()
4185 const auto &name{std::get<parser::ObjectName>(x.t)}; in Post()
4191 const parser::Name &name, Attrs attrs) { in DeclareUnknownEntity()
4238 const parser::Name &name, Attrs attrs, const ProcInterface &interface) { in DeclareProcEntity()
4265 const parser::Name &name, Attrs attrs) { in DeclareObjectEntity()
4301 void DeclarationVisitor::Post(const parser::IntegerTypeSpec &x) { in Post()
4304 void DeclarationVisitor::Post(const parser::IntrinsicTypeSpec::Real &x) { in Post()
4307 void DeclarationVisitor::Post(const parser::IntrinsicTypeSpec::Complex &x) { in Post()
4310 void DeclarationVisitor::Post(const parser::IntrinsicTypeSpec::Logical &x) { in Post()
4313 void DeclarationVisitor::Post(const parser::IntrinsicTypeSpec::Character &) { in Post()
4325 void DeclarationVisitor::Post(const parser::CharSelector::LengthAndKind &x) { in Post()
4339 void DeclarationVisitor::Post(const parser::CharLength &x) { in Post()
4345 std::get<parser::TypeParamValue>(x.u), common::TypeParamAttr::Len); in Post()
4348 void DeclarationVisitor::Post(const parser::LengthSelector &x) { in Post()
4349 if (const auto *param{std::get_if<parser::TypeParamValue>(&x.u)}) { in Post()
4354 bool DeclarationVisitor::Pre(const parser::KindParam &x) { in Pre()
4356 parser::Scalar<parser::Integer<parser::Constant<parser::Name>>>>( in Pre()
4358 const parser::Name &name{kind->thing.thing.thing}; in Pre()
4366 bool DeclarationVisitor::Pre(const parser::DeclarationTypeSpec::Type &) { in Pre()
4371 void DeclarationVisitor::Post(const parser::DeclarationTypeSpec::Type &type) { in Post()
4372 const parser::Name &derivedName{std::get<parser::Name>(type.derived.t)}; in Post()
4378 bool DeclarationVisitor::Pre(const parser::DeclarationTypeSpec::Class &) { in Pre()
4384 const parser::DeclarationTypeSpec::Class &parsedClass) { in Post()
4385 const auto &typeName{std::get<parser::Name>(parsedClass.derived.t)}; in Post()
4394 void DeclarationVisitor::Post(const parser::DerivedTypeSpec &x) { in Post()
4395 const auto &typeName{std::get<parser::Name>(x.t)}; in Post()
4402 std::get<std::list<parser::TypeParamSpec>>(x.t)) { in Post()
4404 std::get<std::optional<parser::Keyword>>(typeParamSpec.t)}; in Post()
4413 const auto &value{std::get<parser::TypeParamValue>(typeParamSpec.t)}; in Post()
4468 void DeclarationVisitor::Post(const parser::DeclarationTypeSpec::Record &rec) { in Post()
4487 bool DeclarationVisitor::Pre(const parser::DerivedTypeDef &x) { in Pre()
4488 auto &stmt{std::get<parser::Statement<parser::DerivedTypeStmt>>(x.t)}; in Pre()
4490 Walk(std::get<std::list<parser::Statement<parser::TypeParamDefStmt>>>(x.t)); in Pre()
4497 for (auto &paramName : std::get<std::list<parser::Name>>(stmt.statement.t)) { in Pre()
4526 Walk(std::get<std::list<parser::Statement<parser::PrivateOrSequence>>>(x.t)); in Pre()
4528 std::get<std::list<parser::Statement<parser::ComponentDefStmt>>>(x.t)}; in Pre()
4545 Walk(std::get<std::optional<parser::TypeBoundProcedurePart>>(x.t)); in Pre()
4546 Walk(std::get<parser::Statement<parser::EndTypeStmt>>(x.t)); in Pre()
4552 bool DeclarationVisitor::Pre(const parser::DerivedTypeStmt &) { in Pre()
4555 void DeclarationVisitor::Post(const parser::DerivedTypeStmt &x) { in Post()
4556 auto &name{std::get<parser::Name>(x.t)}; in Post()
4590 void DeclarationVisitor::Post(const parser::TypeParamDefStmt &x) { in Post()
4593 for (auto &decl : std::get<std::list<parser::TypeParamDecl>>(x.t)) { in Post()
4594 auto &name{std::get<parser::Name>(decl.t)}; in Post()
4598 std::get<std::optional<parser::ScalarIntConstantExpr>>(decl.t)}) { in Post()
4610 bool DeclarationVisitor::Pre(const parser::TypeAttrSpec::Extends &x) { in Pre()
4620 bool DeclarationVisitor::Pre(const parser::PrivateStmt &) { in Pre()
4634 bool DeclarationVisitor::Pre(const parser::SequenceStmt &) { in Pre()
4642 void DeclarationVisitor::Post(const parser::ComponentDecl &x) { in Post()
4643 const auto &name{std::get<parser::Name>(x.t)}; in Post()
4688 if (auto &init{std::get<std::optional<parser::Initialization>>(x.t)}) { in Post()
4697 void DeclarationVisitor::Post(const parser::FillDecl &x) { in Post()
4699 const auto &name{std::get<parser::Name>(x.t)}; in Post()
4707 bool DeclarationVisitor::Pre(const parser::ProcedureDeclarationStmt &x) { in Pre()
4709 const auto &procAttrSpec{std::get<std::list<parser::ProcAttrSpec>>(x.t)}; in Pre()
4710 for (const parser::ProcAttrSpec &procAttr : procAttrSpec) { in Pre()
4711 if (auto *bindC{std::get_if<parser::LanguageBindingSpec>(&procAttr.u)}) { in Pre()
4720 void DeclarationVisitor::Post(const parser::ProcedureDeclarationStmt &) { in Post()
4725 bool DeclarationVisitor::Pre(const parser::DataComponentDefStmt &x) { in Pre()
4728 Walk(std::get<std::list<parser::ComponentAttrSpec>>(x.t)); in Pre()
4731 Walk(std::get<parser::DeclarationTypeSpec>(x.t)); in Pre()
4747 Walk(std::get<std::list<parser::ComponentOrFill>>(x.t)); in Pre()
4750 bool DeclarationVisitor::Pre(const parser::ProcComponentDefStmt &) { in Pre()
4754 void DeclarationVisitor::Post(const parser::ProcComponentDefStmt &) { in Post()
4757 bool DeclarationVisitor::Pre(const parser::ProcPointerInit &x) { in Pre()
4758 if (auto *name{std::get_if<parser::Name>(&x.u)}) { in Pre()
4763 void DeclarationVisitor::Post(const parser::ProcInterface &x) { in Post()
4764 if (auto *name{std::get_if<parser::Name>(&x.u)}) { in Post()
4769 void DeclarationVisitor::Post(const parser::ProcDecl &x) { in Post()
4770 const auto &name{std::get<parser::Name>(x.t)}; in Post()
4796 bool DeclarationVisitor::Pre(const parser::TypeBoundProcedurePart &) { in Pre()
4802 void DeclarationVisitor::Post(const parser::TypeBoundProcedurePart &) { in Post()
4834 void DeclarationVisitor::Post(const parser::ContainsStmt &) { in Post()
4841 const parser::TypeBoundProcedureStmt::WithoutInterface &x) { in Post()
4846 auto &bindingName{std::get<parser::Name>(declaration.t)}; in Post()
4847 auto &optName{std::get<std::optional<parser::Name>>(declaration.t)}; in Post()
4848 const parser::Name &procedureName{optName ? *optName : bindingName}; in Post()
4863 const parser::TypeBoundProcedureStmt::WithoutInterface &tbps) { in CheckBindings()
4866 auto &bindingName{std::get<parser::Name>(declaration.t)}; in CheckBindings()
4891 const parser::TypeBoundProcedureStmt::WithInterface &x) { in Post()
4908 void DeclarationVisitor::Post(const parser::FinalProcedureStmt &x) { in Post()
4928 bool DeclarationVisitor::Pre(const parser::TypeBoundGenericStmt &x) { in Pre()
4929 const auto &accessSpec{std::get<std::optional<parser::AccessSpec>>(x.t)}; in Pre()
4930 const auto &genericSpec{std::get<Indirection<parser::GenericSpec>>(x.t)}; in Pre()
4931 const auto &bindingNames{std::get<std::list<parser::Name>>(x.t)}; in Pre()
4934 bool isPrivate{accessSpec ? accessSpec->v == parser::AccessSpec::Kind::Private in Pre()
4965 for (const parser::Name &bindingName : bindingNames) { in Pre()
4973 bool DeclarationVisitor::Pre(const parser::StructureDef &def) { in Pre()
4975 std::get<parser::Statement<parser::StructureStmt>>(def.t)}; in Pre()
4985 const parser::StructureStmt &structStmt{structureStatement.statement}; in Pre()
4986 const auto &name{std::get<std::optional<parser::Name>>(structStmt.t)}; in Pre()
4989 auto &mutableName{const_cast<std::optional<parser::Name> &>(name)}; in Pre()
4991 parser::Name{context().GetTempName(currScope()), nullptr}); in Pre()
4999 const auto &fields{std::get<std::list<parser::StructureField>>(def.t)}; in Pre()
5016 const auto &decls{std::get<std::list<parser::EntityDecl>>(structStmt.t)}; in Pre()
5026 bool DeclarationVisitor::Pre(const parser::Union::UnionStmt &) { in Pre()
5031 bool DeclarationVisitor::Pre(const parser::StructureField &x) { in Pre()
5032 if (std::holds_alternative<parser::Statement<parser::DataComponentDefStmt>>( in Pre()
5039 void DeclarationVisitor::Post(const parser::StructureField &x) { in Post()
5040 if (std::holds_alternative<parser::Statement<parser::DataComponentDefStmt>>( in Post()
5046 bool DeclarationVisitor::Pre(const parser::AllocateStmt &) { in Pre()
5050 void DeclarationVisitor::Post(const parser::AllocateStmt &) { in Post()
5054 bool DeclarationVisitor::Pre(const parser::StructureConstructor &x) { in Pre()
5055 auto &parsedType{std::get<parser::DerivedTypeSpec>(x.t)}; in Pre()
5072 std::get<std::list<parser::ComponentSpec>>(x.t)) { in Pre()
5075 Walk(std::get<parser::ComponentDataSource>(component.t)); in Pre()
5076 if (const auto &kw{std::get<std::optional<parser::Keyword>>(component.t)}) { in Pre()
5083 bool DeclarationVisitor::Pre(const parser::BasedPointerStmt &x) { in Pre()
5084 for (const parser::BasedPointer &bp : x.v) { in Pre()
5085 const parser::ObjectName &pointerName{std::get<0>(bp.t)}; in Pre()
5086 const parser::ObjectName &pointeeName{std::get<1>(bp.t)}; in Pre()
5137 Walk(std::get<std::optional<parser::ArraySpec>>(bp.t)); in Pre()
5155 bool DeclarationVisitor::Pre(const parser::NamelistStmt::Group &x) { in Pre()
5159 const auto &groupName{std::get<parser::Name>(x.t)}; in Pre()
5173 for (const parser::NamelistStmt::Group *group : deferred->namelistGroups) { in FinishNamelists()
5174 if (auto *groupSymbol{FindInScope(std::get<parser::Name>(group->t))}) { in FinishNamelists()
5176 for (const auto &name : std::get<std::list<parser::Name>>(group->t)) { in FinishNamelists()
5194 bool DeclarationVisitor::Pre(const parser::IoControlSpec &x) { in Pre()
5195 if (const auto *name{std::get_if<parser::Name>(&x.u)}) { in Pre()
5207 bool DeclarationVisitor::Pre(const parser::CommonStmt::Block &x) { in Pre()
5212 bool DeclarationVisitor::Pre(const parser::CommonBlockObject &) { in Pre()
5217 void DeclarationVisitor::Post(const parser::CommonBlockObject &x) { in Post()
5218 const auto &name{std::get<parser::Name>(x.t)}; in Post()
5228 bool DeclarationVisitor::Pre(const parser::EquivalenceStmt &x) { in Pre()
5231 for (const std::list<parser::EquivalenceObject> &set : x.v) { in Pre()
5246 for (const parser::EquivalenceObject &object : *set) { in CheckEquivalenceSets()
5266 bool DeclarationVisitor::Pre(const parser::SaveStmt &x) { in Pre()
5271 for (const parser::SavedEntity &y : x.v) { in Pre()
5272 auto kind{std::get<parser::SavedEntity::Kind>(y.t)}; in Pre()
5273 const auto &name{std::get<parser::Name>(y.t)}; in Pre()
5274 if (kind == parser::SavedEntity::Kind::Common) { in Pre()
5429 Symbol &DeclarationVisitor::MakeCommonBlockSymbol(const parser::Name &name) { in MakeCommonBlockSymbol()
5433 const std::optional<parser::Name> &name) { in MakeCommonBlockSymbol()
5437 return MakeCommonBlockSymbol(parser::Name{}); in MakeCommonBlockSymbol()
5441 bool DeclarationVisitor::NameIsKnownOrIntrinsic(const parser::Name &name) { in NameIsKnownOrIntrinsic()
5478 const parser::Name &name) { in HandleUnrestrictedSpecificIntrinsicFunction()
5516 const parser::Name &name, Symbol &symbol) { in PassesSharedLocalityChecks()
5530 const parser::Name &name, Symbol &symbol) { in PassesLocalityChecks()
5581 const parser::Name &name) { in FindOrDeclareEnclosingEntity()
5593 Symbol *DeclarationVisitor::DeclareLocalEntity(const parser::Name &name) { in DeclareLocalEntity()
5602 const parser::DoVariable &doVar, in DeclareStatementEntity()
5603 const std::optional<parser::IntegerTypeSpec> &type) { in DeclareStatementEntity()
5604 const parser::Name &name{doVar.thing.thing}; in DeclareStatementEntity()
5637 const parser::Name &name, const DeclTypeSpec &type) { in SetType()
5675 const parser::Name &name) { in ResolveDerivedType()
5719 const parser::Name &typeName, const parser::Name *extendsName) { in ResolveExtendsType()
5731 Symbol *DeclarationVisitor::NoteInterfaceName(const parser::Name &name) { in NoteInterfaceName()
5741 void DeclarationVisitor::CheckExplicitInterface(const parser::Name &name) { in CheckExplicitInterface()
5755 const parser::Name &name, Details &&details) { in MakeTypeSymbol()
5787 const parser::Name &name, const Symbol *extends) { in OkToAddComponent()
5792 parser::MessageFixedText msg; in OkToAddComponent()
5821 const parser::TypeParamValue &x, common::TypeParamAttr attr) { in GetParamValue()
5824 [=](const parser::ScalarIntExpr &x) { // C704 in GetParamValue()
5827 [=](const parser::Star &) { return ParamValue::Assumed(attr); }, in GetParamValue()
5828 [=](const parser::TypeParamValue::Deferred &) { in GetParamValue()
5838 const parser::ConcurrentControl &control) { in ResolveIndexName()
5839 const parser::Name &name{std::get<parser::Name>(control.t)}; in ResolveIndexName()
5873 EvaluateExpr(parser::Scalar{parser::Integer{common::Clone(name)}}); in ResolveIndexName()
5879 bool ConstructVisitor::Pre(const parser::ConcurrentHeader &header) { in Pre()
5881 Walk(std::get<std::optional<parser::IntegerTypeSpec>>(header.t)); in Pre()
5883 std::get<std::list<parser::ConcurrentControl>>(header.t)}; in Pre()
5888 Walk(std::get<std::optional<parser::ScalarLogicalExpr>>(header.t)); in Pre()
5893 bool ConstructVisitor::Pre(const parser::LocalitySpec::Local &x) { in Pre()
5902 bool ConstructVisitor::Pre(const parser::LocalitySpec::LocalInit &x) { in Pre()
5911 bool ConstructVisitor::Pre(const parser::LocalitySpec::Shared &x) { in Pre()
5925 bool ConstructVisitor::Pre(const parser::AcSpec &x) { in Pre()
5933 bool ConstructVisitor::Pre(const parser::AcImpliedDo &x) { in Pre()
5934 auto &values{std::get<std::list<parser::AcValue>>(x.t)}; in Pre()
5935 auto &control{std::get<parser::AcImpliedDoControl>(x.t)}; in Pre()
5936 auto &type{std::get<std::optional<parser::IntegerTypeSpec>>(control.t)}; in Pre()
5937 auto &bounds{std::get<parser::AcImpliedDoControl::Bounds>(control.t)}; in Pre()
5955 bool ConstructVisitor::Pre(const parser::DataImpliedDo &x) { in Pre()
5956 auto &objects{std::get<std::list<parser::DataIDoObject>>(x.t)}; in Pre()
5957 auto &type{std::get<std::optional<parser::IntegerTypeSpec>>(x.t)}; in Pre()
5958 auto &bounds{std::get<parser::DataImpliedDo::Bounds>(x.t)}; in Pre()
5980 bool ConstructVisitor::Pre(const parser::DataIDoObject &x) { in Pre()
5983 [&](const parser::Scalar<Indirection<parser::Designator>> &y) { in Pre()
5985 const parser::Name &first{parser::GetFirstName(y.thing.value())}; in Pre()
5990 [&](const Indirection<parser::DataImpliedDo> &y) { Walk(y.value()); }, in Pre()
5996 bool ConstructVisitor::Pre(const parser::DataStmtObject &x) { in Pre()
6004 [&](const Indirection<parser::Variable> &y) { in Pre()
6006 const parser::Name &first{ in Pre()
6007 parser::GetFirstName(y.value())}; in Pre()
6012 [&](const parser::DataImpliedDo &y) { in Pre()
6022 bool ConstructVisitor::Pre(const parser::DataStmtValue &x) { in Pre()
6023 const auto &data{std::get<parser::DataStmtConstant>(x.t)}; in Pre()
6024 auto &mutableData{const_cast<parser::DataStmtConstant &>(data)}; in Pre()
6025 if (auto *elem{parser::Unwrap<parser::ArrayElement>(mutableData)}) { in Pre()
6026 if (const auto *name{std::get_if<parser::Name>(&elem->base.u)}) { in Pre()
6039 bool ConstructVisitor::Pre(const parser::DoConstruct &x) { in Pre()
6045 void ConstructVisitor::Post(const parser::DoConstruct &x) { in Post()
6051 bool ConstructVisitor::Pre(const parser::ForallConstruct &) { in Pre()
6055 void ConstructVisitor::Post(const parser::ForallConstruct &) { PopScope(); } in Post()
6056 bool ConstructVisitor::Pre(const parser::ForallStmt &) { in Pre()
6060 void ConstructVisitor::Post(const parser::ForallStmt &) { PopScope(); } in Post()
6062 bool ConstructVisitor::Pre(const parser::BlockStmt &x) { in Pre()
6067 bool ConstructVisitor::Pre(const parser::EndBlockStmt &x) { in Pre()
6073 void ConstructVisitor::Post(const parser::Selector &x) { in Post()
6077 void ConstructVisitor::Post(const parser::AssociateStmt &x) { in Post()
6080 const auto assocCount{std::get<std::list<parser::Association>>(x.t).size()}; in Post()
6094 void ConstructVisitor::Post(const parser::EndAssociateStmt &x) { in Post()
6099 bool ConstructVisitor::Pre(const parser::Association &x) { in Pre()
6101 const auto &name{std::get<parser::Name>(x.t)}; in Pre()
6106 bool ConstructVisitor::Pre(const parser::ChangeTeamStmt &x) { in Pre()
6113 void ConstructVisitor::Post(const parser::CoarrayAssociation &x) { in Post()
6114 const auto &decl{std::get<parser::CodimensionDecl>(x.t)}; in Post()
6115 const auto &name{std::get<parser::Name>(decl.t)}; in Post()
6117 const auto &selector{std::get<parser::Selector>(x.t)}; in Post()
6132 void ConstructVisitor::Post(const parser::EndChangeTeamStmt &x) { in Post()
6138 bool ConstructVisitor::Pre(const parser::SelectTypeConstruct &) { in Pre()
6143 void ConstructVisitor::Post(const parser::SelectTypeConstruct &) { in Post()
6147 void ConstructVisitor::Post(const parser::SelectTypeStmt &x) { in Post()
6149 if (const std::optional<parser::Name> &name{std::get<1>(x.t)}) { in Post()
6186 void ConstructVisitor::Post(const parser::SelectRankStmt &x) { in Post()
6188 if (const std::optional<parser::Name> &name{std::get<1>(x.t)}) { in Post()
6195 bool ConstructVisitor::Pre(const parser::SelectTypeConstruct::TypeCase &) { in Pre()
6199 void ConstructVisitor::Post(const parser::SelectTypeConstruct::TypeCase &) { in Post()
6203 bool ConstructVisitor::Pre(const parser::SelectRankConstruct::RankCase &) { in Pre()
6207 void ConstructVisitor::Post(const parser::SelectRankConstruct::RankCase &) { in Post()
6211 void ConstructVisitor::Post(const parser::TypeGuardStmt::Guard &x) { in Post()
6213 if (std::holds_alternative<parser::Default>(x.u)) { in Post()
6222 void ConstructVisitor::Post(const parser::SelectRankCaseStmt::Rank &x) { in Post()
6226 if (const auto *init{std::get_if<parser::ScalarIntConstantExpr>(&x.u)}) { in Post()
6235 bool ConstructVisitor::Pre(const parser::SelectRankConstruct &) { in Pre()
6240 void ConstructVisitor::Post(const parser::SelectRankConstruct &) { in Post()
6244 bool ConstructVisitor::CheckDef(const std::optional<parser::Name> &x) { in CheckDef()
6251 void ConstructVisitor::CheckRef(const std::optional<parser::Name> &x) { in CheckRef()
6321 const parser::Selector &x) { in ResolveSelector()
6323 [&](const parser::Expr &expr) { in ResolveSelector()
6326 [&](const parser::Variable &var) { in ResolveSelector()
6402 bool ResolveNamesVisitor::Pre(const parser::FunctionReference &x) { in Pre()
6406 bool ResolveNamesVisitor::Pre(const parser::CallStmt &x) { in Pre()
6411 bool ResolveNamesVisitor::Pre(const parser::ImportStmt &x) { in Pre()
6452 const parser::Name *DeclarationVisitor::ResolveStructureComponent( in ResolveStructureComponent()
6453 const parser::StructureComponent &x) { in ResolveStructureComponent()
6457 const parser::Name *DeclarationVisitor::ResolveDesignator( in ResolveDesignator()
6458 const parser::Designator &x) { in ResolveDesignator()
6461 [&](const parser::DataRef &x) { return ResolveDataRef(x); }, in ResolveDesignator()
6462 [&](const parser::Substring &x) { in ResolveDesignator()
6463 Walk(std::get<parser::SubstringRange>(x.t).t); in ResolveDesignator()
6464 return ResolveDataRef(std::get<parser::DataRef>(x.t)); in ResolveDesignator()
6470 const parser::Name *DeclarationVisitor::ResolveDataRef( in ResolveDataRef()
6471 const parser::DataRef &x) { in ResolveDataRef()
6474 [=](const parser::Name &y) { return ResolveName(y); }, in ResolveDataRef()
6475 [=](const Indirection<parser::StructureComponent> &y) { in ResolveDataRef()
6478 [&](const Indirection<parser::ArrayElement> &y) { in ResolveDataRef()
6480 const parser::Name *name{ResolveDataRef(y.value().base)}; in ResolveDataRef()
6491 [&](const Indirection<parser::CoindexedNamedObject> &y) { in ResolveDataRef()
6501 const parser::Name *DeclarationVisitor::ResolveName(const parser::Name &name) { in ResolveName()
6559 const parser::Name &name) { in CheckForHostAssociatedImplicit()
6603 const parser::Name *DeclarationVisitor::FindComponent( in FindComponent()
6604 const parser::Name *base, const parser::Name &component) { in FindComponent()
6676 void DeclarationVisitor::Initialization(const parser::Name &name, in Initialization()
6677 const parser::Initialization &init, bool inComponentDecl) { in Initialization()
6693 [&](const parser::ConstantExpr &expr) { in Initialization()
6696 [&](const parser::NullInit &null) { // => NULL() in Initialization()
6715 [&](const parser::InitialDataTarget &) { in Initialization()
6721 [&](const std::list<Indirection<parser::DataStmtValue>> &values) { in Initialization()
6731 const parser::Name &name, const parser::InitialDataTarget &target) { in PointerInitialization()
6753 const parser::Name &name, const parser::ProcPointerInit &target) { in PointerInitialization()
6761 if (const auto *targetName{std::get_if<parser::Name>(&target.u)}) { in PointerInitialization()
6780 const parser::Name &name, const parser::ConstantExpr &expr) { in NonPointerInitialization()
6805 Symbol::Flag procFlag, const parser::Call &call) { in HandleCall()
6808 [&](const parser::Name &x) { HandleProcedureName(procFlag, x); }, in HandleCall()
6809 [&](const parser::ProcComponentRef &x) { Walk(x); }, in HandleCall()
6811 std::get<parser::ProcedureDesignator>(call.t).u); in HandleCall()
6812 Walk(std::get<std::list<parser::ActualArgSpec>>(call.t)); in HandleCall()
6816 Symbol::Flag flag, const parser::Name &name) { in HandleProcedureName()
6896 Symbol::Flag flag, const parser::Call &call) { in NoteExecutablePartCall()
6897 auto &designator{std::get<parser::ProcedureDesignator>(call.t)}; in NoteExecutablePartCall()
6898 if (const auto *name{std::get_if<parser::Name>(&designator.u)}) { in NoteExecutablePartCall()
6921 const Symbol &symbol, const parser::Name &localName) { in IsLocallyImplicitGlobalSymbol()
6934 const parser::Name &name, Symbol &symbol, Symbol::Flag flag) { in SetProcFlag()
6967 bool ModuleVisitor::Pre(const parser::AccessStmt &x) { in Pre()
6968 Attr accessAttr{AccessSpecToAttr(std::get<parser::AccessSpec>(x.t))}; in Pre()
6975 const auto &accessIds{std::get<std::list<parser::AccessId>>(x.t)}; in Pre()
6987 [=](const parser::Name &y) { in Pre()
6990 [=](const Indirection<parser::GenericSpec> &y) { in Pre()
7021 attr != prev ? parser::Severity::Error : parser::Severity::Warning), in SetAccess()
7043 bool ResolveNamesVisitor::Pre(const parser::SpecificationPart &x) { in Pre()
7060 std::get_if<parser::SpecificationConstruct>(&decl.u)}) { in Pre()
7071 const parser::SpecificationConstruct &spec) { in PreSpecificationConstruct()
7074 [&](const parser::Statement<Indirection<parser::GenericStmt>> &y) { in PreSpecificationConstruct()
7075 CreateGeneric(std::get<parser::GenericSpec>(y.statement.value().t)); in PreSpecificationConstruct()
7077 [&](const Indirection<parser::InterfaceBlock> &y) { in PreSpecificationConstruct()
7078 const auto &stmt{std::get<parser::Statement<parser::InterfaceStmt>>( in PreSpecificationConstruct()
7080 if (const auto *spec{parser::Unwrap<parser::GenericSpec>(stmt)}) { in PreSpecificationConstruct()
7084 [&](const parser::Statement<parser::OtherSpecificationStmt> &y) { in PreSpecificationConstruct()
7085 if (const auto *commonStmt{parser::Unwrap<parser::CommonStmt>(y)}) { in PreSpecificationConstruct()
7095 const parser::CommonStmt &commonStmt) { in CreateCommonBlockSymbols()
7096 for (const parser::CommonStmt::Block &block : commonStmt.blocks) { in CreateCommonBlockSymbols()
7100 Symbol &obj{DeclareObjectEntity(std::get<parser::Name>(object.t))}; in CreateCommonBlockSymbols()
7109 void ResolveNamesVisitor::CreateGeneric(const parser::GenericSpec &x) { in CreateGeneric()
7157 const std::list<parser::DeclarationConstruct> &decls) { in FinishSpecificationPart()
7190 parser::Statement<common::Indirection<parser::StmtFunctionStmt>>>( in FinishSpecificationPart()
7208 const parser::StmtFunctionStmt &stmtFunc) { in AnalyzeStmtFunctionStmt()
7209 Symbol *symbol{std::get<parser::Name>(stmtFunc.t).symbol}; in AnalyzeStmtFunctionStmt()
7215 context(), std::get<parser::Scalar<parser::Expr>>(stmtFunc.t))}; in AnalyzeStmtFunctionStmt()
7269 bool ResolveNamesVisitor::Pre(const parser::ImplicitStmt &x) { in Pre()
7274 void ResolveNamesVisitor::Post(const parser::PointerObject &x) { in Post()
7276 [&](const parser::Name &x) { ResolveName(x); }, in Post()
7277 [&](const parser::StructureComponent &x) { in Post()
7283 void ResolveNamesVisitor::Post(const parser::AllocateObject &x) { in Post()
7285 [&](const parser::Name &x) { ResolveName(x); }, in Post()
7286 [&](const parser::StructureComponent &x) { in Post()
7293 bool ResolveNamesVisitor::Pre(const parser::PointerAssignmentStmt &x) { in Pre()
7294 const auto &dataRef{std::get<parser::DataRef>(x.t)}; in Pre()
7295 const auto &bounds{std::get<parser::PointerAssignmentStmt::Bounds>(x.t)}; in Pre()
7296 const auto &expr{std::get<parser::Expr>(x.t)}; in Pre()
7300 if (const parser::Name * name{parser::Unwrap<parser::Name>(expr)}) { in Pre()
7315 void ResolveNamesVisitor::Post(const parser::Designator &x) { in Post()
7318 void ResolveNamesVisitor::Post(const parser::SubstringInquiry &x) { in Post()
7319 Walk(std::get<parser::SubstringRange>(x.v.t).t); in Post()
7320 ResolveDataRef(std::get<parser::DataRef>(x.v.t)); in Post()
7323 void ResolveNamesVisitor::Post(const parser::ProcComponentRef &x) { in Post()
7326 void ResolveNamesVisitor::Post(const parser::TypeGuardStmt &x) { in Post()
7330 bool ResolveNamesVisitor::Pre(const parser::StmtFunctionStmt &x) { in Pre()
7336 const auto &names{std::get<std::list<parser::Name>>(x.t)}; in Pre()
7344 bool ResolveNamesVisitor::Pre(const parser::DefinedOpName &x) { in Pre()
7345 const parser::Name &name{x.v}; in Pre()
7358 void ResolveNamesVisitor::Post(const parser::AssignStmt &x) { in Post()
7359 if (auto *name{ResolveName(std::get<parser::Name>(x.t))}) { in Post()
7363 void ResolveNamesVisitor::Post(const parser::AssignedGotoStmt &x) { in Post()
7364 if (auto *name{ResolveName(std::get<parser::Name>(x.t))}) { in Post()
7369 bool ResolveNamesVisitor::Pre(const parser::ProgramUnit &x) { in Pre()
7370 if (std::holds_alternative<common::Indirection<parser::CompilerDirective>>( in Pre()
7392 void Walk(const parser::ExecutionPart *exec) { in Walk()
7394 parser::Walk(*exec, *this); in Walk()
7400 void Post(const parser::FunctionReference &fr) { in Post()
7403 void Post(const parser::CallStmt &cs) { in Post()
7479 MakeSymbol(std::get<parser::Name>(entryStmt->t), std::move(details))}; in AddSubpNames()
7484 if (const auto *name{std::get_if<parser::Name>(&generic->u)}) { in AddSubpNames()
7523 std::optional<parser::CharBlock> stmtSource; in EndScopeForNode()
7524 const std::optional<parser::LanguageBindingSpec> *binding{nullptr}; in EndScopeForNode()
7527 [&](const parser::Statement<parser::FunctionStmt> *stmt) { in EndScopeForNode()
7531 std::get<std::optional<parser::Suffix>>( in EndScopeForNode()
7537 [&](const parser::Statement<parser::SubroutineStmt> *stmt) { in EndScopeForNode()
7540 binding = &std::get<std::optional<parser::LanguageBindingSpec>>( in EndScopeForNode()
7559 template <typename A> void Walk(const A &x) { parser::Walk(x, *this); } in Walk()
7564 void Post(const parser::DerivedTypeStmt &x) { in Post()
7565 const auto &name{std::get<parser::Name>(x.t)}; in Post()
7575 void Post(const parser::EndTypeStmt &) { in Post()
7582 void Post(const parser::ProcInterface &pi) { in Post()
7583 if (const auto *name{std::get_if<parser::Name>(&pi.u)}) { in Post()
7587 bool Pre(const parser::EntityDecl &decl) { in Pre()
7588 Init(std::get<parser::Name>(decl.t), in Pre()
7589 std::get<std::optional<parser::Initialization>>(decl.t)); in Pre()
7592 bool Pre(const parser::ComponentDecl &decl) { in Pre()
7593 Init(std::get<parser::Name>(decl.t), in Pre()
7594 std::get<std::optional<parser::Initialization>>(decl.t)); in Pre()
7597 bool Pre(const parser::ProcDecl &decl) { in Pre()
7599 std::get<std::optional<parser::ProcPointerInit>>(decl.t)}) { in Pre()
7600 resolver_.PointerInitialization(std::get<parser::Name>(decl.t), *init); in Pre()
7604 void Post(const parser::TypeBoundProcedureStmt::WithInterface &tbps) { in Post()
7607 void Post(const parser::TypeBoundProcedureStmt::WithoutInterface &tbps) { in Post()
7614 void Init(const parser::Name &name, in Init()
7615 const std::optional<parser::Initialization> &init) { in Init()
7618 std::get_if<parser::InitialDataTarget>(&init->u)}) { in Init()
7701 void ResolveNamesVisitor::Post(const parser::Program &) { in Post()
7714 SemanticsContext &context, const parser::Program &program, Scope &top) { in ResolveNames()