generateForElement method Null safety

  1. @visibleForTesting
String generateForElement(
  1. Element element,
  2. ConstantReader annotation,
  3. LibraryReader library
)

Implementation

@visibleForTesting
String generateForElement(
    Element element, ConstantReader annotation, LibraryReader library) {
  var classes = annotation.read('classes').listValue;
  ClassElement classElement = _validateElement(element, false);
  var subTypes = classes.isNotEmpty
      ? _findSubTypesForAllClasses(classes, library)
      : [_findSubTypesForSingleClass(library, classElement)];
  subTypes.forEach((e) => _validateSubType(e, classes.isNotEmpty));

  var optionsReader = annotation.read('options');

  ClassSwitchOptions generatorOptions =
      extractOptionsFromAnnotation(optionsReader);

  ClassSwitchClassGenerator classSwitchCodeBuilder =
      ClassSwitchClassGenerator.create(
          classElement, subTypes, generatorOptions);
  return classSwitchCodeBuilder.generateAll();
}