@@ -2962,32 +2962,6 @@ parser::Messages CheckHelper::WhyNotInteroperableDerivedType(
2962
2962
return msgs;
2963
2963
}
2964
2964
2965
- static UnorderedSymbolSet CollectEntryPointsWithDummy (const Symbol &dummy) {
2966
- UnorderedSymbolSet entries;
2967
- const Scope &subpScope{dummy.owner ()};
2968
- for (const auto &[_, ref] : subpScope.parent ()) {
2969
- const Symbol &x{*ref};
2970
- if (const auto *subp{x.detailsIf <SubprogramDetails>()}) {
2971
- if (x.scope () == &subpScope || subp->entryScope () == &dummy.owner ()) {
2972
- if (std::find (subp->dummyArgs ().begin (), subp->dummyArgs ().end (),
2973
- &dummy) != subp->dummyArgs ().end ()) {
2974
- entries.insert (x);
2975
- }
2976
- }
2977
- }
2978
- }
2979
- return entries;
2980
- }
2981
-
2982
- static bool AnyNonBindCEntry (const Symbol &dummy) {
2983
- for (const Symbol &subp : CollectEntryPointsWithDummy (dummy)) {
2984
- if (!subp.attrs ().test (Attr::BIND_C)) {
2985
- return true ;
2986
- }
2987
- }
2988
- return false ;
2989
- }
2990
-
2991
2965
parser::Messages CheckHelper::WhyNotInteroperableObject (
2992
2966
const Symbol &symbol, bool isError) {
2993
2967
parser::Messages msgs;
@@ -3048,10 +3022,6 @@ parser::Messages CheckHelper::WhyNotInteroperableObject(
3048
3022
}
3049
3023
if (type->IsAssumedType ()) { // ok
3050
3024
} else if (IsAssumedLengthCharacter (symbol)) {
3051
- if (AnyNonBindCEntry (symbol)) {
3052
- msgs.Say (symbol.name (),
3053
- " An assumed-length dummy argument must not appear in a non-BIND(C) entry in a subprogram with an entry that must be interoperable" _err_en_US);
3054
- }
3055
3025
} else if (IsAllocatableOrPointer (symbol) &&
3056
3026
type->category () == DeclTypeSpec::Character &&
3057
3027
type->characterTypeSpec ().length ().isDeferred ()) {
@@ -3082,12 +3052,6 @@ parser::Messages CheckHelper::WhyNotInteroperableObject(
3082
3052
msgs.Say (symbol.name (),
3083
3053
" An interoperable procedure with an OPTIONAL dummy argument might not be portable" _port_en_US);
3084
3054
}
3085
- if (symbol.attrs ().test (Attr::VALUE)) {
3086
- if (AnyNonBindCEntry (symbol)) {
3087
- msgs.Say (symbol.name (),
3088
- " A VALUE dummy argument must not appear in a non-BIND(C) entry of a subprogram with an entry that must be interoperable" _err_en_US);
3089
- }
3090
- }
3091
3055
if (IsDescriptor (symbol) && IsPointer (symbol) &&
3092
3056
symbol.attrs ().test (Attr::CONTIGUOUS)) {
3093
3057
msgs.Say (symbol.name (),
0 commit comments