564970c10e
The concept of a binary library file no longer exists. A kernel file can contain any number of libraries, and some of these libraries can be "external". To reference a class or member from another build, the class or member must be declared in an external library. Members in an external library contain all their type information, but have no body. Classes in an external library have their hierarchy information present, but are not guaranteed to contain all their actual members. The idea is that references themselves don't really cross module boundaries, but rather refer to a local definition whose body is contributed from elsewhere, much like 'external' members in Dart. A modular backend such as DDC should be able to compile from one of these kernel files without needing to load auxiliary information from summaries or other kernel files. For whole program transformations or backends, a linking step, which is not yet implemented, must merge classes and members in external libraries based on their name. External libraries share the same IR and binary format as ordinary libraries. Transformations that affect the interface for a member or class should transform the external libraries alongside with the internal ones, ideally without needing to treat them any different. R=kmillikin@google.com Review URL: https://chromereviews.googleplex.com/516847013 .