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;
await analysisDriver.discoverAvailableFiles();
var fsState = analysisDriver.fsState;
var filter = FileStateFilter(fsState.getFileForPath(unitResult.path));
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;
}
}
}