diff --git a/flang/lib/Semantics/expression.cpp b/flang/lib/Semantics/expression.cpp --- a/flang/lib/Semantics/expression.cpp +++ b/flang/lib/Semantics/expression.cpp @@ -3229,10 +3229,10 @@ actual = ActualArgument(label.v); }, [&](const parser::ActualArg::PercentRef &) { - context_.Say("TODO: %REF() argument"_err_en_US); + context_.Say("not yet implemented: %REF() intrinsic for arguments"_err_en_US); }, [&](const parser::ActualArg::PercentVal &) { - context_.Say("TODO: %VAL() argument"_err_en_US); + context_.Say("not yet implemetned: %VAL() intrinsic for arguments"_err_en_US); }, }, std::get(arg.t).u); diff --git a/flang/lib/Semantics/resolve-names.cpp b/flang/lib/Semantics/resolve-names.cpp --- a/flang/lib/Semantics/resolve-names.cpp +++ b/flang/lib/Semantics/resolve-names.cpp @@ -3300,16 +3300,11 @@ return; } } - - Symbol *entrySymbol{&MakeSymbol(outer, name.source, attrs)}; - if (auto *generic{entrySymbol->detailsIf()}) { - CHECK(generic->specific()); - entrySymbol = generic->specific(); - } - entrySymbol->set_details(std::move(entryDetails)); - SetBindNameOn(*entrySymbol); - entrySymbol->set(subpFlag); - Resolve(name, *entrySymbol); + Symbol &entrySymbol{MakeSymbol(outer, name.source, attrs)}; + entrySymbol.set_details(std::move(entryDetails)); + SetBindNameOn(entrySymbol); + entrySymbol.set(subpFlag); + Resolve(name, entrySymbol); } // A subprogram declared with MODULE PROCEDURE @@ -3405,14 +3400,9 @@ bool SubprogramVisitor::HandlePreviousCalls( const parser::Name &name, Symbol &symbol, Symbol::Flag subpFlag) { - // If the extant symbol is a generic, check its homonymous specific - // procedure instead if it has one. - if (auto *generic{symbol.detailsIf()}) { - return generic->specific() && - HandlePreviousCalls(name, *generic->specific(), subpFlag); - } else if (const auto *proc{symbol.detailsIf()}; proc && - !proc->isDummy() && - !symbol.attrs().HasAny(Attrs{Attr::INTRINSIC, Attr::POINTER})) { + if (const auto *proc{symbol.detailsIf()}; proc && + !proc->isDummy() && + !symbol.attrs().HasAny(Attrs{Attr::INTRINSIC, Attr::POINTER})) { // There's a symbol created for previous calls to this subprogram or // ENTRY's name. We have to replace that symbol in situ to avoid the // obligation to rewrite symbol pointers in the parse tree. @@ -4721,7 +4711,7 @@ } bool DeclarationVisitor::Pre(const parser::Union::UnionStmt &) { - Say("UNION is not yet supported"_err_en_US); // TODO + Say("not yet implemented: support for UNION"_err_en_US); // TODO return true; } @@ -7330,27 +7320,14 @@ void ResolveSpecificationParts( SemanticsContext &context, const Symbol &subprogram) { auto originalLocation{context.location()}; - ImplicitRulesMap implicitRulesMap; - bool localImplicitRulesMap{false}; - if (!sharedImplicitRulesMap) { - sharedImplicitRulesMap = &implicitRulesMap; - localImplicitRulesMap = true; - } ResolveNamesVisitor visitor{ - context, *sharedImplicitRulesMap, context.globalScope()}; + context, DEREF(sharedImplicitRulesMap), context.globalScope()}; const auto &details{subprogram.get()}; ProgramTree &node{details.node()}; const Scope &moduleScope{subprogram.owner()}; - if (localImplicitRulesMap) { - visitor.BeginScope(const_cast(moduleScope)); - } else { - visitor.SetScope(const_cast(moduleScope)); - } + visitor.SetScope(const_cast(moduleScope)); visitor.ResolveSpecificationParts(node); context.set_location(std::move(originalLocation)); - if (localImplicitRulesMap) { - sharedImplicitRulesMap = nullptr; - } } } // namespace Fortran::semantics diff --git a/flang/runtime/edit-output.cpp b/flang/runtime/edit-output.cpp --- a/flang/runtime/edit-output.cpp +++ b/flang/runtime/edit-output.cpp @@ -411,7 +411,7 @@ template bool RealOutputEditing::EditEXOutput(const DataEdit &) { io_.GetIoErrorHandler().Crash( - "EX output editing is not yet implemented"); // TODO + "not yet implemented: EX output editing"); // TODO } template bool RealOutputEditing::Edit(const DataEdit &edit) { diff --git a/flang/test/Semantics/struct01.f90 b/flang/test/Semantics/struct01.f90 --- a/flang/test/Semantics/struct01.f90 +++ b/flang/test/Semantics/struct01.f90 @@ -6,7 +6,7 @@ structure /s/ !ERROR: /s/ is not a known STRUCTURE record /s/ attemptToRecurse - !ERROR: UNION is not yet supported + !ERROR: not yet implemented: support for UNION union map integer j