[lldb] Add ability to hide the root name of a value
[llvm-project.git] / flang / lib / Semantics / check-call.h
blob439bdd0241e3a1218c1f27af487aafe7a3b1a941
1 //===-- lib/Semantics/check-call.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-exception
6 //
7 //===----------------------------------------------------------------------===//
9 // Constraint checking for procedure references
11 #ifndef FORTRAN_SEMANTICS_CHECK_CALL_H_
12 #define FORTRAN_SEMANTICS_CHECK_CALL_H_
14 #include "flang/Evaluate/call.h"
16 namespace Fortran::parser {
17 class Messages;
18 class ContextualMessages;
19 } // namespace Fortran::parser
20 namespace Fortran::evaluate::characteristics {
21 struct Procedure;
23 namespace Fortran::evaluate {
24 class FoldingContext;
27 namespace Fortran::semantics {
28 class Scope;
30 // Argument treatingExternalAsImplicit should be true when the called procedure
31 // does not actually have an explicit interface at the call site, but
32 // its characteristics are known because it is a subroutine or function
33 // defined at the top level in the same source file. Returns false if
34 // messages were created, true if all is well.
35 bool CheckArguments(const evaluate::characteristics::Procedure &,
36 evaluate::ActualArguments &, evaluate::FoldingContext &, const Scope &,
37 bool treatingExternalAsImplicit,
38 const evaluate::SpecificIntrinsic *intrinsic);
40 // Checks actual arguments for the purpose of resolving a generic interface.
41 bool CheckInterfaceForGeneric(const evaluate::characteristics::Procedure &,
42 evaluate::ActualArguments &, const evaluate::FoldingContext &,
43 bool allowActualArgumentConversions = false);
44 } // namespace Fortran::semantics
45 #endif