SourceSpan spanForElement()

in source_gen/lib/src/span_for_element.dart [21:53]


SourceSpan spanForElement(Element element, [SourceFile? file]) {
  final url = assetToPackageUrl(element.source!.uri);
  if (file == null) {
    final contents = element.source?.contents;
    if (contents == null) {
      return SourceSpan(
        SourceLocation(
          element.nameOffset,
          sourceUrl: url,
        ),
        SourceLocation(
          element.nameOffset + element.nameLength,
          sourceUrl: url,
        ),
        element.name!,
      );
    }
    file = SourceFile.fromString(contents.data, url: url);
  }
  if (element.nameOffset < 0) {
    if (element is PropertyInducingElement) {
      if (element.getter != null) {
        return spanForElement(element.getter!);
      }

      if (element.setter != null) {
        return spanForElement(element.setter!);
      }
    }
  }

  return file.span(element.nameOffset, element.nameOffset + element.nameLength);
}