getSerializableLibraries method
Implementation
List<IRSerializableLibrary> getSerializableLibraries(SubjectGenContext<Element> context) {
var typeChecker = TypeChecker.fromRuntime(SerializableLibrary);
return context.matches
.expand((element) => element.metadata.whereTypeChecker(typeChecker).map((e) => [element,e]))
.map((e) {
var target = e[0] as Element;
var annotation = (e[1] as ElementAnnotation).computeConstantValue()!;
var reader = ConstantReader(annotation);
if (target is! LibraryImportElement) {
log.severe("SerializableLibrary annotation can only be used on library imports");
return null;
}
var importUri = target.importedLibrary!.source.uri;
return IRSerializableLibrary(
importUri.toString(),
include: reader.read("include").isNull ? null : reader.read("include").listValue.map((e) => RegExp(e.toStringValue()!)).toList(),
exclude: reader.read("exclude").isNull ? null : reader.read("exclude").listValue.map((e) => RegExp(e.toStringValue()!)).toList(),
);
})
.whereNotNull()
.toList();
}