-
Notifications
You must be signed in to change notification settings - Fork 110
Closed
Labels
type-questionA question about expected behavior or functionalityA question about expected behavior or functionality
Description
Hi ! I've been using the workaround described here to type my annotation but now I'm having trouble trying to get the ast of my annotation. For example say I have the user define the root of a firebase collection
part 'root.fire.dart';
// UndefinedType is not created until I generate output in my `root.fire.dart` file
const _UsersCollection = Collection<UndefinedType>(name: 'users');
@root
class Database with _$Database {
// TODO: This should have the option to pass in an app
@_UsersCollection
Database._();
static final instance = Database._();
}I can get annotations over the named constructor _ but how do I then get the non-synthetic element declaration const _UsersCollection.
I tried this but because I always get back a synthetic element from declaration calling getElementDeclaration by design returns null
@override
FutureOr<String> generateForAnnotatedElement(
Element element,
ConstantReader annotation,
BuildStep buildStep,
) async {
if (element is! ClassElement) {
// ...
}
final stringBuffer = StringBuffer();
final constructor = element.constructors.singleWhere(
(constructor) => constructor.displayName == '_',
orElse: () {
// ...
},
);
for (final annotation in constructor.metadata) {
final annotationElement = annotation.element!.declaration!;
final elementDecleration = element.library.session
.getParsedLibraryByElement(element.library)
.getElementDeclaration(annotationElement);
// elementDecleration is null i think because annotationElement is synthetic
final node = element.node; // throws
final String type = _getUndefinedType(node);
_createClassWithName(type);
}
}I want to get the ast because I need to get the undefined type on Collection<T> so I can use that name to build it. Any help is much appreciated.
Metadata
Metadata
Assignees
Labels
type-questionA question about expected behavior or functionalityA question about expected behavior or functionality