librariesWithExtensions method
Returns libraries with extensions that declare non-static public
extension members with the memberName.
Implementation
Stream<LibraryElement> librariesWithExtensions(Name memberName) async* {
var analysisContext = unitResult.session.analysisContext;
if (analysisContext is! DriverBasedAnalysisContext) {
return;
}
var analysisDriver = analysisContext.driver;
var fsState = analysisDriver.fsState;
var targetFile = fsState.getFileForPath(unitResult.path);
var filter = FileStateFilter(targetFile);
await analysisDriver.discoverAvailableFilesFor(targetFile);
for (var file in fsState.knownFiles.toList()) {
if (!filter.shouldInclude(file)) {
continue;
}
var elementResult = await analysisDriver.getLibraryByUri(file.uriStr);
if (elementResult is! LibraryElementResult) {
continue;
}
if (elementResult.element.exportedExtensions
.havingMemberWithBaseName(memberName)
.isNotEmpty) {
yield elementResult.element;
}
}
}