diff --git a/flang/runtime/io-stmt.h b/flang/runtime/io-stmt.h index 32e546e5c082d..93b3bed732949 100644 --- a/flang/runtime/io-stmt.h +++ b/flang/runtime/io-stmt.h @@ -220,7 +220,7 @@ class IoStatementState { // Skips spaces, advances records, and ignores NAMELIST comments std::optional GetNextNonBlank() { auto ch{GetCurrentChar()}; - bool inNamelist{GetConnectionState().modes.inNamelist}; + bool inNamelist{mutableModes().inNamelist}; while (!ch || *ch == ' ' || *ch == '\t' || (inNamelist && *ch == '!')) { if (ch && (*ch == ' ' || *ch == '\t')) { HandleRelativePosition(1); diff --git a/flang/runtime/namelist.cpp b/flang/runtime/namelist.cpp index 8d291619b8f5c..96bffa77b4d5a 100644 --- a/flang/runtime/namelist.cpp +++ b/flang/runtime/namelist.cpp @@ -28,9 +28,9 @@ static inline char32_t GetComma(IoStatementState &io) { bool IONAME(OutputNamelist)(Cookie cookie, const NamelistGroup &group) { IoStatementState &io{*cookie}; io.CheckFormattedStmtType("OutputNamelist"); - ConnectionState &connection{io.GetConnectionState()}; - connection.modes.inNamelist = true; + io.mutableModes().inNamelist = true; char comma{static_cast(GetComma(io))}; + ConnectionState &connection{io.GetConnectionState()}; // Internal functions to advance records and convert case const auto EmitWithAdvance{[&](char ch) -> bool { return (!connection.NeedAdvance(1) || io.AdvanceRecord()) && @@ -355,8 +355,7 @@ static void SkipNamelistGroup(IoStatementState &io) { bool IONAME(InputNamelist)(Cookie cookie, const NamelistGroup &group) { IoStatementState &io{*cookie}; io.CheckFormattedStmtType("InputNamelist"); - ConnectionState &connection{io.GetConnectionState()}; - connection.modes.inNamelist = true; + io.mutableModes().inNamelist = true; IoErrorHandler &handler{io.GetIoErrorHandler()}; auto *listInput{io.get_if>()}; RUNTIME_CHECK(handler, listInput != nullptr); @@ -485,8 +484,7 @@ bool IONAME(InputNamelist)(Cookie cookie, const NamelistGroup &group) { bool IsNamelistName(IoStatementState &io) { if (io.get_if>()) { - ConnectionState &connection{io.GetConnectionState()}; - if (connection.modes.inNamelist) { + if (io.mutableModes().inNamelist) { SavedPosition savedPosition{io}; if (auto ch{io.GetNextNonBlank()}) { if (IsLegalIdStart(*ch)) {