Lines Matching refs:Procedure

523 DummyProcedure::DummyProcedure(Procedure &&p)
524 : procedure{new Procedure{std::move(p)}} {}
579 // mutually recursive calls when characterizing a Procedure, a DummyArgument,
589 static std::optional<Procedure> CharacterizeProcedure(
596 "Procedure '%s' is recursively defined. Procedures in the cycle:"
605 "Procedure '%s' is referenced before being sufficiently defined in a context where it must be so"_err_en_US,
612 -> std::optional<Procedure> {
613 Procedure result;
622 result.attrs.set(Procedure::Attr::Subroutine);
643 -> std::optional<Procedure> {
665 result->attrs.reset(Procedure::Attr::Elemental);
669 Procedure result;
670 result.attrs.set(Procedure::Attr::ImplicitInterface);
674 result.attrs.set(Procedure::Attr::Subroutine);
696 result->attrs.reset(Procedure::Attr::Elemental);
709 return std::optional<Procedure>{};
719 return std::optional<Procedure>{};
730 return std::optional<Procedure>{};
735 return std::optional<Procedure>{};
744 return std::optional<Procedure>{};
749 return std::optional<Procedure>{};
754 CopyAttrs<Procedure, Procedure::Attr>(symbol, *result,
756 {semantics::Attr::BIND_C, Procedure::Attr::BindC},
758 CopyAttrs<Procedure, Procedure::Attr>(DEREF(GetMainEntry(&symbol)), *result,
760 {semantics::Attr::ELEMENTAL, Procedure::Attr::Elemental},
764 result->attrs.test(Procedure::Attr::Elemental))) {
765 result->attrs.set(Procedure::Attr::Pure);
780 procedure->attrs.reset(Procedure::Attr::Elemental);
877 if (auto proc{Procedure::Characterize(
886 if (auto proc{Procedure::Characterize(call, context)}) {
1002 FunctionResult::FunctionResult(Procedure &&p) : u{std::move(p)} {}
1231 const auto *ifaceProc{std::get_if<CopyableIndirection<Procedure>>(&u)};
1234 std::get_if<CopyableIndirection<Procedure>>(&actual.u)}) {
1257 [&](const CopyableIndirection<Procedure> &p) {
1268 Procedure::Procedure(FunctionResult &&fr, DummyArguments &&args, Attrs a)
1271 Procedure::Procedure(DummyArguments &&args, Attrs a)
1273 Procedure::~Procedure() {}
1275 bool Procedure::operator==(const Procedure &that) const {
1281 bool Procedure::IsCompatibleWith(const Procedure &actual,
1350 std::optional<int> Procedure::FindPassIndex(
1367 bool Procedure::CanOverride(
1368 const Procedure &that, std::optional<int> passIndex) const {
1391 std::optional<Procedure> Procedure::Characterize(
1397 std::optional<Procedure> Procedure::Characterize(
1409 std::optional<Procedure> Procedure::Characterize(
1413 if (const Procedure *
1422 std::optional<Procedure> Procedure::Characterize(
1438 std::optional<Procedure> Procedure::FromActuals(const ProcedureDesignator &proc,
1443 callee->attrs.test(Procedure::Attr::ImplicitInterface)) {
1463 bool Procedure::CanBeCalledViaImplicitInterface(std::string *whyNot) const {
1494 llvm::raw_ostream &Procedure::Dump(llvm::raw_ostream &o) const {
1523 const Procedure &, const Procedure &) const;
1526 const Procedure &, const Procedure &) const;
1544 bool Rule3Distinguishable(const Procedure &, const Procedure &) const;
1564 const DummyArgument *GetPassArg(const Procedure &) const;
1571 const Procedure &proc1, const Procedure &proc2) const {
1590 const Procedure &proc1, const Procedure &proc2) const {
1656 const Procedure &proc1, const Procedure &proc2) const {
1802 const Procedure &xProc{x.procedure.value()};
1803 const Procedure &yProc{y.procedure.value()};
1828 [&](const CopyableIndirection<Procedure> &z) {
1830 std::get<CopyableIndirection<Procedure>>(y.u).value())
1887 const DummyArgument *DistinguishUtils::GetPassArg(const Procedure &proc) const {
1897 const common::LanguageFeatureControl &features, const Procedure &x,
1898 const Procedure &y) {
1903 const common::LanguageFeatureControl &features, const Procedure &x,
1904 const Procedure &y) {
1911 DEFINE_DEFAULT_CONSTRUCTORS_AND_ASSIGNMENTS(Procedure)
1915 Fortran::evaluate::characteristics::Procedure, true>;