Lines Matching defs:generic
176 const Symbol &generic;
179 const Symbol &, const Symbol &generic);
1859 // Check that the specifics of this generic are distinguishable from each other
1861 const Symbol &generic, const GenericDetails &details) {
1866 if (auto *msg{messages_.Say(generic.name(),
1868 generic.name(), specific.name())}) {
1881 "Specific procedure '%s' of generic interface '%s' should not be INTRINSIC"_port_en_US,
1882 specific.name(), generic.name())}) {
1884 generic.name(), "Definition of '%s'"_en_US, generic.name());
1889 "Procedure '%s' of generic interface '%s' is INTRINSIC but not an unrestricted specific intrinsic function"_port_en_US,
1890 specific.name(), generic.name())}) {
1892 generic.name(), "Definition of '%s'"_en_US, generic.name());
1899 "Specific procedure '%s' of generic interface '%s' may not be a statement function"_err_en_US,
1900 specific.name(), generic.name())}) {
1901 msg->Attach(generic.name(), "Definition of '%s'"_en_US, generic.name());
1907 helper.Add(generic, kind, specific, *procedure);
1910 "Specific procedure '%s' of generic interface '%s' must have an explicit interface"_err_en_US,
1911 specific.name(), generic.name())}) {
1913 generic.name(), "Definition of '%s'"_en_US, generic.name());
1918 helper.Check(generic.owner());
1967 [](const auto &) -> bool { DIE("bad generic kind"); },
1994 [](const auto &) -> bool { DIE("bad generic kind"); },
2753 // Check distinguishability of generic assignment and operators.
2754 // For these, generics and generic bindings must be considered together.
2757 auto addSpecifics{[&](const Symbol &generic) {
2758 if (!IsAccessible(generic, scope)) {
2761 const auto *details{generic.GetUltimate().detailsIf<GenericDetails>()};
2763 // Not a generic; ensure characteristics are defined if a function.
2764 auto restorer{messages_.SetLocation(generic.name())};
2765 if (IsFunction(generic) && !context_.HasError(generic)) {
2766 if (const Symbol *result{FindFunctionResult(generic)};
2768 Characterize(generic);
2788 if (!CheckDefinedOperator(generic.name(), kind, specific, *proc)) {
2792 helper.Add(generic, kind, specific, *proc);
3328 common::DefinedIo ioKind, const Symbol &proc, const Symbol &generic) {
3332 // (The non-type-bound interfaces would have been merged into a single generic
3335 if (generic.owner().IsDerivedType()) {
3339 if (auto iter{dtScope->find(generic.name())}; iter != dtScope->end()) {
3358 common::DefinedIo ioKind, const Symbol &generic) {
3361 CheckAlreadySeenDefinedIo(*derivedType, ioKind, subp, generic);
3403 common::DefinedIo ioKind, const Symbol &generic) {
3406 CheckDioDummyIsDerived(subp, *arg, ioKind, generic);
3418 const Symbol &symbol, const GenericDetails &generic) {
3424 for (const SymbolRef &ref : generic.specificProcs()) {
3886 void DistinguishabilityHelper::Add(const Symbol &generic, GenericKind kind,
3889 nameToSpecifics_[generic.name()].emplace(
3961 ? "USE-associated generic '%s' should not have specific procedures '%s' and '%s' as their interfaces are not distinguishable"_warn_en_US
3962 : "USE-associated generic '%s' may not have specific procedures '%s' and '%s' as their interfaces are not distinguishable"_err_en_US)
3963 : "USE-associated generic '%s' should not have specific procedures '%s' and '%s' as their interfaces are not distinguishable by the rules in the standard"_port_en_US,
3970 // `evaluate::AttachDeclaration` doesn't handle the generic case where `proc`