Index: pkg/analyzer/tool/summary/build_sdk_summaries.dart |
diff --git a/pkg/analyzer/tool/summary/build_sdk_summaries.dart b/pkg/analyzer/tool/summary/build_sdk_summaries.dart |
index bd8dec69041b556f04eabf5d1acbf6a31b74cbfd..176f7c654328a6a2e98f568657d1759c3337acfb 100644 |
--- a/pkg/analyzer/tool/summary/build_sdk_summaries.dart |
+++ b/pkg/analyzer/tool/summary/build_sdk_summaries.dart |
@@ -1,3 +1,4 @@ |
+import 'dart:convert'; |
import 'dart:io'; |
import 'package:analyzer/dart/element/element.dart'; |
@@ -8,6 +9,7 @@ import 'package:analyzer/src/generated/sdk_io.dart'; |
import 'package:analyzer/src/generated/source.dart'; |
import 'package:analyzer/src/summary/format.dart'; |
import 'package:analyzer/src/summary/summarize_elements.dart'; |
+import 'package:crypto/crypto.dart'; |
import 'package:path/path.dart'; |
main(List<String> args) { |
@@ -73,6 +75,7 @@ class _Builder { |
final List<LinkedLibraryBuilder> linkedLibraries = <LinkedLibraryBuilder>[]; |
final List<String> unlinkedUnitUris = <String>[]; |
final List<UnlinkedUnitBuilder> unlinkedUnits = <UnlinkedUnitBuilder>[]; |
+ final List<String> unlinkedUnitHashes = <String>[]; |
_Builder(this.sdkPath, this.outputDirectoryPath, this.strongMode); |
@@ -94,9 +97,8 @@ class _Builder { |
// |
// Prepare 'dart:' URIs to serialize. |
// |
- Set<String> uriSet = sdk.sdkLibraries |
- .map((SdkLibrary library) => library.shortName) |
- .toSet(); |
+ Set<String> uriSet = |
+ sdk.sdkLibraries.map((SdkLibrary library) => library.shortName).toSet(); |
uriSet.add('dart:html/nativewrappers.dart'); |
uriSet.add('dart:html_common/html_common_dart2js.dart'); |
// |
@@ -109,11 +111,12 @@ class _Builder { |
// |
// Write the whole SDK bundle. |
// |
- SdkBundleBuilder sdkBundle = new SdkBundleBuilder( |
+ PackageBundleBuilder sdkBundle = new PackageBundleBuilder( |
linkedLibraryUris: linkedLibraryUris, |
linkedLibraries: linkedLibraries, |
unlinkedUnitUris: unlinkedUnitUris, |
- unlinkedUnits: unlinkedUnits); |
+ unlinkedUnits: unlinkedUnits, |
+ unlinkedUnitHashes: unlinkedUnitHashes); |
String outputFilePath = |
join(outputDirectoryPath, strongMode ? 'strong.sum' : 'spec.sum'); |
File file = new File(outputFilePath); |
@@ -125,6 +128,15 @@ class _Builder { |
} |
/** |
+ * 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()); |
+ } |
+ |
+ /** |
* Serialize the library with the given [source] and all its direct or |
* indirect imports and exports. |
*/ |
@@ -149,5 +161,8 @@ class _Builder { |
linkedLibraries.add(libraryResult.linked); |
unlinkedUnitUris.addAll(libraryResult.unitUris); |
unlinkedUnits.addAll(libraryResult.unlinkedUnits); |
+ for (Source source in libraryResult.unitSources) { |
+ unlinkedUnitHashes.add(_hash(source.contents.data)); |
+ } |
} |
} |