47f09a619e
Before, the part-URI was serialized as a file-URI and conflated with source location information. The part-URI is the URI in the following declaration in a Dart source file: part "URI"; This is different from what we normally call a file-URI. A file URI is used to point to the source location of the part declaration, not the URI in the part declaration. Furthermore, the field was serialized using writeUriReference which only works for URIs that are in the uriToSource map on a Component. Although this might seem like a safe optimization, it doesn't work if the uriToSource map is omitted or if a part declaration refers to a missing file. Finally, due to the confusing use of fileUri, LibraryPart was mistakenly implementing FileUriNode and annotations were stripped of source locations if the source for the part were omitted from uriToSource. The partUri field is now an unresolved string that can be resolved against either the parent library's import- or file-URI to obtain either version as needed. Change-Id: I255cb4eeaf89928292ab32a2f6be9ead6cc8cee1 Reviewed-on: https://dart-review.googlesource.com/49500 Commit-Queue: Peter von der Ahé <ahe@google.com> Reviewed-by: Jens Johansen <jensj@google.com>