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

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

Issue 2648213007: Revert "Use single InputPackagesResultProvider, without SdkSummaryResultProvider." (Closed)
Patch Set: Created 3 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
« no previous file with comments | « pkg/analyzer/lib/src/generated/sdk_io.dart ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/lib/src/summary/package_bundle_reader.dart
diff --git a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
index ff5ab7f3e048b767d8180c17e2d942206d3ec41f..bdccb1eadb91be2500e3f8feb5ce76edab6bd97b 100644
--- a/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
+++ b/pkg/analyzer/lib/src/summary/package_bundle_reader.dart
@@ -6,7 +6,7 @@ import 'package:analyzer/src/context/cache.dart';
import 'package:analyzer/src/context/context.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/generated/engine.dart';
-import 'package:analyzer/src/generated/resolver.dart' show TypeProvider;
+import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/source_io.dart';
import 'package:analyzer/src/generated/utilities_dart.dart';
@@ -27,8 +27,8 @@ class InputPackagesResultProvider extends ResynthesizerResultProvider {
InputPackagesResultProvider(
InternalAnalysisContext context, SummaryDataStore dataStore)
: super(context, dataStore) {
- createResynthesizer();
- context.typeProvider = resynthesizer.typeProvider;
+ AnalysisContext sdkContext = context.sourceFactory.dartSdk.context;
+ createResynthesizer(sdkContext, sdkContext.typeProvider);
}
@override
@@ -121,6 +121,7 @@ abstract class ResynthesizerResultProvider extends ResultProvider {
final SummaryDataStore _dataStore;
_FileBasedSummaryResynthesizer _resynthesizer;
+ ResynthesizerResultProvider _sdkProvider;
ResynthesizerResultProvider(this.context, this._dataStore);
@@ -135,13 +136,10 @@ abstract class ResynthesizerResultProvider extends ResultProvider {
@override
bool compute(CacheEntry entry, ResultDescriptor result) {
- AnalysisTarget target = entry.target;
-
- if (result == TYPE_PROVIDER) {
- entry.setValue(result as ResultDescriptor<TypeProvider>,
- _resynthesizer.typeProvider, TargetedResult.EMPTY_LIST);
+ if (_sdkProvider != null && _sdkProvider.compute(entry, result)) {
return true;
}
+ AnalysisTarget target = entry.target;
// LINE_INFO can be provided using just the UnlinkedUnit.
if (target is Source && result == LINE_INFO) {
@@ -266,9 +264,19 @@ abstract class ResynthesizerResultProvider extends ResultProvider {
*
* Subclasses must call this method in their constructors.
*/
- void createResynthesizer() {
- _resynthesizer = new _FileBasedSummaryResynthesizer(context,
- context.sourceFactory, context.analysisOptions.strongMode, _dataStore);
+ void createResynthesizer(
+ InternalAnalysisContext sdkContext, TypeProvider typeProvider) {
+ // Set the type provider to prevent the context from computing it.
+ context.typeProvider = typeProvider;
+ // Create a chained resynthesizer.
+ _sdkProvider = sdkContext?.resultProvider;
+ _resynthesizer = new _FileBasedSummaryResynthesizer(
+ _sdkProvider?.resynthesizer,
+ context,
+ typeProvider,
+ context.sourceFactory,
+ context.analysisOptions.strongMode,
+ _dataStore);
}
/**
@@ -420,9 +428,14 @@ class SummaryDataStore {
class _FileBasedSummaryResynthesizer extends SummaryResynthesizer {
final SummaryDataStore _dataStore;
- _FileBasedSummaryResynthesizer(AnalysisContext context,
- SourceFactory sourceFactory, bool strongMode, this._dataStore)
- : super(context, sourceFactory, strongMode);
+ _FileBasedSummaryResynthesizer(
+ SummaryResynthesizer parent,
+ AnalysisContext context,
+ TypeProvider typeProvider,
+ SourceFactory sourceFactory,
+ bool strongMode,
+ this._dataStore)
+ : super(parent, context, typeProvider, sourceFactory, strongMode);
@override
LinkedLibrary getLinkedSummary(String uri) {
« no previous file with comments | « pkg/analyzer/lib/src/generated/sdk_io.dart ('k') | pkg/analyzer/lib/src/summary/resynthesize.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698