22#include <mlir/IR/BuiltinOps.h>
26#define GEN_PASS_DEF_MEMBERWRITEVALIDATORPASS
36class MemberWriteValidatorPass
38 void runOnOperation()
override {
45 const auto &[overwrites, written] = *result;
48 if (!written.contains(member.getSymName())) {
49 member->emitWarning(
"member may not be written to").report();
53 for (
auto [first, over] : overwrites) {
55 <<
"' \"@" << over.getMemberName() <<
'"';
56 diag.attachNote(first.getLoc()) <<
"previously written to here";
60 markAllAnalysesPreserved();
66 return std::make_unique<MemberWriteValidatorPass>();