Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(669)

Unified Diff: pkg/analyzer/lib/src/summary/summary_sdk.dart

Issue 1585843009: Chaining not just element requests but also summaries access. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Check parent in the abstract implementation. Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: pkg/analyzer/lib/src/summary/summary_sdk.dart
diff --git a/pkg/analyzer/lib/src/summary/summary_sdk.dart b/pkg/analyzer/lib/src/summary/summary_sdk.dart
index c780457e1e530fdbe9c5ceafa715d7302b0f69fe..9ef7f47917f957276a1a887ab88332c6c1e7d2d7 100644
--- a/pkg/analyzer/lib/src/summary/summary_sdk.dart
+++ b/pkg/analyzer/lib/src/summary/summary_sdk.dart
@@ -10,8 +10,9 @@ import 'package:analyzer/src/context/cache.dart' show CacheEntry;
import 'package:analyzer/src/context/context.dart';
import 'package:analyzer/src/dart/element/type.dart';
import 'package:analyzer/src/generated/constant.dart';
+import 'package:analyzer/src/generated/engine.dart';
import 'package:analyzer/src/generated/resolver.dart';
-import 'package:analyzer/src/generated/source.dart' show Source, SourceKind;
+import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/resynthesize.dart';
import 'package:analyzer/src/task/dart.dart'
@@ -33,6 +34,41 @@ import 'package:analyzer/task/model.dart'
show AnalysisTarget, ResultDescriptor, TargetedResult;
/**
+ * The implementation of [SummaryResynthesizer] for Dart SDK.
+ */
+class SdkSummaryResynthesizer extends SummaryResynthesizer {
+ final SdkBundle bundle;
+ final Map<String, UnlinkedUnit> unlinkedSummaries = <String, UnlinkedUnit>{};
+ final Map<String, LinkedLibrary> linkedSummaries = <String, LinkedLibrary>{};
+
+ SdkSummaryResynthesizer(AnalysisContext context, TypeProvider typeProvider,
+ SourceFactory sourceFactory, this.bundle)
+ : super(null, context, typeProvider, sourceFactory) {
+ for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
+ unlinkedSummaries[bundle.unlinkedUnitUris[i]] = bundle.unlinkedUnits[i];
+ }
+ for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
+ linkedSummaries[bundle.linkedLibraryUris[i]] = bundle.linkedLibraries[i];
+ }
+ }
+
+ @override
+ LinkedLibrary getLinkedSummary(String uri) {
+ return linkedSummaries[uri];
+ }
+
+ @override
+ UnlinkedUnit getUnlinkedSummary(String uri) {
+ return unlinkedSummaries[uri];
+ }
+
+ @override
+ bool hasLibrarySummary(String uri) {
+ return uri.startsWith('dart:');
+ }
+}
+
+/**
* An [SdkAnalysisContext] for Dart SDK with a summary [SdkBundle].
*/
class SummarySdkAnalysisContext extends SdkAnalysisContext {
@@ -46,14 +82,8 @@ class SummarySdkAnalysisContext extends SdkAnalysisContext {
@override
bool aboutToComputeResult(CacheEntry entry, ResultDescriptor result) {
if (resynthesizer == null) {
- resynthesizer = new SummaryResynthesizer(
- null,
- this,
- typeProvider,
- (String uri) => uri.startsWith('dart:'),
- _getLinkedSummary,
- _getUnlinkedSummary,
- sourceFactory);
+ resynthesizer = new SdkSummaryResynthesizer(
+ this, typeProvider, sourceFactory, bundle);
_buildCoreLibrary();
_buildAsyncLibrary();
}
@@ -111,24 +141,6 @@ class SummarySdkAnalysisContext extends SdkAnalysisContext {
LibraryElement library = resynthesizer.getLibraryElement('dart:core');
typeProvider.initializeCore(library);
}
-
- LinkedLibrary _getLinkedSummary(String uri) {
- for (int i = 0; i < bundle.linkedLibraryUris.length; i++) {
- if (bundle.linkedLibraryUris[i] == uri) {
- return bundle.linkedLibraries[i];
- }
- }
- throw new StateError('Unable to find linked summary for $uri');
- }
-
- UnlinkedUnit _getUnlinkedSummary(String uri) {
- for (int i = 0; i < bundle.unlinkedUnitUris.length; i++) {
- if (bundle.unlinkedUnitUris[i] == uri) {
- return bundle.unlinkedUnits[i];
- }
- }
- throw new StateError('Unable to find unlinked summary for $uri');
- }
}
/**
« no previous file with comments | « pkg/analyzer/lib/src/summary/resynthesize.dart ('k') | pkg/analyzer/test/src/summary/resynthesize_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698