164ab3302SCarolineConcatto //===-- lib/Semantics/pointer-assignment.h --------------------------------===// 264ab3302SCarolineConcatto // 364ab3302SCarolineConcatto // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 464ab3302SCarolineConcatto // See https://llvm.org/LICENSE.txt for license information. 564ab3302SCarolineConcatto // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 664ab3302SCarolineConcatto // 764ab3302SCarolineConcatto //===----------------------------------------------------------------------===// 864ab3302SCarolineConcatto 964ab3302SCarolineConcatto #ifndef FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_ 1064ab3302SCarolineConcatto #define FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_ 1164ab3302SCarolineConcatto 1264ab3302SCarolineConcatto #include "flang/Evaluate/expression.h" 1364ab3302SCarolineConcatto #include "flang/Parser/char-block.h" 1464ab3302SCarolineConcatto #include "flang/Semantics/type.h" 1564ab3302SCarolineConcatto #include <string> 1664ab3302SCarolineConcatto 1764ab3302SCarolineConcatto namespace Fortran::evaluate::characteristics { 1864ab3302SCarolineConcatto struct DummyDataObject; 1964ab3302SCarolineConcatto } 2064ab3302SCarolineConcatto 2164ab3302SCarolineConcatto namespace Fortran::semantics { 2264ab3302SCarolineConcatto 23191d4872SPeter Klausler class SemanticsContext; 2464ab3302SCarolineConcatto class Symbol; 2564ab3302SCarolineConcatto 264171f80dSpeter klausler bool CheckPointerAssignment( 27191d4872SPeter Klausler SemanticsContext &, const evaluate::Assignment &, const Scope &); 28191d4872SPeter Klausler bool CheckPointerAssignment(SemanticsContext &, const SomeExpr &lhs, 29*f82ee155SPeter Klausler const SomeExpr &rhs, const Scope &, bool isBoundsRemapping, 30*f82ee155SPeter Klausler bool isAssumedRank); 31191d4872SPeter Klausler bool CheckPointerAssignment(SemanticsContext &, parser::CharBlock source, 32191d4872SPeter Klausler const std::string &description, 33573fc618SPeter Klausler const evaluate::characteristics::DummyDataObject &, const SomeExpr &rhs, 34*f82ee155SPeter Klausler const Scope &, bool isAssumedRank); 3564ab3302SCarolineConcatto 360c0b2ea9SPeter Klausler bool CheckStructConstructorPointerComponent( 370c0b2ea9SPeter Klausler SemanticsContext &, const Symbol &lhs, const SomeExpr &rhs, const Scope &); 380c0b2ea9SPeter Klausler 394171f80dSpeter klausler // Checks whether an expression is a valid static initializer for a 404171f80dSpeter klausler // particular pointer designator. 410c0b2ea9SPeter Klausler bool CheckInitialDataPointerTarget(SemanticsContext &, const SomeExpr &pointer, 42573fc618SPeter Klausler const SomeExpr &init, const Scope &); 434171f80dSpeter klausler 441f879005STim Keith } // namespace Fortran::semantics 4564ab3302SCarolineConcatto 4664ab3302SCarolineConcatto #endif // FORTRAN_SEMANTICS_POINTER_ASSIGNMENT_H_ 47