brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · ba53774 Raw
61 lines · c
1//===-- lib/Semantics/assignment.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_ASSIGNMENT_H_10#define FORTRAN_SEMANTICS_ASSIGNMENT_H_11 12#include "flang/Common/indirection.h"13#include "flang/Evaluate/expression.h"14#include "flang/Semantics/semantics.h"15 16namespace Fortran::parser {17class ContextualMessages;18struct AssignmentStmt;19struct EndWhereStmt;20struct MaskedElsewhereStmt;21struct PointerAssignmentStmt;22struct WhereConstructStmt;23struct WhereStmt;24} // namespace Fortran::parser25 26namespace Fortran::semantics {27 28class AssignmentContext;29class Scope;30class Symbol;31 32// Applies checks from C1594(5-6) on copying pointers in pure subprograms33bool CheckCopyabilityInPureScope(parser::ContextualMessages &,34    const evaluate::Expr<evaluate::SomeType> &, const Scope &);35 36class AssignmentChecker : public virtual BaseChecker {37public:38  explicit AssignmentChecker(SemanticsContext &);39  ~AssignmentChecker();40  void Enter(const parser::OpenMPDeclareReductionConstruct &x);41  void Enter(const parser::AssignmentStmt &);42  void Enter(const parser::PointerAssignmentStmt &);43  void Enter(const parser::WhereStmt &);44  void Leave(const parser::WhereStmt &);45  void Enter(const parser::WhereConstructStmt &);46  void Leave(const parser::EndWhereStmt &);47  void Enter(const parser::MaskedElsewhereStmt &);48  void Leave(const parser::MaskedElsewhereStmt &);49 50  SemanticsContext &context();51 52private:53  common::Indirection<AssignmentContext> context_;54};55 56} // namespace Fortran::semantics57 58extern template class Fortran::common::Indirection<59    Fortran::semantics::AssignmentContext>;60#endif // FORTRAN_SEMANTICS_ASSIGNMENT_H_61