GeneratorForAnnotation<T> class abstract

Extend this type to create a Generator that invokes generateForAnnotatedElement for every top level element in the source file annotated with T.

When all annotated elements have been processed, the results will be combined into a single output with duplicate items collapsed.

For example, this will allow code generated for all top level elements which are annotated with @Deprecated:

class DeprecatedGenerator extends GeneratorForAnnotation<Deprecated> {
  @override
  Future<String> generateForAnnotatedElement(
      Element element,
      ConstantReader annotation,
      BuildStep buildStep) async {
    // Return a string representing the code to emit.
  }
}

Elements which are not at the top level, such as the members of a class or extension, are not searched for annotations. To operate on, for instance, annotated fields of a class ensure that the class itself is annotated with T and use the Element to iterate over fields. The TypeChecker utility may be helpful to check which elements have a given annotation.

Inheritance

Constructors

GeneratorForAnnotation({bool throwOnUnresolved = true})
By default, this generator will throw if it encounters unresolved annotations. You can override this by setting throwOnUnresolved to false.
const

Properties

hashCode int
The hash code for this object.
no setterinherited
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
throwOnUnresolved bool
final
typeChecker TypeChecker
no setter

Methods

generate(LibraryReader library, BuildStep buildStep) FutureOr<String>
Generates Dart code for an input Dart library.
override
generateForAnnotatedElement(Element element, ConstantReader annotation, BuildStep buildStep) → dynamic
Implement to return source code to generate for element.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
toString() String
A string representation of this object.
inherited

Operators

operator ==(Object other) bool
The equality operator.
inherited