Useful or not, from you.
circt FIRRTL dialect annotation support isn't right

Various FIRRTL dialect ops have an "annotations" attribute which is a required attribute, but they are declared like this in tblgen: DefaultValuedAttr<AnnotationArrayAttr, "{}">:$annotations);

This is a problem: it is a required attribute, but defaults to null. The pretty printers work around this in various ways, but the generic op printer crashes (and other things will probably be unhappy as well):

circt-translate -import-firrtl -verify-diagnostics test/Dialect/FIRRTL/parse-basic.fir --mlir-print-op-generic

I think we should move to the design where these are required and empty if not present (we should just change all the build methods to create an empty array with $ctx.

One other oddity is that the Module ops don't elide printing the annotations array when empty.

When this is fixed, some defensive null checking code in this patch can be removed:

That's a useful answer
Without any help

Thanks for cleaning up my code! This looks way better after your patch series.