Index: flang/lib/Semantics/expression.cpp =================================================================== --- flang/lib/Semantics/expression.cpp +++ flang/lib/Semantics/expression.cpp @@ -4035,18 +4035,16 @@ auto restorer{context_.GetContextualMessages().DiscardMessages()}; if (const Symbol *symbol{scope.FindSymbol(oprName)}) { ExpressionAnalyzer::AdjustActuals noAdjustment; - auto pair{context_.ResolveGeneric(*symbol, actuals_, noAdjustment, true)}; - if (pair.first) { - proc = pair.first; - } else { - context_.EmitGenericResolutionError(*symbol, pair.second, true); - } + proc = + context_.ResolveGeneric(*symbol, actuals_, noAdjustment, true).first; } for (std::size_t i{0}; !proc && i < actuals_.size(); ++i) { const Symbol *generic{nullptr}; if (const Symbol *binding{FindBoundOp(oprName, i, generic, true)}) { - if (const Symbol *resolution{ - GetBindingResolution(GetType(i), *binding)}) { + if (CheckAccessibleSymbol(scope, DEREF(generic))) { + // ignore inaccessible type-bound ASSIGNMENT(=) generic + } else if (const Symbol * + resolution{GetBindingResolution(GetType(i), *binding)}) { proc = resolution; } else { proc = binding;