f85684604b
In the initial implementation of summaries, all declarations for a given library were thrown together into a single bucket, regardless of the compilation unit in which they appeared. This was done on the grounds that semantically, the compilation unit in which a declaration appears is irrelevant. However, it turns out that this conflicts with one of the design goals of summaries, which is to allow summaries to be quickly "re-linked" when URI resolution changes. Since "part" declarations use URIs to refer to part files, this means that URI resolution may affect the relationship among compilation units within a library; thus, the declarations for each compilation unit need to be in their own data structure. A side benefit of this reorganization is to make the structure of the summary more similar to the structure of the element model; this should in turn make it simpler (and possibly more performant) to convert between element models and summaries. This CL reorganizes the declarations themselves; future CLs will reorganize the dependency and resolution information to match. R=brianwilkerson@google.com Review URL: https://codereview.chromium.org/1530503002 .