Chromium Code Reviews| Index: pkg/fasta/lib/src/dill/dill_loader.dart |
| diff --git a/pkg/fasta/lib/src/dill/dill_loader.dart b/pkg/fasta/lib/src/dill/dill_loader.dart |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..9b65b662093e413e5f7f7949b0ca96241521ca1e |
| --- /dev/null |
| +++ b/pkg/fasta/lib/src/dill/dill_loader.dart |
| @@ -0,0 +1,62 @@ |
| +// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file |
| +// for details. All rights reserved. Use of this source code is governed by a |
| +// BSD-style license that can be found in the LICENSE file. |
| + |
| +library fasta.dill_loader; |
| + |
| +import 'dart:async' show |
| + Future; |
| + |
| +import 'dart:io' show |
| + File; |
| + |
| +import 'package:kernel/kernel.dart' show |
| + loadProgramFromBinary; |
| + |
| +import 'package:kernel/ast.dart' show |
| + Library, |
| + Program; |
| + |
| +import '../loader.dart' show |
| + Loader; |
| + |
| +import '../target_implementation.dart' show |
| + TargetImplementation; |
| + |
| +import 'dill_library_builder.dart' show |
| + DillLibraryBuilder; |
| + |
| +class DillLoader extends Loader<Library> { |
| + Uri input; |
| + |
| + Program program; |
| + |
| + DillLoader(TargetImplementation target) |
| + : super(target); |
| + |
| + DillLibraryBuilder read(Uri uri) => super.read(uri); |
| + |
| + Future<Null> buildOutline(DillLibraryBuilder builder) async { |
| + if (program == null) { |
| + byteCount = await new File.fromUri(input).length(); |
| + setProgram(await loadProgramFromBinary(input.toFilePath())); |
| + } |
| + builder.library.classes.forEach(builder.addClass); |
| + builder.library.procedures.forEach(builder.addMember); |
| + builder.library.fields.forEach(builder.addMember); |
| + } |
| + |
| + Future<Null> buildBody(DillLibraryBuilder builder, _) { |
| + return buildOutline(builder); |
| + } |
| + |
| + void setProgram(Program program) { |
| + if (input == null) { |
| + input = Uri.parse("org.dartlang:platform"); |
|
Johnni Winther
2017/01/19 09:21:33
Add a comment about the semantics of this value.
ahe
2017/01/19 10:48:30
I've moved this code to pkg/fasta/lib/testing/suit
|
| + } |
| + this.program = program; |
| + for (Library library in program.libraries) { |
| + read(library.importUri).library = library; |
| + } |
| + } |
| +} |