Prepare to accept the `ipi` argument to the `-library-level` flag. IPI
stands for Internal Programming Interface and would describe a module
that's not to be distributed outside of its project.
In the future, the compiler could use that information to report when a
distributed module (api or spi) imports publicly a module that's not
distributed.
rdar://102435183
Consider both frameworks and free floating modules imported from more
private path as SPI. This will make the compiler raise errors on public
imports of more private modules.
rdar://91904154
Diagnostics of public imports of private modules are more likely to be
wrong about imports of the underlying module from a Swift overlay due to
project configuration/installation, or the fact that private overlays
are installed in the same folder as public ones. Let's always downgrade
these diagnostics to warnings to help landing the rest of the
diagnostics as errors.
rdar://87262431
Intro the concept of library access or distribution level to identify
layers of libraries and report public imports of private libraries from
public ones.
rdar://62934005