47 lines · c
1//===-- lib/Semantics/check-coarray.h ---------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef FORTRAN_SEMANTICS_CHECK_COARRAY_H_10#define FORTRAN_SEMANTICS_CHECK_COARRAY_H_11 12#include "flang/Semantics/semantics.h"13#include <list>14 15namespace Fortran::semantics {16 17class CoarrayChecker : public virtual BaseChecker {18public:19 CoarrayChecker(SemanticsContext &context) : context_{context} {}20 void Leave(const parser::ChangeTeamStmt &);21 void Leave(const parser::EndChangeTeamStmt &);22 void Leave(const parser::SyncAllStmt &);23 void Leave(const parser::SyncImagesStmt &);24 void Leave(const parser::SyncMemoryStmt &);25 void Leave(const parser::SyncTeamStmt &);26 void Leave(const parser::NotifyWaitStmt &);27 void Leave(const parser::EventPostStmt &);28 void Leave(const parser::EventWaitStmt &);29 void Leave(const parser::LockStmt &);30 void Leave(const parser::UnlockStmt &);31 void Leave(const parser::CriticalStmt &);32 void Leave(const parser::ImageSelector &);33 void Leave(const parser::FormTeamStmt &);34 35 void Enter(const parser::CriticalConstruct &);36 void Enter(const parser::ChangeTeamConstruct &);37 38private:39 SemanticsContext &context_;40 41 void CheckNamesAreDistinct(const std::list<parser::CoarrayAssociation> &);42 void Say2(const parser::CharBlock &, parser::MessageFixedText &&,43 const parser::CharBlock &, parser::MessageFixedText &&);44};45} // namespace Fortran::semantics46#endif // FORTRAN_SEMANTICS_CHECK_COARRAY_H_47