It's likely that these were listed as "REQUIRES: OS=macosx" to not
redundantly run them for iOS et al, but they don't take that long and
so it's more useful for Linux devs to be able to run them locally if
need be. Or to catch something that really is different on non-macOS.
Now that SILGen and IRGen can trigger type checking work, we have to run the
full pipeline to get a complete picture.
Thankfully everything still passes!
For all types, we can safely skip nested nominal types and
typealiases.
For a struct, we only have to look at VarDecls; methods never
affect layout.
Similarly for an enum, only EnumElementDecls matter.
For a class, we still have to look at all methods and properties.
Ideally, in non-optimized builds we would invoke virtual methods
by calling thunks, and only emit the thunks from the translation
unit containing the class. Then the layout of a class will
only be necessary if you subclass the class.
This should improve compiler scalability in multiple-frontend
mode.