mirror of
https://github.com/dart-lang/sdk
synced 2024-09-15 23:29:47 +00:00
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:
parent
ee65e3efa0
commit
a9618ac795
|
@ -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);
|
||||
|
|
|
@ -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>()
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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()`.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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');
|
||||
},
|
||||
);
|
||||
|
|
|
@ -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;
|
||||
});
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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"');
|
||||
}
|
||||
|
|
|
@ -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"');
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue