Before - we would always add the constructor property even if the class had no default constructor parameters. Apparently -Werror doesn't flag this as a warning either, so we didn't catch it before
* Decouple AdapterGenerator from kotlin-metadata
* Decouple AdapterGenerator from javax elements API
* Extract checkIsVisibility helper
* Remove elements and kotlinmetadata from property, constructor, type
* Extract kotlinpoet-only parts to new API package for better separation
* Add mirroring APIs
* Finish extraction of PropertyGenerator to no-elements/no-kotlin-metadata
* Update for new tag API in KotlinPoet
* Update for new tag API in KotlinPoet
* Move rest of elements utils out of API
We should split this up better as metadata.kt has become a dumping ground
* Move type handling to JsonClassCodegenProcessor
* Rebase fix
* Opportunistic idiomatic require()
* Add Util#invokeDefaultConstructor
* Add defaultPrimitiveValue
This will be used to initialize required properties for later invocation of the default constructor
* Move isTransient into PropertyGenerator
We will need this in order to know how to invoke constructors even if they have transient parameters
* Add notion of hasLocalIsPresentName to PropertyGenerator
* Switch to using invokeDefaultConstructor for any default property types
* Add code gen versions of default constructor test
* Fix mismatched names
* Use Arrays.copyOf
* Unwrap InvocationTargetException
* Use name allocator
* Rename createMask to createDefaultValuesParametersMask, use it directly
* Opportunistically clean up result variable holder
Only needs to be made if we have non-parameter instances, otherwise we can just return directly
* Fix mask name
* Remove unnecessary mod
* Switch to local lazily-initialized constructor reference
Not working because of some issue in kotlinpoet I don't understand
* Fix named usage
* Clean up debugging dots
* Add proguard/R8 rule for keeping defaults constructor in targets
* Make constructor lookup property private
* Add another defensive dot
* Rework invokeDefaultConstructor to accept vararg args
A little more idiomatic
* Update proguard rules
* Extract generatedJsonAdapterName to public API for other generators/consumers
* Fix kapt location in tests
* Add IDE-generated dependency-reduced-pom.xml to gitignore
This always bites me
* Add generator property to JsonClass and skip in processor
* Opportunistically fix formatting for generateAdapter doc
* Extract NullSafeJsonAdapter for delegate testing
* Add custom adapter tests
* Allow no-moshi constructors for generated adapters
* Fix rebase issue
* Use something other than nullSafe() for lenient check
This no longer propagates lenient
* Add missing copyrights
* Add top-level class note
* Add note about working against Moshi's generated signature
* Add missing bit to "requirements for"
* Note kotlin requirement relaxed in custom generators
* Style
* Support gradle incremental processing in code gen
This adds support for incremental compilation in gradle via incap helper and marking the code gen as `ISOLATING`.
Depends on a newer version of KotlinPoet that has https://github.com/square/kotlinpoet/pull/647Resolves#589
* Opportunistically update to auto-service 1.0-rc5
Supports incremental compilation and moves annotations to a separate artifact
* 1.2.0 final!
* Mark compiler embeddales as test only
Someone at KotlinConf brought this to my attention, as they're trying to generate their own adapter factory but can't since moshi consumes the annotation and doesn't allow others.
Otherwise we crash with an exception attempting to create an adapter
for an enclosed type that has a type parameter.
I ran into this looking for a test case for issue 615.
https://github.com/square/moshi/issues/615
AnnotationSpec implements equals() in the way we need, but
AnnotationMirror doesn't. As a consequence this fixes a problem
where we were generating redundant adapters.
Closes: https://github.com/square/moshi/issues/563
* Update to kotlinpoet 1.0.0-RC1
* Move to WildcardTypeName.STAR
* simpleNames() function -> simpleNames property
* packageName() fun -> packageName property
* simpleName() fun -> simpleName property
* Check if bounds are empty for TypeVariableName. If so, use no-bounds creator
* Use new parameterizedBy/plusParameter API where appropriate
* Fix companion object names not being resolved
This slipped through the cracks before the release
Fixes#546
* Add braces on the else clause for symmetry