| Index: lib/src/dart_sdk.dart
|
| diff --git a/lib/src/dart_sdk.dart b/lib/src/dart_sdk.dart
|
| index eed80844cc788643628a1a7b4d40ad8c4518fb44..468a68bc9b5fd09b19d4a9f0e4f9132366b527ea 100644
|
| --- a/lib/src/dart_sdk.dart
|
| +++ b/lib/src/dart_sdk.dart
|
| @@ -7,10 +7,14 @@
|
| /// definitions to provide mock sdks.
|
|
|
| import 'package:analyzer/src/generated/engine.dart'
|
| - show AnalysisContext, TimestampedData;
|
| -import 'package:analyzer/src/generated/sdk.dart';
|
| -import 'package:analyzer/src/generated/source.dart';
|
| -import 'package:analyzer/src/context/context.dart';
|
| + show AnalysisContext, AnalysisEngine, TimestampedData;
|
| +import 'package:analyzer/src/generated/sdk.dart'
|
| + show DartSdk, SdkLibrary, SdkLibraryImpl;
|
| +import 'package:analyzer/src/generated/source.dart'
|
| + show DartUriResolver, Source, SourceFactory, UriKind;
|
| +import 'package:analyzer/src/context/context.dart' show AnalysisContextImpl;
|
| +import 'package:analyzer/src/context/cache.dart'
|
| + show AnalysisCache, CachePartition;
|
|
|
| /// Dart SDK which contains a mock implementation of the SDK libraries. May be
|
| /// used to speed up execution when most of the core libraries is not needed.
|
| @@ -20,11 +24,12 @@ class MockDartSdk implements DartSdk {
|
| final Map<String, SdkLibrary> _libs = {};
|
| final String sdkVersion = '0';
|
| List<String> get uris => _sources.keys.map((uri) => '$uri').toList();
|
| - final AnalysisContext context = new SdkAnalysisContext(null);
|
| + AnalysisContext context;
|
| DartUriResolver _resolver;
|
| DartUriResolver get resolver => _resolver;
|
|
|
| MockDartSdk(Map<String, String> sources, {this.reportMissing}) {
|
| + context = new _SdkAnalysisContext(this);
|
| sources.forEach((uriString, contents) {
|
| var uri = Uri.parse(uriString);
|
| _sources[uri] = new _MockSdkSource(uri, contents);
|
| @@ -180,3 +185,19 @@ final Map<String, String> mockSdkSources = {
|
| num max(num x, num y) {}
|
| ''',
|
| };
|
| +
|
| +/// An [AnalysisContextImpl] that only contains sources for a Dart SDK.
|
| +class _SdkAnalysisContext extends AnalysisContextImpl {
|
| + final DartSdk sdk;
|
| +
|
| + _SdkAnalysisContext(this.sdk);
|
| +
|
| + @override
|
| + AnalysisCache createCacheFromSourceFactory(SourceFactory factory) {
|
| + if (factory == null) {
|
| + return super.createCacheFromSourceFactory(factory);
|
| + }
|
| + return new AnalysisCache(
|
| + <CachePartition>[AnalysisEngine.instance.partitionManager.forSdk(sdk)]);
|
| + }
|
| +}
|
|
|