Move Const/PartialStruct to Core (#36570)
* Move Const/PartialStruct to Core
The change in #36521 proposes to make PartialStruct legal in the
global code cache. However, `@vtjnash` points out that since
these structs are currently defined in `Core.Compiler`, this
would make loading a second copy of inference impossible. However,
loading a second copy of inference is desirable for development,
so we generally put any type that can appear in the global cache
into `Core` to make this possible. As such we have two options
here:
1. Change the representation of PartialStruct to only use objects
already in Core
2. Move Const/PartialStruct into Core
I originally thought that option 1 would be preferable, since I
though that the only meaningful information that could appear
in a PartialStruct field would be a Const or a nested PartialStruct.
However, I forgot that it sometimes also contains Type{...} or elements
of the type lattice more precise than what the widened type prescribes.
As such, building PartialStruct out of solely types defined in Core
would have gotten a bit messy, and it's much simpler just to move
both of these to Core themselves. `@JeffBezanson` also points out
that we may eventually want to look at these in codegen, so define
them in C while we're at it.
* Update base/boot.jl
Co-authored-by: Jameson Nash <vtjnash@gmail.com>
Co-authored-by: Jameson Nash <vtjnash@gmail.com>