FLANG
Fortran::semantics::DirectiveStructureChecker< D, C, PC, ClauseEnumSize > Class Template Reference
Inheritance diagram for Fortran::semantics::DirectiveStructureChecker< D, C, PC, ClauseEnumSize >:
Fortran::semantics::BaseChecker

Classes

struct  DirectiveContext

Protected Types

using ClauseMapTy = std::multimap<C, const PC *>

Protected Member Functions

 DirectiveStructureChecker (SemanticsContext &context, const std::unordered_map< D, DirectiveClauses< C, ClauseEnumSize > > &directiveClausesMap)
void SetLoopIv (Symbol *symbol)
DirectiveContextGetContext ()
DirectiveContextGetContextParent ()
void SetContextClause (const PC &clause)
void ResetPartialContext (const parser::CharBlock &source)
void SetContextDirectiveSource (const parser::CharBlock &directive)
void SetContextDirectiveEnum (D dir)
void SetContextAllowed (const common::EnumSet< C, ClauseEnumSize > &allowed)
void SetContextAllowedOnce (const common::EnumSet< C, ClauseEnumSize > &allowedOnce)
void SetContextAllowedExclusive (const common::EnumSet< C, ClauseEnumSize > &allowedExclusive)
void SetContextRequired (const common::EnumSet< C, ClauseEnumSize > &required)
void SetContextClauseInfo (C type)
void AddClauseToCrtContext (C type)
void AddClauseToCrtGroupInContext (C type)
void ResetCrtGroup ()
const PC * FindClause (C type)
const PC * FindClause (DirectiveContext &context, C type)
const PC * FindClauseParent (C type)
llvm::iterator_range< typename ClauseMapTy::iterator > FindClauses (C type)
DirectiveContextGetEnclosingDirContext ()
void PushContext (const parser::CharBlock &source, D dir)
DirectiveContextGetEnclosingContextWithDir (D dir)
bool CurrentDirectiveIsNested ()
void SetClauseSets (D dir)
void PushContextAndClauseSets (const parser::CharBlock &source, D dir)
void SayNotMatching (const parser::CharBlock &, const parser::CharBlock &)
template<typename B>
void CheckMatching (const B &beginDir, const B &endDir)
void CheckNoBranching (const parser::Block &block, D directive, const parser::CharBlock &directiveSource)
void CheckOnlyAllowedAfter (C clause, common::EnumSet< C, ClauseEnumSize > set)
void CheckRequireAtLeastOneOf (bool warnInsteadOfError=false)
bool CheckAllowed (C clause, bool warnInsteadOfError=false)
void CheckAllowedOncePerGroup (C clause, C separator)
void CheckMutuallyExclusivePerGroup (C clause, C separator, common::EnumSet< C, ClauseEnumSize > set)
void CheckAtLeastOneClause ()
void CheckNotAllowedIfClause (C clause, common::EnumSet< C, ClauseEnumSize > set)
std::string ContextDirectiveAsFortran ()
void RequiresConstantPositiveParameter (const C &clause, const parser::ScalarIntConstantExpr &i)
void RequiresPositiveParameter (const C &clause, const parser::ScalarIntExpr &i, llvm::StringRef paramName="parameter")
void OptionalConstantPositiveParameter (const C &clause, const std::optional< parser::ScalarIntConstantExpr > &o)
virtual llvm::StringRef getClauseName (C clause)
virtual llvm::StringRef getDirectiveName (D directive)
std::string ClauseSetToString (const common::EnumSet< C, ClauseEnumSize > set)

Protected Attributes

SemanticsContextcontext_
std::vector< DirectiveContextdirContext_
std::unordered_map< D, DirectiveClauses< C, ClauseEnumSize > > directiveClausesMap_

Additional Inherited Members

Public Member Functions inherited from Fortran::semantics::BaseChecker
template<typename N>
void Enter (const N &)
template<typename N>
void Leave (const N &)

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