Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(60)

Unified Diff: pkg/front_end/lib/src/fasta/kernel/kernel_target.dart

Issue 2874723002: Add a way to use shared CanonicalName root to deserialize Program. (Closed)
Patch Set: Add TODO for 'uriToSource'. Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
diff --git a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
index fbb3a9abfbda5ef5f0d55414f527837d4a10b32f..4be81b7332951d2f609d1a8f4a711a73f26d3d81 100644
--- a/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/kernel_target.dart
@@ -13,6 +13,7 @@ import 'package:kernel/ast.dart'
show
Arguments,
AsyncMarker,
+ CanonicalName,
Class,
Constructor,
DartType,
@@ -230,7 +231,7 @@ class KernelTarget extends TargetImplementation {
: writeLinkedProgram(uri, program, isFullProgram: isFullProgram);
}
- Future<Program> writeOutline(Uri uri) async {
+ Future<Program> writeOutline(Uri uri, {CanonicalName nameRoot}) async {
if (loader.first == null) return null;
try {
loader.createTypeInferenceEngine();
@@ -248,7 +249,8 @@ class KernelTarget extends TargetImplementation {
installDefaultConstructors(sourceClasses);
loader.resolveConstructors();
loader.finishTypeVariables(objectClassBuilder);
- program = link(new List<Library>.from(loader.libraries));
+ program =
+ link(new List<Library>.from(loader.libraries), nameRoot: nameRoot);
loader.computeHierarchy(program);
loader.checkOverrides(sourceClasses);
loader.prepareInitializerInference();
@@ -368,21 +370,20 @@ class KernelTarget extends TargetImplementation {
/// Creates a program by combining [libraries] with the libraries of
/// `dillTarget.loader.program`.
- Program link(List<Library> libraries) {
+ Program link(List<Library> libraries, {CanonicalName nameRoot}) {
Map<String, Source> uriToSource =
new Map<String, Source>.from(this.uriToSource);
- final Program binary = dillTarget.loader.program;
- if (binary != null) {
- libraries.addAll(binary.libraries);
- uriToSource.addAll(binary.uriToSource);
- }
+ libraries.addAll(dillTarget.loader.libraries);
+ // TODO(scheglov) Should we also somehow update `uriToSource`?
+// uriToSource.addAll(binary.uriToSource);
ahe 2017/05/15 09:08:44 Yes. You need to update uriToSource. Otherwise the
// TODO(ahe): Remove this line. Kernel seems to generate a default line map
// that used when there's no fileUri on an element. Instead, ensure all
// elements have a fileUri.
uriToSource[""] = new Source(<int>[0], const <int>[]);
- Program program = new Program(libraries, uriToSource);
+ Program program = new Program(
+ nameRoot: nameRoot, libraries: libraries, uriToSource: uriToSource);
if (loader.first != null) {
Builder builder = loader.first.lookup("main", -1, null);
if (builder is KernelProcedureBuilder) {

Powered by Google App Engine
This is Rietveld 408576698