Lines Matching defs:specific

607         if (!d->specific()) {
629 auto *specific{d->specific()};
630 if (!specific) {
631 specific = &currScope().MakeSymbol(name, attrs, std::move(details));
632 d->set_specific(*specific);
634 SayAlreadyDeclared(name, *specific);
636 return *specific;
662 if (d->specific()) {
663 errSym = *d->specific();
849 // Mappings of generics to their as-yet specific proc names and kinds
1191 // Map type-bound generic to binding names of its specific bindings
1693 // TODO: Do we need a specific flag or type here, to distinghuish against
3195 // can be resolved to private specific procedures in specification
3328 ((useGeneric->specific() &&
3329 IsProcedurePointer(*useGeneric->specific())) ||
3396 // generic's specific procedures). Implementing all these possibilities is
3429 if (localGeneric->specific() &&
3430 !localGeneric->specific()->attrs().test(Attr::PRIVATE)) {
3431 localProcedure = localGeneric->specific();
3438 if (useGeneric->specific() &&
3439 !useGeneric->specific()->attrs().test(Attr::PRIVATE)) {
3440 useProcedure = useGeneric->specific();
3559 return; // nothing to do; used subprogram is local's specific
3566 return; // used non-generic is already a specific of local generic
3576 // Local is the specific of the used generic or an intrinsic with the
3587 return; // local non-generic is already a specific of used generic
3611 // Ensure that a use-associated specific procedure that is a procedure
3892 // By now we should have seen all specific procedures referenced by name in
3910 const Symbol *specific{symbol};
3913 // Subtlety: when *symbol is a use- or host-association, the specific
3915 // not the specific procedure shadowed by a generic, because that specific
3920 specific = &bypassed;
3956 // When a specific procedure is a USE association, that association
3959 details.AddSpecificProc(*specific, name->source);
3960 } else if (specific == ultimate) {
3998 "'%s' should not be the name of both a generic interface and a procedure unless it is a specific procedure of the generic"_warn_en_US,
4010 for (const Symbol &specific : specifics) {
4011 if (!function && specific.test(Symbol::Flag::Function)) {
4012 function = &specific;
4013 } else if (!subroutine && specific.test(Symbol::Flag::Subroutine)) {
4014 subroutine = &specific;
4485 if (auto *specific{generic->specific()}) {
4487 entrySymbol = specific;
4637 symbol = generic->specific();
4771 // If the extant symbol is a generic, check its homonymous specific
4774 return generic->specific() &&
4775 HandlePreviousCalls(name, *generic->specific(), subpFlag);
4901 // If name is a generic, return specific subprogram with the same name.
4912 // found generic, want specific procedure
4913 auto *specific{details->specific()};
4916 if (specific) {
4920 if (specific->has<SubprogramNameDetails>() &&
4921 specific->attrs().test(Attr::MODULE)) {
4926 specific = nullptr;
4927 } else if (&specific->owner() != &symbol->owner()) {
4930 specific = nullptr;
4932 if (!specific) {
4943 if (!specific) {
4944 specific = &currScope().MakeSymbol(
4947 // A specific procedure with the same name as a derived type
4950 details->set_specific(Resolve(name, *specific));
4953 SayAlreadyDeclared(name, *specific);
4955 if (specific->has<SubprogramNameDetails>()) {
4956 specific->set_details(Details{SubprogramDetails{}});
4958 return specific;
5460 if (auto *specific{d->specific()}) {
5461 SayAlreadyDeclared(name, *specific);
5463 // Create the ProcEntityDetails symbol in the scope as the "specific()"
6215 "'%s' is not the name of a specific binding of this type"_err_en_US);
6856 // Unrestricted specific intrinsic function names (e.g., "cos")
8035 // if OMP-specific checks can be avoided altogether.
9159 if (existingGeneric->specific()) {
9160 genericDetails.set_specific(*existingGeneric->specific());
9361 // Resolve unrestricted specific intrinsic procedures as in "p => cos".