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

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

Issue 2652823002: 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
Index: pkg/analyzer/lib/src/summary/resynthesize.dart
diff --git a/pkg/analyzer/lib/src/summary/resynthesize.dart b/pkg/analyzer/lib/src/summary/resynthesize.dart
index c4f6caa80ac4ce5a58d4058c88f9e58119a9366c..3dbca4ec86ddd307f9c580c5ff0ea293d3b10420 100644
--- a/pkg/analyzer/lib/src/summary/resynthesize.dart
+++ b/pkg/analyzer/lib/src/summary/resynthesize.dart
@@ -22,6 +22,7 @@ import 'package:analyzer/src/generated/testing/ast_test_factory.dart';
import 'package:analyzer/src/generated/testing/token_factory.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
+import 'package:analyzer/src/summary/summary_sdk.dart';
/**
* Implementation of [ElementResynthesizer] used when resynthesizing an element
@@ -46,10 +47,9 @@ abstract class SummaryResynthesizer extends ElementResynthesizer {
final Map<String, Source> _sources = <String, Source>{};
/**
- * The [TypeProvider] used to obtain core types (such as Object, int, List,
- * and dynamic) during resynthesis.
+ * The [TypeProvider] used to obtain SDK types during resynthesis.
*/
- final TypeProvider typeProvider;
+ TypeProvider _typeProvider;
/**
* Indicates whether the summary should be resynthesized assuming strong mode
@@ -80,9 +80,11 @@ abstract class SummaryResynthesizer extends ElementResynthesizer {
final Map<String, LibraryElement> _resynthesizedLibraries =
<String, LibraryElement>{};
- SummaryResynthesizer(this.parent, AnalysisContext context, this.typeProvider,
- this.sourceFactory, this.strongMode)
- : super(context);
+ SummaryResynthesizer(
+ this.parent, AnalysisContext context, this.sourceFactory, this.strongMode)
+ : super(context) {
+ _buildTypeProvider();
+ }
/**
* Number of libraries that have been resynthesized so far.
@@ -90,14 +92,9 @@ abstract class SummaryResynthesizer extends ElementResynthesizer {
int get resynthesisCount => _resynthesizedLibraries.length;
/**
- * Perform delayed finalization of the `dart:core` and `dart:async` libraries.
+ * The [TypeProvider] used to obtain SDK types during resynthesis.
*/
- void finalizeCoreAsyncLibraries() {
- (_resynthesizedLibraries['dart:core'] as LibraryElementImpl)
- .createLoadLibraryFunction(typeProvider);
- (_resynthesizedLibraries['dart:async'] as LibraryElementImpl)
- .createLoadLibraryFunction(typeProvider);
- }
+ TypeProvider get typeProvider => _typeProvider;
@override
Element getElement(ElementLocation location) {
@@ -267,6 +264,17 @@ abstract class SummaryResynthesizer extends ElementResynthesizer {
*/
bool hasLibrarySummary(String uri);
+ void _buildTypeProvider() {
+ var coreLibrary = getLibraryElement('dart:core') as LibraryElementImpl;
+ var asyncLibrary = getLibraryElement('dart:async') as LibraryElementImpl;
+ SummaryTypeProvider summaryTypeProvider = new SummaryTypeProvider();
+ summaryTypeProvider.initializeCore(coreLibrary);
+ summaryTypeProvider.initializeAsync(asyncLibrary);
+ coreLibrary.createLoadLibraryFunction(summaryTypeProvider);
+ asyncLibrary.createLoadLibraryFunction(summaryTypeProvider);
+ _typeProvider = summaryTypeProvider;
+ }
+
/**
* Return the [LinkedLibrary] for the given [uri] or return `null` if it
* could not be found.

Powered by Google App Engine
This is Rietveld 408576698