[flang-commits] [flang] [flang] Add notify-type and notify-wait-stmt (PR #76594)
Peter Klausler via flang-commits
flang-commits at lists.llvm.org
Fri Dec 29 17:06:32 PST 2023
================
@@ -212,32 +195,76 @@ void CoarrayChecker::Leave(const parser::EventWaitStmt &x) {
common::visitors{
[&](const parser::StatVariable &stat) {
if (gotStat) {
- context_.Say( // C1178
+ context.Say( // C1178
"A stat-variable in a event-wait-spec-list may not be repeated"_err_en_US);
}
gotStat = true;
},
[&](const parser::MsgVariable &var) {
- WarnOnDeferredLengthCharacterScalar(context_,
- GetExpr(context_, var),
+ WarnOnDeferredLengthCharacterScalar(context,
+ GetExpr(context, var),
var.v.thing.thing.GetSource(), "ERRMSG=");
if (gotMsg) {
- context_.Say( // C1178
+ context.Say( // C1178
"A errmsg-variable in a event-wait-spec-list may not be repeated"_err_en_US);
}
gotMsg = true;
},
},
statOrErrmsg.u);
CheckCoindexedStatOrErrmsg(
- context_, statOrErrmsg, "event-wait-spec-list");
+ context, statOrErrmsg, "event-wait-spec-list");
},
},
eventWaitSpec.u);
}
}
+void CoarrayChecker::Leave(const parser::NotifyWaitStmt &x) {
+ const auto ¬ifyVar{std::get<parser::NotifyVariable>(x.t)};
+
+ if (const auto *expr{GetExpr(context_, notifyVar)}) {
+ if (ExtractCoarrayRef(expr)) {
+ context_.Say(parser::FindSourceLocation(notifyVar), // F2023 - C1178
+ "A notify-variable in a NOTIFY WAIT statement may not be a coindexed object"_err_en_US);
+ } else {
----------------
klausler wrote:
`else if` would be better here
https://github.com/llvm/llvm-project/pull/76594
More information about the flang-commits
mailing list