Chromium Code Reviews| Index: pkg/analyzer/lib/src/summary/summarize_elements.dart |
| diff --git a/pkg/analyzer/lib/src/summary/summarize_elements.dart b/pkg/analyzer/lib/src/summary/summarize_elements.dart |
| index 65b92432d77b6aa3d8052da29f380ca2a03d2201..9f08b40bbab87e8e1d4808ceab5885e46eb80246 100644 |
| --- a/pkg/analyzer/lib/src/summary/summarize_elements.dart |
| +++ b/pkg/analyzer/lib/src/summary/summarize_elements.dart |
| @@ -12,7 +12,6 @@ import 'package:analyzer/dart/element/type.dart'; |
| import 'package:analyzer/src/dart/element/element.dart'; |
| import 'package:analyzer/src/dart/element/member.dart'; |
| import 'package:analyzer/src/dart/element/type.dart'; |
| -import 'package:analyzer/src/generated/java_engine.dart'; |
| import 'package:analyzer/src/generated/resolver.dart'; |
| import 'package:analyzer/src/generated/source.dart'; |
| import 'package:analyzer/src/generated/utilities_dart.dart'; |
| @@ -20,11 +19,11 @@ import 'package:analyzer/src/summary/api_signature.dart'; |
| import 'package:analyzer/src/summary/format.dart'; |
| import 'package:analyzer/src/summary/idl.dart'; |
| import 'package:analyzer/src/summary/name_filter.dart'; |
| +import 'package:analyzer/src/summary/package_bundle_reader.dart'; |
| import 'package:analyzer/src/summary/summarize_const_expr.dart'; |
| import 'package:convert/convert.dart'; |
| import 'package:crypto/crypto.dart'; |
| import 'package:path/path.dart' as path; |
| -import 'package:analyzer/src/summary/package_bundle_reader.dart'; |
| /** |
| * Serialize all the elements in [lib] to a summary using [ctx] as the context |
| @@ -140,6 +139,8 @@ class PackageBundleAssembler { |
| final List<LinkedLibraryBuilder> _linkedLibraries = <LinkedLibraryBuilder>[]; |
| final List<String> _unlinkedUnitUris = <String>[]; |
| final List<UnlinkedUnitBuilder> _unlinkedUnits = <UnlinkedUnitBuilder>[]; |
| + final Map<String, UnlinkedUnitBuilder> _unlinkedUnitMap = |
| + <String, UnlinkedUnitBuilder>{}; |
| final List<String> _unlinkedUnitHashes; |
| final List<PackageDependencyInfoBuilder> _dependencies = |
| <PackageDependencyInfoBuilder>[]; |
| @@ -166,22 +167,16 @@ class PackageBundleAssembler { |
| } |
| /** |
| - * Use the dependency information in [summaryDataStore] to populate the |
| - * dependencies in the package bundle being assembled. |
| - */ |
| - void recordDependencies(SummaryDataStore summaryDataStore) { |
| - _dependencies.addAll(summaryDataStore.dependencies); |
| - } |
| - |
| - /** |
| * Add a fallback compilation unit to the package bundle, corresponding to |
| * the compilation unit located at [source]. |
| */ |
| void addFallbackUnit(Source source) { |
| String uri = source.uri.toString(); |
| + UnlinkedUnitBuilder unit = new UnlinkedUnitBuilder( |
| + fallbackModePath: path.relative(source.fullName)); |
| _unlinkedUnitUris.add(uri); |
| - _unlinkedUnits.add(new UnlinkedUnitBuilder( |
| - fallbackModePath: path.relative(source.fullName))); |
| + _unlinkedUnits.add(unit); |
| + _unlinkedUnitMap[uri] = unit; |
| } |
| void addLinkedLibrary(String uri, LinkedLibraryBuilder library) { |
| @@ -198,6 +193,7 @@ class PackageBundleAssembler { |
| String uri, UnlinkedUnitBuilder unit, String hash) { |
| _unlinkedUnitUris.add(uri); |
| _unlinkedUnits.add(unit); |
| + _unlinkedUnitMap[uri] = unit; |
| _unlinkedUnitHashes?.add(hash); |
| } |
| @@ -205,7 +201,7 @@ class PackageBundleAssembler { |
| * Assemble a new [PackageBundleBuilder] using the gathered information. |
| */ |
| PackageBundleBuilder assemble() { |
| - PackageBundleBuilder packageBundle = new PackageBundleBuilder( |
| + return new PackageBundleBuilder( |
| linkedLibraryUris: _linkedLibraryUris, |
| linkedLibraries: _linkedLibraries, |
| unlinkedUnitUris: _unlinkedUnitUris, |
| @@ -213,11 +209,16 @@ class PackageBundleAssembler { |
| unlinkedUnitHashes: _unlinkedUnitHashes, |
| majorVersion: currentMajorVersion, |
| minorVersion: currentMinorVersion, |
| - dependencies: _dependencies); |
| - ApiSignature apiSignature = new ApiSignature(); |
| - packageBundle.collectApiSignature(apiSignature); |
| - packageBundle.apiSignature = apiSignature.toHex(); |
| - return packageBundle; |
| + dependencies: _dependencies, |
| + apiSignature: _computeApiSignature()); |
| + } |
| + |
| + /** |
| + * Use the dependency information in [summaryDataStore] to populate the |
| + * dependencies in the package bundle being assembled. |
| + */ |
| + void recordDependencies(SummaryDataStore summaryDataStore) { |
| + _dependencies.addAll(summaryDataStore.dependencies); |
| } |
| /** |
| @@ -233,12 +234,28 @@ class PackageBundleAssembler { |
| _linkedLibraries.add(libraryResult.linked); |
| _unlinkedUnitUris.addAll(libraryResult.unitUris); |
| _unlinkedUnits.addAll(libraryResult.unlinkedUnits); |
| + for (int i = 0; i < libraryResult.unitUris.length; i++) { |
| + _unlinkedUnitMap[libraryResult.unitUris[i]] = |
| + libraryResult.unlinkedUnits[i]; |
| + } |
| for (Source source in libraryResult.unitSources) { |
| _unlinkedUnitHashes?.add(_hash(source.contents.data)); |
| } |
| } |
| /** |
| + * Compute the API signature for this package bundle. |
| + */ |
| + String _computeApiSignature() { |
| + ApiSignature apiSignature = new ApiSignature(); |
| + for (String unitUri in _unlinkedUnitUris.toList()..sort()) { |
|
scheglov
2016/08/09 17:12:36
It's probably equivalent, but if we ask values fro
Paul Berry
2016/08/09 17:18:02
Done.
|
| + apiSignature.addString(unitUri); |
| + _unlinkedUnitMap[unitUri].collectApiSignature(apiSignature); |
| + } |
| + return apiSignature.toHex(); |
| + } |
| + |
| + /** |
| * Compute a hash of the given file contents. |
| */ |
| String _hash(String contents) { |