Discover all SDK libraries.
R=brianwilkerson@google.com
Change-Id: Icfd881400179fc2c224945d5f013e2137b3d5fdf
Reviewed-on: https://dart-review.googlesource.com/58041
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/analysis/driver.dart b/pkg/analyzer/lib/src/dart/analysis/driver.dart
index 62b19d3..9dd6142 100644
--- a/pkg/analyzer/lib/src/dart/analysis/driver.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/driver.dart
@@ -2284,11 +2284,18 @@
* task should continue to be run.
*/
void perform() {
- // Prepare the iterator of package/lib folders.
if (folderIterator == null) {
- // Always discover added files.
files.addAll(driver.addedFiles);
+ // Discover SDK libraries.
+ var dartSdk = driver._sourceFactory.dartSdk;
+ if (dartSdk != null) {
+ for (var sdkLibrary in dartSdk.sdkLibraries) {
+ files.add(sdkLibrary.path);
+ }
+ }
+
+ // Discover files in package/lib folders.
var packageMap = driver._sourceFactory.packageMap;
if (packageMap != null) {
folderIterator = packageMap.values.expand((f) => f).iterator;
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index da10edf..c442c84 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -1108,7 +1108,7 @@
expect(session2, isNot(session1));
}
- test_discoverAvailableFiles() async {
+ test_discoverAvailableFiles_packages() async {
var t = _p('/test/lib/test.dart');
var a1 = _p('/aaa/lib/a1.dart');
var a2 = _p('/aaa/lib/src/a2.dart');
@@ -1140,6 +1140,21 @@
await driver.discoverAvailableFiles();
}
+ test_discoverAvailableFiles_sdk() async {
+ await driver.discoverAvailableFiles();
+
+ void assertHasDartUri(String uri) {
+ var file = sdk.mapDartUri(uri).fullName;
+ expect(driver.knownFiles, contains(file));
+ }
+
+ assertHasDartUri('dart:async');
+ assertHasDartUri('dart:collection');
+ assertHasDartUri('dart:convert');
+ assertHasDartUri('dart:core');
+ assertHasDartUri('dart:math');
+ }
+
test_errors_uriDoesNotExist_export() async {
addTestFile(r'''
export 'foo.dart';