Releases: dart-lang/source_gen
v0.8.1
v0.8.0
-
BREAKING removed the deprecated
requireLibraryDirective
parameter in
PartBuilder
. -
Revivable
no longer throws a type error when attempting to revive a
reference to a top-level function or static-class method. Now is returns a
reference to that function or method, as expected.
v0.7.6
0.7.6
TypeChecker
now throws anUnresolvedAnnotationException
with a more
detailed exception body (and properties useful for further debugging) instead
ofCould not resolve @null
.
v0.7.5+1
LibraryBuilder
andPartBuilder
now have a more readabletoString()
,
which is useful when emitting a warning or error in a build system. For
example you may seeGenerating .g.dart: MyBuilder
instead of
Instance of LibraryBuilder
in your build logs.
v0.7.4+2
-
BUG FIX:
ConstantReader.revive()
now properly returns no URL fragment
when the constant expression is resolved from a top-level or static-field.
The documentation had said otherwise, and it was impossible to tell the
difference between a constructor and a field. Now, fields are always in
the form of accessor ={clazz}.{field}
or{topLevelField}
. -
Fix file URIs on windows.
v0.7.4+1
- Removed a
log.finest
with the output source of each generator. This allows
a verbose option (-v
) for tools like bazel or build_runner to be much more
readable and debuggable. Files are emitted to disk for inspection in any
case.
v0.7.4
-
Added
typeNameOf
, which is a safe way to get the name of aDartType
,
even when the type is aFunctionType
, which has anull
name in newer
versions of the Dart analyzer. -
Added
LibraryReader.pathToUrl(Uri|String)
, which computes theimport
or
export
path necessary to reach the provided URL from the current library.
Also addedpathToAsset
andpathToElement
as convenience functions. -
Expanded
package:build
support to allow version0.12.0
.
v0.7.0
-
Breaking changes: See the wiki
for help upgrading.Generator.generate
now operates on aLibraryReader
rather than being
called for everyElement
within a library. Generators can iterate over
elements usingLibraryReader.allElements
.GeneratorForAnnotation
will
continue to callgenerateForAnnotatedElement
repeatedly for each element.GeneratorForAnnotation
passes in aConstantReader
for the annotation
instance rather than re-creating it using mirrors.GeneratorBuilder
is replaced withPartBuilder
andLibraryBuilder
depending on whether the output is meant to be included in apart
file.- Removed
JsonSerializable
and related classes. These are moved to
package:json_serializable
. - Removed
lib/builder.dart
. Import throughsource_gen.dart
instead. - Removed
OutputFormatter
typedef.
-
Add
LibraryReader.allElements
- a utility to iterate across allElement
instances contained in Dart library. -
Add
LibraryReader.element
to get back to theLibraryElement
instance. -
Add
ConstantReader.objectValue
to get back to theDartObject
instance. -
Add
ConstantReader.peek
to read a value that returnsnull
if not found:
// Tries to read the field "token" first, then "_token".
findTokenField(DartObject o) {
final reader = new ConstantReader(o);
final token = o.peek('token') ?? o.read('_token');
}
- Add
throwOnUnresolved
optional parameter toTypeChecker.annotationsOf
,
TypeChecker.annotationsOfExact
,TypeChecker.firstAnnotationOf
, and
TypeChecker.firstAnnotationOfExact
. Setting this tofalse
will enable you
to check for matching annotations with incomplete type information (at your
own risk). - Builder logs now log the primary inputs
AssetId
instead of thelibrary
,
which is more useful for tracking down the actual files.
v0.6.1+1
v0.6.0
-
Breaking change:
TypeChecker#annotationsOf|firstAnnotationOf
now
returns annotations that are assignable to theTypeChecker
's type. As a
result we've added#annotationsOfExact|firstAnnotationOfExact
which has the
old behavior for precise checks. -
TypeChecker#annotations...
-methods now throw aStateError
if one or more
annotations on an element are not resolvable. This is usually a sign of a
mispelling, missing import, or missing dependency. -
Added
TypeChecker.any
, which delegates to multiple otherTypeChecker
implementations when making a type check.