Add _sdkext support back to analysis server
BUG= R=brianwilkerson@google.com, paulberry@google.com Review URL: https://codereview.chromium.org//1295463003 .
This commit is contained in:
@@ -19,6 +19,7 @@ import 'package:analyzer/source/package_map_provider.dart';
|
||||
import 'package:analyzer/source/package_map_resolver.dart';
|
||||
import 'package:analyzer/source/path_filter.dart';
|
||||
import 'package:analyzer/source/pub_package_map_provider.dart';
|
||||
import 'package:analyzer/source/sdk_ext.dart';
|
||||
import 'package:analyzer/src/generated/engine.dart';
|
||||
import 'package:analyzer/src/generated/java_io.dart';
|
||||
import 'package:analyzer/src/generated/source.dart';
|
||||
@@ -1352,7 +1353,8 @@ class PackageMapDisposition extends FolderDisposition {
|
||||
@override
|
||||
Iterable<UriResolver> createPackageUriResolvers(
|
||||
ResourceProvider resourceProvider) =>
|
||||
<UriResolver>[new PackageMapUriResolver(resourceProvider, packageMap)];
|
||||
<UriResolver>[new SdkExtUriResolver(packageMap),
|
||||
new PackageMapUriResolver(resourceProvider, packageMap)];
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1370,6 +1372,19 @@ class PackagesFileDisposition extends FolderDisposition {
|
||||
|
||||
@override
|
||||
Iterable<UriResolver> createPackageUriResolvers(
|
||||
ResourceProvider resourceProvider) =>
|
||||
const <UriResolver>[];
|
||||
ResourceProvider resourceProvider) {
|
||||
if (packages != null) {
|
||||
// Construct package map for the SdkExtUriResolver.
|
||||
Map<String, List<Folder>> packageMap = <String, List<Folder>>{};
|
||||
packages.asMap().forEach((String name, Uri uri) {
|
||||
if (uri.scheme == 'file' || uri.scheme == '' /* unspecified */) {
|
||||
var path = resourceProvider.pathContext.fromUri(uri);
|
||||
packageMap[name] = <Folder>[resourceProvider.getFolder(path)];
|
||||
}
|
||||
});
|
||||
return <UriResolver>[new SdkExtUriResolver(packageMap)];
|
||||
} else {
|
||||
return const <UriResolver>[];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -344,6 +344,45 @@ analyzer:
|
||||
expect(contexts[1].name, equals('/my/proj/lib'));
|
||||
}
|
||||
|
||||
// TODO(paulberry): This test only tests PackagesFileDisposition.
|
||||
// Once http://dartbug.com/23909 is fixed, add a test for sdk extensions
|
||||
// and PackageMapDisposition.
|
||||
test_sdk_ext_packagespec() async {
|
||||
// Create files.
|
||||
String libPath = newFolder([projPath, LIB_NAME]);
|
||||
newFile([libPath, 'main.dart']);
|
||||
newFile([libPath, 'nope.dart']);
|
||||
String sdkExtPath = newFolder([projPath, 'sdk_ext']);
|
||||
newFile([sdkExtPath, 'entry.dart']);
|
||||
String sdkExtSrcPath = newFolder([projPath, 'sdk_ext', 'src']);
|
||||
newFile([sdkExtSrcPath, 'part.dart']);
|
||||
// Setup sdk extension mapping.
|
||||
newFile(
|
||||
[libPath, '_sdkext'],
|
||||
r'''
|
||||
{
|
||||
"dart:foobar": "../sdk_ext/entry.dart"
|
||||
}
|
||||
''');
|
||||
// Setup .packages file
|
||||
newFile(
|
||||
[projPath, '.packages'],
|
||||
r'''
|
||||
test_pack:lib/
|
||||
''');
|
||||
// Setup context.
|
||||
manager.setRoots(<String>[projPath], <String>[], <String, String>{});
|
||||
// Confirm that one context was created.
|
||||
var contexts =
|
||||
manager.contextsInAnalysisRoot(resourceProvider.newFolder(projPath));
|
||||
expect(contexts, isNotNull);
|
||||
expect(contexts.length, equals(1));
|
||||
var context = contexts[0];
|
||||
var source = context.sourceFactory.forUri('dart:foobar');
|
||||
expect(source.fullName, equals('/my/proj/sdk_ext/entry.dart'));
|
||||
}
|
||||
|
||||
|
||||
test_refresh_folder_with_packagespec() {
|
||||
// create a context with a .packages file
|
||||
String packagespecFile = posix.join(projPath, '.packages');
|
||||
|
||||
Reference in New Issue
Block a user