Mercurial > hg > CbC > CbC_llvm
view flang/lib/Semantics/check-purity.h @ 182:0f533c0a1429
...
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 31 May 2020 19:50:32 +0900 |
parents | 0572611fdcc8 |
children |
line wrap: on
line source
//===-- lib/Semantics/check-purity.h ----------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef FORTRAN_SEMANTICS_CHECK_PURITY_H_ #define FORTRAN_SEMANTICS_CHECK_PURITY_H_ #include "flang/Semantics/semantics.h" #include <list> namespace Fortran::parser { struct ExecutableConstruct; struct SubroutineSubprogram; struct FunctionSubprogram; struct PrefixSpec; } // namespace Fortran::parser namespace Fortran::semantics { class PurityChecker : public virtual BaseChecker { public: explicit PurityChecker(SemanticsContext &c) : context_{c} {} void Enter(const parser::ExecutableConstruct &); void Enter(const parser::SubroutineSubprogram &); void Leave(const parser::SubroutineSubprogram &); void Enter(const parser::FunctionSubprogram &); void Leave(const parser::FunctionSubprogram &); private: bool InPureSubprogram() const; bool HasPurePrefix(const std::list<parser::PrefixSpec> &) const; void Entered(parser::CharBlock, const std::list<parser::PrefixSpec> &); void Left(); SemanticsContext &context_; int depth_{0}; int pureDepth_{-1}; }; } // namespace Fortran::semantics #endif