47 lines · c
1//===-- lib/Semantics/pointer-assignment.h --------------------------------===//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_POINTER_ASSIGNMENT_H_10#define FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_11 12#include "flang/Evaluate/expression.h"13#include "flang/Parser/char-block.h"14#include "flang/Semantics/type.h"15#include <string>16 17namespace Fortran::evaluate::characteristics {18struct DummyDataObject;19}20 21namespace Fortran::semantics {22 23class SemanticsContext;24class Symbol;25 26bool CheckPointerAssignment(27 SemanticsContext &, const evaluate::Assignment &, const Scope &);28bool CheckPointerAssignment(SemanticsContext &, const SomeExpr &lhs,29 const SomeExpr &rhs, const Scope &, bool isBoundsRemapping,30 bool isAssumedRank);31bool CheckPointerAssignment(SemanticsContext &, parser::CharBlock source,32 const std::string &description,33 const evaluate::characteristics::DummyDataObject &, const SomeExpr &rhs,34 const Scope &, bool isAssumedRank, bool IsPointerActualArgument);35 36bool CheckStructConstructorPointerComponent(37 SemanticsContext &, const Symbol &lhs, const SomeExpr &rhs, const Scope &);38 39// Checks whether an expression is a valid static initializer for a40// particular pointer designator.41bool CheckInitialDataPointerTarget(SemanticsContext &, const SomeExpr &pointer,42 const SomeExpr &init, const Scope &);43 44} // namespace Fortran::semantics45 46#endif // FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_47