| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 library serialization.elements; | 5 library serialization.elements; |
| 6 | 6 |
| 7 import 'dart:convert'; | 7 import 'dart:convert'; |
| 8 | 8 |
| 9 import 'package:analyzer/dart/ast/ast.dart'; | 9 import 'package:analyzer/dart/ast/ast.dart'; |
| 10 import 'package:analyzer/dart/element/element.dart'; | 10 import 'package:analyzer/dart/element/element.dart'; |
| 11 import 'package:analyzer/dart/element/type.dart'; | 11 import 'package:analyzer/dart/element/type.dart'; |
| 12 import 'package:analyzer/src/dart/element/element.dart'; | 12 import 'package:analyzer/src/dart/element/element.dart'; |
| 13 import 'package:analyzer/src/dart/element/member.dart'; | 13 import 'package:analyzer/src/dart/element/member.dart'; |
| 14 import 'package:analyzer/src/dart/element/type.dart'; | 14 import 'package:analyzer/src/dart/element/type.dart'; |
| 15 import 'package:analyzer/src/generated/java_engine.dart'; | 15 import 'package:analyzer/src/generated/java_engine.dart'; |
| 16 import 'package:analyzer/src/generated/resolver.dart'; | 16 import 'package:analyzer/src/generated/resolver.dart'; |
| 17 import 'package:analyzer/src/generated/source.dart'; | 17 import 'package:analyzer/src/generated/source.dart'; |
| 18 import 'package:analyzer/src/generated/utilities_dart.dart'; | 18 import 'package:analyzer/src/generated/utilities_dart.dart'; |
| 19 import 'package:analyzer/src/summary/api_signature.dart'; | 19 import 'package:analyzer/src/summary/api_signature.dart'; |
| 20 import 'package:analyzer/src/summary/format.dart'; | 20 import 'package:analyzer/src/summary/format.dart'; |
| 21 import 'package:analyzer/src/summary/idl.dart'; | 21 import 'package:analyzer/src/summary/idl.dart'; |
| 22 import 'package:analyzer/src/summary/name_filter.dart'; | 22 import 'package:analyzer/src/summary/name_filter.dart'; |
| 23 import 'package:analyzer/src/summary/summarize_const_expr.dart'; | 23 import 'package:analyzer/src/summary/summarize_const_expr.dart'; |
| 24 import 'package:convert/convert.dart'; | 24 import 'package:convert/convert.dart'; |
| 25 import 'package:crypto/crypto.dart'; | 25 import 'package:crypto/crypto.dart'; |
| 26 import 'package:path/path.dart' as path; | 26 import 'package:path/path.dart' as path; |
| 27 import 'package:analyzer/src/summary/package_bundle_reader.dart'; |
| 27 | 28 |
| 28 /** | 29 /** |
| 29 * Serialize all the elements in [lib] to a summary using [ctx] as the context | 30 * Serialize all the elements in [lib] to a summary using [ctx] as the context |
| 30 * for building the summary, and using [typeProvider] to find built-in types. | 31 * for building the summary, and using [typeProvider] to find built-in types. |
| 31 */ | 32 */ |
| 32 LibrarySerializationResult serializeLibrary( | 33 LibrarySerializationResult serializeLibrary( |
| 33 LibraryElement lib, TypeProvider typeProvider, bool strongMode) { | 34 LibraryElement lib, TypeProvider typeProvider, bool strongMode) { |
| 34 _LibrarySerializer serializer = | 35 _LibrarySerializer serializer = |
| 35 new _LibrarySerializer(lib, typeProvider, strongMode); | 36 new _LibrarySerializer(lib, typeProvider, strongMode); |
| 36 LinkedLibraryBuilder linked = serializer.serializeLibrary(); | 37 LinkedLibraryBuilder linked = serializer.serializeLibrary(); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 133 * data that was previously not summarized), this value should be incremented | 134 * data that was previously not summarized), this value should be incremented |
| 134 * by 1. | 135 * by 1. |
| 135 */ | 136 */ |
| 136 static const int currentMinorVersion = 0; | 137 static const int currentMinorVersion = 0; |
| 137 | 138 |
| 138 final List<String> _linkedLibraryUris = <String>[]; | 139 final List<String> _linkedLibraryUris = <String>[]; |
| 139 final List<LinkedLibraryBuilder> _linkedLibraries = <LinkedLibraryBuilder>[]; | 140 final List<LinkedLibraryBuilder> _linkedLibraries = <LinkedLibraryBuilder>[]; |
| 140 final List<String> _unlinkedUnitUris = <String>[]; | 141 final List<String> _unlinkedUnitUris = <String>[]; |
| 141 final List<UnlinkedUnitBuilder> _unlinkedUnits = <UnlinkedUnitBuilder>[]; | 142 final List<UnlinkedUnitBuilder> _unlinkedUnits = <UnlinkedUnitBuilder>[]; |
| 142 final List<String> _unlinkedUnitHashes; | 143 final List<String> _unlinkedUnitHashes; |
| 144 final List<PackageDependencyInfoBuilder> _dependencies = |
| 145 <PackageDependencyInfoBuilder>[]; |
| 143 final bool _excludeHashes; | 146 final bool _excludeHashes; |
| 144 | 147 |
| 145 /** | 148 /** |
| 146 * Create a [PackageBundleAssembler]. If [excludeHashes] is `true`, hash | 149 * Create a [PackageBundleAssembler]. If [excludeHashes] is `true`, hash |
| 147 * computation will be skipped. | 150 * computation will be skipped. |
| 148 */ | 151 */ |
| 149 PackageBundleAssembler({bool excludeHashes: false}) | 152 PackageBundleAssembler({bool excludeHashes: false}) |
| 150 : _excludeHashes = excludeHashes, | 153 : _excludeHashes = excludeHashes, |
| 151 _unlinkedUnitHashes = excludeHashes ? null : <String>[]; | 154 _unlinkedUnitHashes = excludeHashes ? null : <String>[]; |
| 152 | 155 |
| 153 /** | 156 /** |
| 154 * Add a fallback library to the package bundle, corresponding to the library | 157 * Add a fallback library to the package bundle, corresponding to the library |
| 155 * whose defining compilation unit is located at [source]. Caller must also | 158 * whose defining compilation unit is located at [source]. Caller must also |
| 156 * call [addFallbackUnit] for all compilation units contained in the library | 159 * call [addFallbackUnit] for all compilation units contained in the library |
| 157 * (including the defining compilation unit). | 160 * (including the defining compilation unit). |
| 158 */ | 161 */ |
| 159 void addFallbackLibrary(Source source) { | 162 void addFallbackLibrary(Source source) { |
| 160 String uri = source.uri.toString(); | 163 String uri = source.uri.toString(); |
| 161 _linkedLibraryUris.add(uri); | 164 _linkedLibraryUris.add(uri); |
| 162 _linkedLibraries.add(new LinkedLibraryBuilder(fallbackMode: true)); | 165 _linkedLibraries.add(new LinkedLibraryBuilder(fallbackMode: true)); |
| 163 } | 166 } |
| 164 | 167 |
| 165 /** | 168 /** |
| 169 * Use the dependency information in [summaryDataStore] to populate the |
| 170 * dependencies in the package bundle being assembled. |
| 171 */ |
| 172 void recordDependencies(SummaryDataStore summaryDataStore) { |
| 173 _dependencies.addAll(summaryDataStore.dependencies); |
| 174 } |
| 175 |
| 176 /** |
| 166 * Add a fallback compilation unit to the package bundle, corresponding to | 177 * Add a fallback compilation unit to the package bundle, corresponding to |
| 167 * the compilation unit located at [source]. | 178 * the compilation unit located at [source]. |
| 168 */ | 179 */ |
| 169 void addFallbackUnit(Source source) { | 180 void addFallbackUnit(Source source) { |
| 170 String uri = source.uri.toString(); | 181 String uri = source.uri.toString(); |
| 171 _unlinkedUnitUris.add(uri); | 182 _unlinkedUnitUris.add(uri); |
| 172 _unlinkedUnits.add(new UnlinkedUnitBuilder( | 183 _unlinkedUnits.add(new UnlinkedUnitBuilder( |
| 173 fallbackModePath: path.relative(source.fullName))); | 184 fallbackModePath: path.relative(source.fullName))); |
| 174 } | 185 } |
| 175 | 186 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 194 * Assemble a new [PackageBundleBuilder] using the gathered information. | 205 * Assemble a new [PackageBundleBuilder] using the gathered information. |
| 195 */ | 206 */ |
| 196 PackageBundleBuilder assemble() { | 207 PackageBundleBuilder assemble() { |
| 197 PackageBundleBuilder packageBundle = new PackageBundleBuilder( | 208 PackageBundleBuilder packageBundle = new PackageBundleBuilder( |
| 198 linkedLibraryUris: _linkedLibraryUris, | 209 linkedLibraryUris: _linkedLibraryUris, |
| 199 linkedLibraries: _linkedLibraries, | 210 linkedLibraries: _linkedLibraries, |
| 200 unlinkedUnitUris: _unlinkedUnitUris, | 211 unlinkedUnitUris: _unlinkedUnitUris, |
| 201 unlinkedUnits: _unlinkedUnits, | 212 unlinkedUnits: _unlinkedUnits, |
| 202 unlinkedUnitHashes: _unlinkedUnitHashes, | 213 unlinkedUnitHashes: _unlinkedUnitHashes, |
| 203 majorVersion: currentMajorVersion, | 214 majorVersion: currentMajorVersion, |
| 204 minorVersion: currentMinorVersion); | 215 minorVersion: currentMinorVersion, |
| 216 dependencies: _dependencies); |
| 205 ApiSignature apiSignature = new ApiSignature(); | 217 ApiSignature apiSignature = new ApiSignature(); |
| 206 packageBundle.collectApiSignature(apiSignature); | 218 packageBundle.collectApiSignature(apiSignature); |
| 207 packageBundle.apiSignature = apiSignature.toHex(); | 219 packageBundle.apiSignature = apiSignature.toHex(); |
| 208 return packageBundle; | 220 return packageBundle; |
| 209 } | 221 } |
| 210 | 222 |
| 211 /** | 223 /** |
| 212 * Serialize the library with the given [element]. | 224 * Serialize the library with the given [element]. |
| 213 */ | 225 */ |
| 214 void serializeLibraryElement(LibraryElement element) { | 226 void serializeLibraryElement(LibraryElement element) { |
| (...skipping 1468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1683 exportNames.add(new LinkedExportNameBuilder( | 1695 exportNames.add(new LinkedExportNameBuilder( |
| 1684 name: name, | 1696 name: name, |
| 1685 dependency: serializeDependency(dependentLibrary), | 1697 dependency: serializeDependency(dependentLibrary), |
| 1686 unit: unit, | 1698 unit: unit, |
| 1687 kind: kind)); | 1699 kind: kind)); |
| 1688 } | 1700 } |
| 1689 pb.exportNames = exportNames; | 1701 pb.exportNames = exportNames; |
| 1690 return pb; | 1702 return pb; |
| 1691 } | 1703 } |
| 1692 } | 1704 } |
| OLD | NEW |