| 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..2a71829d513050e8ca271ca909cc92fa6e7a313f
|
| --- /dev/null
|
| +++ b/pkg/fasta/lib/src/dill/dill_loader.dart
|
| @@ -0,0 +1,60 @@
|
| +// 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) {
|
| + assert(input != null);
|
| + this.program = program;
|
| + for (Library library in program.libraries) {
|
| + read(library.importUri).library = library;
|
| + }
|
| + }
|
| +}
|
|
|