in source_gen/lib/src/type_checker.dart [299:346]
static SourceSpan? _findSpan(
Element annotatedElement,
int annotationIndex,
) {
try {
final parsedLibrary = annotatedElement.session!
.getParsedLibraryByElement(annotatedElement.library!)
as ParsedLibraryResult;
final declaration = parsedLibrary.getElementDeclaration(annotatedElement);
if (declaration == null) {
return null;
}
final node = declaration.node;
final List<Annotation> metadata;
if (node is AnnotatedNode) {
metadata = node.metadata;
} else if (node is FormalParameter) {
metadata = node.metadata;
} else {
throw StateError(
'Unhandled Annotated AST node type: ${node.runtimeType}',
);
}
final annotation = metadata[annotationIndex];
final start = annotation.offset;
final end = start + annotation.length;
final parsedUnit = declaration.parsedUnit!;
return SourceSpan(
SourceLocation(start, sourceUrl: parsedUnit.uri),
SourceLocation(end, sourceUrl: parsedUnit.uri),
parsedUnit.content.substring(start, end),
);
} catch (e, stack) {
// Trying to get more information on https://github.com/dart-lang/sdk/issues/45127
log.warning(
'''
An unexpected error was thrown trying to get location information on `$annotatedElement` (${annotatedElement.runtimeType}).
Please file an issue at https://github.com/dart-lang/source_gen/issues/new
Include the contents of this warning and the stack trace along with
the version of `package:source_gen`, `package:analyzer` from `pubspec.lock`.
''',
e,
stack,
);
return null;
}
}