Changeset View
Changeset View
Standalone View
Standalone View
flang/lib/Evaluate/tools.cpp
Show First 20 Lines • Show All 959 Lines • ▼ Show 20 Lines | bool IsProcedure(const Symbol &symbol) { | ||||
return std::visit( | return std::visit( | ||||
common::visitors{ | common::visitors{ | ||||
[](const SubprogramDetails &) { return true; }, | [](const SubprogramDetails &) { return true; }, | ||||
[](const SubprogramNameDetails &) { return true; }, | [](const SubprogramNameDetails &) { return true; }, | ||||
[](const ProcEntityDetails &) { return true; }, | [](const ProcEntityDetails &) { return true; }, | ||||
[](const GenericDetails &) { return true; }, | [](const GenericDetails &) { return true; }, | ||||
[](const ProcBindingDetails &) { return true; }, | [](const ProcBindingDetails &) { return true; }, | ||||
[](const UseDetails &x) { return IsProcedure(x.symbol()); }, | [](const UseDetails &x) { return IsProcedure(x.symbol()); }, | ||||
// TODO: FinalProcDetails? | |||||
[](const auto &) { return false; }, | [](const auto &) { return false; }, | ||||
}, | }, | ||||
symbol.details()); | symbol.details()); | ||||
} | } | ||||
const Symbol *FindCommonBlockContaining(const Symbol &object) { | const Symbol *FindCommonBlockContaining(const Symbol &object) { | ||||
const auto *details{object.detailsIf<ObjectEntityDetails>()}; | const auto *details{object.detailsIf<ObjectEntityDetails>()}; | ||||
return details ? details->commonBlock() : nullptr; | return details ? details->commonBlock() : nullptr; | ||||
▲ Show 20 Lines • Show All 77 Lines • Show Last 20 Lines |