| Index: pkg/analyzer/lib/src/context/builder.dart
|
| diff --git a/pkg/analyzer/lib/src/context/builder.dart b/pkg/analyzer/lib/src/context/builder.dart
|
| index 6abd7bd19e0e3d69b4724e9836e4f98684d60be1..8e68b02723bc07a91b050567003683c938aab1d3 100644
|
| --- a/pkg/analyzer/lib/src/context/builder.dart
|
| +++ b/pkg/analyzer/lib/src/context/builder.dart
|
| @@ -189,7 +189,6 @@ class ContextBuilder {
|
| List<UriResolver> resolvers = <UriResolver>[];
|
| resolvers.add(new DartUriResolver(findSdk(packageMap, options)));
|
| if (packageMap != null) {
|
| - resolvers.add(new SdkExtUriResolver(packageMap));
|
| resolvers.add(new PackageMapUriResolver(resourceProvider, packageMap));
|
| }
|
| resolvers.add(new ResourceUriResolver(resourceProvider));
|
| @@ -202,23 +201,53 @@ class ContextBuilder {
|
| DartSdk findSdk(
|
| Map<String, List<Folder>> packageMap, AnalysisOptions options) {
|
| if (packageMap != null) {
|
| + // TODO(brianwilkerson) Fix it so that we don't have to create a resolver
|
| + // to figure out what the extensions are.
|
| + SdkExtUriResolver extResolver = new SdkExtUriResolver(packageMap);
|
| + List<String> extFilePaths = extResolver.extensionFilePaths;
|
| EmbedderYamlLocator locator = new EmbedderYamlLocator(packageMap);
|
| Map<Folder, YamlMap> embedderYamls = locator.embedderYamls;
|
| EmbedderSdk embedderSdk = new EmbedderSdk(embedderYamls);
|
| if (embedderSdk.sdkLibraries.length > 0) {
|
| + //
|
| + // There is an embedder file that defines the content of the SDK and
|
| + // there might be an extension file that extends it.
|
| + //
|
| List<String> paths = <String>[];
|
| for (Folder folder in embedderYamls.keys) {
|
| paths.add(folder
|
| .getChildAssumingFile(EmbedderYamlLocator.EMBEDDER_FILE_NAME)
|
| .path);
|
| }
|
| + paths.addAll(extFilePaths);
|
| SdkDescription description = new SdkDescription(paths, options);
|
| DartSdk dartSdk = sdkManager.getSdk(description, () {
|
| + if (extFilePaths.isNotEmpty) {
|
| + embedderSdk.addExtensions(extResolver.urlMappings);
|
| + }
|
| embedderSdk.analysisOptions = options;
|
| embedderSdk.useSummary = sdkManager.canUseSummaries;
|
| return embedderSdk;
|
| });
|
| return dartSdk;
|
| + } else if (extFilePaths != null) {
|
| + //
|
| + // We have an extension file, but no embedder file.
|
| + //
|
| + String sdkPath = sdkManager.defaultSdkDirectory;
|
| + List<String> paths = <String>[sdkPath];
|
| + paths.addAll(extFilePaths);
|
| + SdkDescription description = new SdkDescription(paths, options);
|
| + return sdkManager.getSdk(description, () {
|
| + DirectoryBasedDartSdk sdk =
|
| + new DirectoryBasedDartSdk(new JavaFile(sdkPath));
|
| + if (extFilePaths.isNotEmpty) {
|
| + embedderSdk.addExtensions(extResolver.urlMappings);
|
| + }
|
| + sdk.analysisOptions = options;
|
| + sdk.useSummary = sdkManager.canUseSummaries;
|
| + return sdk;
|
| + });
|
| }
|
| }
|
| String sdkPath = sdkManager.defaultSdkDirectory;
|
|
|