Make ResolvedLibraryResult.element/units non-nullable.

Change-Id: Ie20c2363b43555573843c038c15c0d55bcf39579
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/206563
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2021-07-12 20:48:37 +00:00 committed by commit-bot@chromium.org
parent ee65e3efa0
commit a9618ac795
17 changed files with 43 additions and 41 deletions

View file

@ -269,7 +269,7 @@ class BulkFixProcessor {
/// library associated with the analysis [result].
Future<void> _fixErrorsInLibrary(ResolvedLibraryResult result) async {
var analysisOptions = result.session.analysisContext.analysisOptions;
for (var unitResult in result.units!) {
for (var unitResult in result.units) {
var overrideSet = _readOverrideSet(unitResult);
for (var error in unitResult.errors) {
var processor = ErrorProcessor.getProcessor(analysisOptions, error);

View file

@ -89,8 +89,8 @@ class MoveFileRefactoringImpl extends RefactoringImpl
if (libraryResult is! ResolvedLibraryResult) {
return changeBuilder.sourceChange;
}
var definingUnitResult = libraryResult.units!.first;
for (var result in libraryResult.units!) {
var definingUnitResult = libraryResult.units.first;
for (var result in libraryResult.units) {
if (result.isPart) {
var partOfs = result.unit!.directives
.whereType<PartOfDirective>()

View file

@ -36,7 +36,7 @@ class TransformSetManagerTest extends AbstractContextTest {
var testFile = convertPath('/home/test/lib/test.dart');
addSource(testFile, '');
var result = await session.getResolvedLibraryValid(testFile);
var sets = manager.forLibrary(result.element!);
var sets = manager.forLibrary(result.element);
expect(sets, hasLength(2));
}
@ -47,7 +47,7 @@ class TransformSetManagerTest extends AbstractContextTest {
var testFile = convertPath('/home/test/lib/test.dart');
addSource(testFile, '');
var result = await session.getResolvedLibraryValid(testFile);
var sets = manager.forLibrary(result.element!);
var sets = manager.forLibrary(result.element);
expect(sets, hasLength(0));
}

View file

@ -1,6 +1,8 @@
## 2.1.0
* Changed `AnalysisResult.path` to be non-nullable.
* Changed `ParsedLibraryResult.units` to be non-nullable.
* Changed `ResolvedLibraryResult.element` to be non-nullable.
* Changed `ResolvedLibraryResult.units` to be non-nullable.
## 2.0.0
* Removed deprecated `Scope.lookup2()`.

View file

@ -210,13 +210,13 @@ abstract class ParseStringResult {
abstract class ResolvedLibraryResult
implements SomeResolvedLibraryResult, AnalysisResult {
/// The element representing this library.
LibraryElement? get element;
LibraryElement get element;
/// The type provider used when resolving the library.
TypeProvider get typeProvider;
/// The resolved units of the library.
List<ResolvedUnitResult>? get units;
List<ResolvedUnitResult> get units;
/// Return the declaration of the [element], or `null` if the [element]
/// is synthetic. Throw [ArgumentError] if the [element] is not defined in

View file

@ -159,10 +159,10 @@ class ParseStringResultImpl implements ParseStringResult {
class ResolvedLibraryResultImpl extends AnalysisResultImpl
implements ResolvedLibraryResult {
@override
final LibraryElement? element;
final LibraryElement element;
@override
final List<ResolvedUnitResult>? units;
final List<ResolvedUnitResult> units;
ResolvedLibraryResultImpl(
AnalysisSession session, String path, Uri uri, this.element, this.units)
@ -174,7 +174,7 @@ class ResolvedLibraryResultImpl extends AnalysisResultImpl
}
@override
TypeProvider get typeProvider => element!.typeProvider;
TypeProvider get typeProvider => element.typeProvider;
@override
ElementDeclarationResult? getElementDeclaration(Element element) {
@ -190,7 +190,7 @@ class ResolvedLibraryResultImpl extends AnalysisResultImpl
}
var elementPath = element.source!.fullName;
var unitResult = units!.firstWhere(
var unitResult = units.firstWhere(
(r) => r.path == elementPath,
orElse: () {
var elementStr = element.getDisplayString(withNullability: true);
@ -199,7 +199,7 @@ class ResolvedLibraryResultImpl extends AnalysisResultImpl
buffer.writeln(' is not defined in this library.');
// TODO(scheglov) https://github.com/dart-lang/sdk/issues/45430
buffer.writeln('elementPath: $elementPath');
buffer.writeln('unitPaths: ${units!.map((e) => e.path).toList()}');
buffer.writeln('unitPaths: ${units.map((e) => e.path).toList()}');
throw ArgumentError('$buffer');
},
);

View file

@ -50,7 +50,7 @@ class AnalysisSessionHelper {
}
var unitPath = element.source!.fullName;
return resolvedLibrary.units!.singleWhere((resolvedUnit) {
return resolvedLibrary.units.singleWhere((resolvedUnit) {
return resolvedUnit.path == unitPath;
});
}

View file

@ -452,14 +452,14 @@ class FileResolver {
completionPath: path,
performance: performance,
);
var result = libraryUnit.units!
.firstWhereOrNull((element) => element.path == path);
var result =
libraryUnit.units.firstWhereOrNull((element) => element.path == path);
// TODO(scheglov) Fix and remove.
if (result == null) {
throw StateError('''
libraryFile.path: ${libraryFile.path}
path: $path
units: ${libraryUnit.units!.map((e) => '(${e.uri} = ${e.path})').toList()}
units: ${libraryUnit.units.map((e) => '(${e.uri} = ${e.path})').toList()}
''');
}
return result;

View file

@ -140,7 +140,7 @@ class BaseDependencyTest extends PubPackageResolutionTest {
var session = contextFor(libraryPath).currentSession;
var resolvedLibrary = await session.getResolvedLibrary2(libraryPath);
resolvedLibrary as ResolvedLibraryResult;
return resolvedLibrary.units!.map((ru) => ru.unit!).toList();
return resolvedLibrary.units.map((ru) => ru.unit!).toList();
}
}

View file

@ -1454,10 +1454,10 @@ class B {}
var result = await driver.getResolvedLibrary2(testFile);
result as ResolvedLibraryResult;
expect(result.units, hasLength(1));
expect(result.units![0].path, testFile);
expect(result.units![0].content, content);
expect(result.units![0].unit, isNotNull);
expect(result.units![0].errors, isEmpty);
expect(result.units[0].path, testFile);
expect(result.units[0].content, content);
expect(result.units[0].unit, isNotNull);
expect(result.units[0].errors, isEmpty);
}
test_getResolvedLibrary2_invalidPath_notAbsolute() async {
@ -1479,11 +1479,11 @@ class B {}
var result = await driver.getResolvedLibraryByUri2(uri);
result as ResolvedLibraryResult;
expect(result.uri, uri);
expect(result.element!.source.fullName, testFile);
expect(result.element.source.fullName, testFile);
expect(result.units, hasLength(1));
expect(result.units![0].uri, uri);
expect(result.units![0].path, testFile);
expect(result.units![0].content, content);
expect(result.units[0].uri, uri);
expect(result.units[0].path, testFile);
expect(result.units[0].content, content);
}
test_getResolvedLibraryByUri2_notLibrary() async {

View file

@ -466,13 +466,13 @@ class B2 extends X {}
var typeProvider = resolvedLibrary.typeProvider;
expect(typeProvider.intType.element.name, 'int');
var libraryElement = resolvedLibrary.element!;
var libraryElement = resolvedLibrary.element;
var aClass = libraryElement.getType('A')!;
var bClass = libraryElement.getType('B')!;
var aUnitResult = resolvedLibrary.units![0];
var aUnitResult = resolvedLibrary.units[0];
expect(aUnitResult.path, a);
expect(aUnitResult.uri, Uri.parse('package:test/a.dart'));
expect(aUnitResult.content, aContent);
@ -481,7 +481,7 @@ class B2 extends X {}
expect(aUnitResult.unit!.declarations, hasLength(1));
expect(aUnitResult.errors, isEmpty);
var bUnitResult = resolvedLibrary.units![1];
var bUnitResult = resolvedLibrary.units[1];
expect(bUnitResult.path, b);
expect(bUnitResult.uri, Uri.parse('package:test/b.dart'));
expect(bUnitResult.content, bContent);
@ -534,7 +534,7 @@ int foo = 0;
''');
var resolvedLibrary = await session.getResolvedLibraryValid(testPath);
var unitElement = resolvedLibrary.element!.definingCompilationUnit;
var unitElement = resolvedLibrary.element.definingCompilationUnit;
var fooElement = unitElement.topLevelVariables[0];
expect(fooElement.name, 'foo');
@ -563,15 +563,15 @@ part 'c.dart';
expect(resolvedLibrary.units, hasLength(3));
expect(
resolvedLibrary.units![0].path,
resolvedLibrary.units[0].path,
convertPath('/home/test/lib/test.dart'),
);
expect(
resolvedLibrary.units![1].path,
resolvedLibrary.units[1].path,
convertPath('/home/test/lib/a.dart'),
);
expect(
resolvedLibrary.units![2].path,
resolvedLibrary.units[2].path,
convertPath('/home/test/lib/c.dart'),
);
}
@ -589,7 +589,7 @@ part 'c.dart';
expect(result.path, testPath);
expect(result.uri, Uri.parse('package:test/test.dart'));
expect(result.units, hasLength(1));
expect(result.units![0].unit!.declaredElement, isNotNull);
expect(result.units[0].unit!.declaredElement, isNotNull);
}
test_getResolvedLibraryByElement2_differentSession() async {

View file

@ -1084,7 +1084,7 @@ void func() {
var result = fileResolver.resolveLibrary(path: aPath);
expect(result.path, aPath);
expect(result.units?.length, 2);
expect(result.units.length, 2);
}
test_reuse_compatibleOptions() async {

View file

@ -1019,7 +1019,7 @@ class _FixCodeProcessor extends Object {
// Parts will either be found in a library, below, or if the library
// isn't [isIncluded], will be picked up in the final loop.
if (result is ResolvedLibraryResult) {
for (var unit in result.units!) {
for (var unit in result.units) {
if (!pathsProcessed.contains(unit.path)) {
await process(unit);
pathsProcessed.add(unit.path);

View file

@ -98,7 +98,7 @@ class InfoBuilder {
var session = driverProvider!.getAnalysisSession(filePath);
var result = await session.getResolvedLibrary2(filePath!);
if (result is ResolvedLibraryResult) {
for (var unitResult in result.units!) {
for (var unitResult in result.units) {
var sourceInfo =
sourceInfoMap[unitResult.unit!.declaredElement!.source];
// Note: there might have been no information for this unit in

View file

@ -67,7 +67,7 @@ abstract class _ProvisionalApiTestBase extends AbstractContextTest {
for (var path in input.keys) {
var resolvedLibrary = await session.getResolvedLibrary2(path);
if (resolvedLibrary is ResolvedLibraryResult) {
for (var unit in resolvedLibrary.units!) {
for (var unit in resolvedLibrary.units) {
var errors =
unit.errors.where((e) => e.severity == Severity.error).toList();
if (!allowErrors && errors.isNotEmpty) {
@ -82,7 +82,7 @@ abstract class _ProvisionalApiTestBase extends AbstractContextTest {
for (var path in input.keys) {
var resolvedLibrary = await session.getResolvedLibrary2(path);
if (resolvedLibrary is ResolvedLibraryResult) {
for (var unit in resolvedLibrary.units!) {
for (var unit in resolvedLibrary.units) {
migration.processInput(unit);
}
}
@ -91,7 +91,7 @@ abstract class _ProvisionalApiTestBase extends AbstractContextTest {
for (var path in input.keys) {
var resolvedLibrary = await session.getResolvedLibrary2(path);
if (resolvedLibrary is ResolvedLibraryResult) {
for (var unit in resolvedLibrary.units!) {
for (var unit in resolvedLibrary.units) {
migration.finalizeInput(unit);
}
}

View file

@ -348,7 +348,7 @@ Future<void> visitLibraryAtUri(AnalysisSession session, String uri) async {
final libPath = session.uriConverter.uriToPath(Uri.parse(uri));
var result = await session.getResolvedLibrary2(libPath!);
if (result is ResolvedLibraryResult) {
visitLibrary(result.element!);
visitLibrary(result.element);
} else {
throw StateError('Unable to resolve "$uri"');
}

View file

@ -1342,7 +1342,7 @@ Future<void> visitLibraryAtUri(
var libPath = session.uriConverter.uriToPath(Uri.parse(uri));
var result = await session.getResolvedLibrary2(libPath!);
if (result is ResolvedLibraryResult) {
visitLibrary(result.element!, allTypes);
visitLibrary(result.element, allTypes);
} else {
throw StateError('Unable to resolve "$uri"');
}