Releases: google/auto
Releases · google/auto
AutoValue 1.7.2
Only one change in this release:
- AutoValue is once again "isolating" for Gradle incremental compilation. (8e7515a)
AutoService 1.0-rc7
AutoValue 1.7.1
New features
- SerializableAutoValue extension. This can be used to serialize
@AutoValue
classes with properties of typejava.util.Optional
, even thoughjava.util.Optional
is not serializable, and it can also be configured to serialize other arbitrary types. Thanks to @alvinlao for this contribution! (f91d2fe) - The logic for determining if we can make a BarBuilder out of a Bar has been generalized. For example, if your
@AutoValue
classFoo
has a propertyIntList ints()
, then your builder can haveIntListBuilder intsBuilder()
. Previously this worked if there was noFoo.toBuilder()
method, or ifIntList
had its owntoBuilder()
method. Now it also works if it is possible to callIntListBuilder.addAll(IntList)
. (6aeb44f) - AutoValue now allows boxed properties to be set from the corresponding primitive type, for example
Integer
fromint
. (2bbe506)
Behaviour changes
- AutoValue now gives a warning if the static builder() method is inside the
@AutoValue.Builder
class instead of directly in the@AutoValue
class. (fcccded) - AutoValue doesn't generate code or invoke extensions if it detects a problem, for example a mismatch between getters and setters. (ecb6032)
- AutoOneOf factory methods for void values now have type parameters if the
@AutoOneOf
class does. (4ab1b53) - It is now a compilation error if a setter method in a builder has a parameter marked
@Nullable
when the corresponding property is not in fact@Nullable
. Calling such a method with a null parameter already generated a NullPointerException at runtime. (bd7bed2) - The
@Memoized
annotation now has class-level retention, rather than source-level. (107694b)
Bug fixes
- We fixed an issue with type checking of setter parameters in the presence of inheritance and generics. (e97d1f0)
- We now generate a better
toString()
for arrays in AutoOneOf (0a7c049)
Miscellaneous
- We added CompileWithEclipseTest, which checks that AutoValue works with ecj, the Eclipse compiler. (05e983c)
AutoValue 1.7
This is the same as 1.7rc1
, with one small addition:
- Add a way for extensions to retrieve the name of the final AutoValue_Foo class. (4543619)
Thanks to @bryanstern for checking that the API changes for builder introspection do indeed work in a real extension.
AutoValue 1.7rc1
- Add an API to allow AutoValue extensions to find out about builders. (86f4563)
- The generated AutoValue builder class is no longer final if there are extensions generating code. This means that extensions can subclass
Builder
to modify or extend its functionality. (49fbf55) - Property builders now work correctly when their actual return type is different from the corresponding property type because of type variable substitution. (7646889)
- Allow
@AutoValue
getters to define properties that are not valid Java identifiers, for exampleget1st()
. (6dfa04e) - Add a
propertyTypes()
method toAutoValueExtension.Context
, to allow extensions to see the true type of every property. In preference toproperties().get(p).getReturnType()
, extensions should usepropertyTypes().get(p)
. (99ae134)
AutoFactory 1.0-beta7
- Prevent stack overflow caused by self referencing types (ex: E extends Enum). (c35f5c3)
- Add support for generics to @autofactory (e63019a)
- Gradle:
@AutoFactory
is now an isolating annotation processor (2a52c55)
AutoValue 1.6.6
- Allow @AutoOneOf properties to be void. An abstract void method means that the associated kind has no value. The factory method has no parameter and calling the implementation of the void method does nothing unless the instance is of another kind. (48d6557)
- Shade org.checkerframework in the auto-value jar. (f89da91)
- Primitive arrays now work in @AutoOneOf classes. (81134b5)
- In AutoValue code, include type annotations in bounds of type-parameter declarations. (ca013a2)
- Handle inner classes correctly when the outer class has a type parameter. (4259261)
- Use the short form of annotations in generated code. For example, instead of
@SuppressWarnings(value = {"mutable"})
, write@SuppressWarnings("mutable")
. (b2eb535) - Use ImmutableSortedSet.copyOfSorted and .naturalOrder where appropriate. (a0de99b)
- Work around an Eclipse compiler bug where static interface methods are incorrectly shown as being inherited. (3854a65)
- Handle GWT serialization when some of the properties use property builders. (445b9ed)
AutoService 1.0-rc6
- Actually support Gradle's incremental annotation processing
AutoValue 1.6.5
This is identical to 1.6.4 except for the following:
- Fix an intermittent issue with AutoValue extensions and Gradle. (0cced0d)
AutoValue 1.6.4
- More detailed exception information if AutoValue extensions cannot be loaded. (67e172e)
- Expand the exceptions covered by the workaround for a JDK8 jar bug. (f17d298)
- Support @CopyAnnotations in classes generated by MemoizeExtension. (bf27cab)
- Improved type checking for builder setter parameters. (8d6111d, efd48fd)
- Added
MoreTypes.asIntersection()
(c16ef66) - It is a compilation error for an @AutoOneOf property to be @nullable since null values are not in fact accepted. (9cf9999)
- AutoValue extensions can now declare supported options. (175e323)
- In AutoValue, @CopyAnnotations.exclude now affects type annotations. (3ee205b)