tryInitializeBuiltInterop function

Future tryInitializeBuiltInterop(
  1. BuildStep step
)

Implementation

Future tryInitializeBuiltInterop(BuildStep step) async {
  var builtValueAsset = AssetId.resolve(Uri.parse("package:built_value/built_value.dart"));
  var builtCollectionAsset = AssetId.resolve(Uri.parse("package:built_collection/built_collection.dart"));
  if (!(await step.canRead(builtValueAsset) && await step.canRead(builtCollectionAsset))) {
    hasBuiltInterop = false;
    return;
  }

  var builtValueLibrary = await step.resolver
      .libraryFor(builtValueAsset);
  var builtCollectionLibrary = await step.resolver
      .libraryFor(builtCollectionAsset);
  _builtValueLibrary = LibraryReader(builtValueLibrary);
  _builtCollectionLibrary = LibraryReader(builtCollectionLibrary);

  builtInterface = _builtValueLibrary.findType("Built") as InterfaceElement;
  builtBuilderInterface = _builtValueLibrary.findType("Builder") as InterfaceElement;
  listBuilderInterface = _builtCollectionLibrary.findType("ListBuilder") as InterfaceElement;
  mapBuilderInterface = _builtCollectionLibrary.findType("MapBuilder") as InterfaceElement;
  setBuilderInterface = _builtCollectionLibrary.findType("SetBuilder") as InterfaceElement;

  builtChecker = TypeChecker.fromStatic(builtInterface.thisType);
  builtBuilderChecker = TypeChecker.fromStatic(builtBuilderInterface.thisType);
  listBuilderChecker = TypeChecker.fromStatic(listBuilderInterface.thisType);
  mapBuilderChecker = TypeChecker.fromStatic(mapBuilderInterface.thisType);
  setBuilderChecker = TypeChecker.fromStatic(setBuilderInterface.thisType);
  builtValueFieldChecker = TypeChecker.fromStatic(_builtValueLibrary.findType("BuiltValueField")!.thisType);
  builtValueEnumChecker = TypeChecker.fromStatic(_builtValueLibrary.findType("EnumClass")!.thisType);

  hasBuiltInterop = true;
}