Helpers and utilities for developing macros.
Log information in into the augmenting library as code comments
builder.log('Got here.');
Output:
// Got here.
Introspect all fields of a type
final map = await builder.introspectFields(clazz);
final type = map['fieldName']!.typeDeclaration;
Indent the generated code
builder.declareInLibrary(
DeclarationCode.fromParts([
'augment class Foo {\n',
..._getMyMethodParts().indent(), // Adds 2 spaces before each line of the code.
'}\n',
]),
);
Report errors with 5 less lines of code
builder.reportError('Error message', target: target);
...instead of
builder.report(
Diagnostic(
DiagnosticMessage('Error message', target: target),
Severity.error,
),
);