| Index: pkg/analyzer_cli/lib/src/package_analyzer.dart
|
| diff --git a/pkg/analyzer_cli/lib/src/package_analyzer.dart b/pkg/analyzer_cli/lib/src/package_analyzer.dart
|
| index 1b9c978dda138b4f4f05789f0501550315f150da..2c1c369d874e0a6d88d95a50707b30c65caf4415 100644
|
| --- a/pkg/analyzer_cli/lib/src/package_analyzer.dart
|
| +++ b/pkg/analyzer_cli/lib/src/package_analyzer.dart
|
| @@ -4,6 +4,7 @@
|
|
|
| library analyzer_cli.src.package_analyzer;
|
|
|
| +import 'dart:convert';
|
| import 'dart:core' hide Resource;
|
| import 'dart:io' as io;
|
|
|
| @@ -31,6 +32,7 @@ import 'package:analyzer_cli/src/analyzer_impl.dart';
|
| import 'package:analyzer_cli/src/driver.dart';
|
| import 'package:analyzer_cli/src/error_formatter.dart';
|
| import 'package:analyzer_cli/src/options.dart';
|
| +import 'package:crypto/crypto.dart';
|
| import 'package:path/path.dart' as pathos;
|
|
|
| /**
|
| @@ -85,7 +87,7 @@ class FileBasedSummaryResynthesizer extends SummaryResynthesizer {
|
| void _fillMaps(String path) {
|
| io.File file = new io.File(path);
|
| List<int> buffer = file.readAsBytesSync();
|
| - SdkBundle bundle = new SdkBundle.fromBuffer(buffer);
|
| + PackageBundle bundle = new PackageBundle.fromBuffer(buffer);
|
| for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
|
| unlinkedMap[bundle.unlinkedUnitUris[i]] = bundle.unlinkedUnits[i];
|
| }
|
| @@ -251,6 +253,7 @@ class PackageAnalyzer {
|
| final List<LinkedLibraryBuilder> linkedLibraries = <LinkedLibraryBuilder>[];
|
| final List<String> unlinkedUnitUris = <String>[];
|
| final List<UnlinkedUnitBuilder> unlinkedUnits = <UnlinkedUnitBuilder>[];
|
| + final List<String> unlinkedUnitHashes = <String>[];
|
|
|
| PackageAnalyzer(this.options);
|
|
|
| @@ -312,11 +315,12 @@ class PackageAnalyzer {
|
| }
|
| }
|
| // Write the whole package bundle.
|
| - SdkBundleBuilder sdkBundle = new SdkBundleBuilder(
|
| + PackageBundleBuilder sdkBundle = new PackageBundleBuilder(
|
| linkedLibraryUris: linkedLibraryUris,
|
| linkedLibraries: linkedLibraries,
|
| unlinkedUnitUris: unlinkedUnitUris,
|
| - unlinkedUnits: unlinkedUnits);
|
| + unlinkedUnits: unlinkedUnits,
|
| + unlinkedUnitHashes: unlinkedUnitHashes);
|
| io.File file = new io.File(options.packageSummaryOutput);
|
| file.writeAsBytesSync(sdkBundle.toBuffer(), mode: io.FileMode.WRITE_ONLY);
|
| }
|
| @@ -379,6 +383,15 @@ class PackageAnalyzer {
|
| }
|
|
|
| /**
|
| + * Compute a hash of the given file contents.
|
| + */
|
| + String _hash(String contents) {
|
| + MD5 md5 = new MD5();
|
| + md5.add(UTF8.encode(contents));
|
| + return CryptoUtils.bytesToHex(md5.close());
|
| + }
|
| +
|
| + /**
|
| * Print errors for all explicit sources.
|
| */
|
| void _printErrors() {
|
| @@ -405,5 +418,8 @@ class PackageAnalyzer {
|
| linkedLibraries.add(libraryResult.linked);
|
| unlinkedUnitUris.addAll(libraryResult.unitUris);
|
| unlinkedUnits.addAll(libraryResult.unlinkedUnits);
|
| + for (Source source in libraryResult.unitSources) {
|
| + unlinkedUnitHashes.add(_hash(source.contents.data));
|
| + }
|
| }
|
| }
|
|
|