Add AnalysisDriverForPackageBuild.sdkLibraryUris

https://github.com/dart-lang/build/pull/3389

Change-Id: Ib54ba5d5411fc6213ecf1733dd056f9347f27462
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/265401
Reviewed-by: Jake Macdonald <jakemac@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2022-10-24 21:06:27 +00:00 committed by Commit Queue
parent 8c1b05cd8e
commit b8ffc08d5b
6 changed files with 83 additions and 2 deletions

View file

@ -10,6 +10,7 @@
* Deprecated `CompilationUnitElement.mixins2`, use `mixins` instead.
* Deprecated `LibraryElement.parts2`, use `parts` instead.
* Deprecated `ImportElement.imports2`, use `imports` instead.
* Add `AnalysisDriverForPackageBuild.sdkLibraryUris`.
## 5.1.0
* Deprecated `AstNode.name2`, use `name` instead.

View file

@ -64,19 +64,28 @@ AnalysisDriverForPackageBuild createAnalysisDriver({
scheduler.start();
return AnalysisDriverForPackageBuild._(driver);
return AnalysisDriverForPackageBuild._(sdk.libraryUris, driver);
}
/// [AnalysisSession] plus a tiny bit more.
class AnalysisDriverForPackageBuild {
final List<Uri> _sdkLibraryUris;
final AnalysisDriver _driver;
AnalysisDriverForPackageBuild._(this._driver);
AnalysisDriverForPackageBuild._(
this._sdkLibraryUris,
this._driver,
);
AnalysisSession get currentSession {
return _driver.currentSession;
}
/// Returns URIs of libraries in the given SDK.
List<Uri> get sdkLibraryUris {
return _sdkLibraryUris;
}
/// Return a [Future] that completes after pending file changes are applied,
/// so that [currentSession] can be used to compute results.
Future<void> applyPendingFileChanges() {

View file

@ -41,6 +41,11 @@ class SummaryBasedDartSdk implements DartSdk {
);
}
/// Returns URIs of all libraries.
List<Uri> get libraryUris {
return _bundle.libraries.map((e) => Uri.parse(e.uriStr)).toList();
}
@override
List<SdkLibrary> get sdkLibraries {
throw UnimplementedError();

View file

@ -0,0 +1,51 @@
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:analyzer/dart/sdk/build_sdk_summary.dart';
import 'package:analyzer/src/clients/build_resolvers/build_resolvers.dart';
import 'package:analyzer/src/test_utilities/mock_sdk.dart';
import 'package:analyzer/src/test_utilities/resource_provider_mixin.dart';
import 'package:test/test.dart';
import 'package:test_reflective_loader/test_reflective_loader.dart';
main() {
defineReflectiveSuite(() {
defineReflectiveTests(AnalysisDriverForPackageBuildTest);
});
}
@reflectiveTest
class AnalysisDriverForPackageBuildTest with ResourceProviderMixin {
test_sdkLibraryUris() async {
var sdkRoot = getFolder('/sdk');
createMockSdk(
resourceProvider: resourceProvider,
root: sdkRoot,
);
var sdkSummaryBytes = await buildSdkSummary2(
resourceProvider: resourceProvider,
sdkPath: sdkRoot.path,
);
var analysisDriver = createAnalysisDriver(
resourceProvider: resourceProvider,
sdkSummaryBytes: sdkSummaryBytes,
analysisOptions: AnalysisOptionsImpl(),
uriResolvers: [],
packages: Packages({}),
);
expect(
analysisDriver.sdkLibraryUris,
containsAll([
Uri.parse('dart:core'),
Uri.parse('dart:async'),
Uri.parse('dart:io'),
Uri.parse('dart:_internal'),
]),
);
}
}

View file

@ -0,0 +1,13 @@
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'build_resolvers_test.dart' as build_resolvers;
main() {
defineReflectiveSuite(() {
build_resolvers.main();
}, name: 'build_resolvers');
}

View file

@ -4,10 +4,12 @@
import 'package:test_reflective_loader/test_reflective_loader.dart';
import 'build_resolvers/test_all.dart' as build_resolvers;
import 'dart_style/test_all.dart' as dart_style;
main() {
defineReflectiveSuite(() {
build_resolvers.main();
dart_style.main();
}, name: 'clients');
}