* Only allow public or internal classes
* Ensure consistent ordering of supertypes
* Eagerly load supertype typespecs for reuse
* Add regression test for https://github.com/square/moshi/issues/1022
* Add MoshiCachedClassInspector, wire in
* Check visibility of enclosed types too
Resolves#1022
* Fix comments
* Fix: force object type for type arguments
* Add outDeclaration regression test for #1009
* Create mapTypesUtility for reusing recursive type mapping
* Strip typevar variance where appropriate
Resolves#1009
* Fix missing nullability/annotations when unwrapping typealiases
Fixes#990
* Add extra nullable properties test + more nullability in alias test
* Add more complex typeAliasNullability test
* Recursively check nullability and track annotations in typealiases
* Check against non-nullable known primitives when rendering class blocks
`Int?` will not equal `Int` in KotlinPoet, so this was always falling through to the default `::class.java` code.
Resolves#991
* Nix comment
* Flesh out test to include all primitives
* Add parameter-only param in multi-masks test
* Add type to target parameters for later reference
* Ensure parameters are ordered
* Reword AdapterGenerator fromJson logic to use sealed FromJsonComponent
This allows us to handle parameter-only types separately (needed for mask index calculation). Resolves#979
* Add more tests
* Add MultipleMasksTest test
* Use multiple masks for constructors with more than 32 parameters
Resolves#977
* Add non-default arg to test
* Emit hex literals
* Simpler int math
* Don't allocate a mask if there's no properties
* Fix broken test
This test suite doesn't run on CI builds but fails locally since the method was moved
* Add multiple constructors test case
* Implement TypeName.asTypeBlock()
* Make DEFAULT_CONSTRUCTOR_MARKER public
* Look up constructor via getDeclaredConstructor with exact param types
Resolves#975
* Remove dead code
* Unwrap typealiases
This was a change in 1.4.2 left over from moshi's prior metadata logic. We need the unwrapped type for class references
* Add toe-hold for testing shared adapter behavior
* Add regression test for abstractSuperProperties
* Kotlinpoet 1.4.2
The attempted fix replaced a warning with a crash. I believe that a
warning is a better developer experience than a crash.
This reverts commit c0639316b1.
* KotlinPoet 1.4.1 & Kotlin 1.3.50
KotlinPoet uses 1.3.50, so this just matches that now
* Remove now-unnecessary custom shade
This uses the same common package prefix in kotlinpoet now
* Add backwardReferencingTypeVars() regression test
Coverage for #955
* Generate optimized toString()
This optimizes `toString()` functions to emit separate strings for the enclosing prefix and the adapter name
Example:
```kotlin
override fun toString(): String = buildString {
append("GeneratedJsonAdapter(").append("SmokeTestType").append(")") }
```
* Optimize with capacity and char
* Port Gson Types recursion fix for subtypeOf/supertypeOf
From a300148003
First step in resolving #338
* Port Gson Type resolve() recursion fix for type variables
From https://github.com/google/gson/pull/1128Resolves#338
* Capture adapter to make checkstyle happy
* Move RecursiveTypesResolveTest out of internal package
* Use moshi convention for tests
* 2 is not 1
Unlike `value(BufferedSource)`, this retains the push-based nature of JsonWriter and allows layering other sinks (such as a base64-encoding Sink for binary data). Since `value(BufferedSource)` is trivially replaced by reading the source into the value sink, it is deprecated.
* Add regression test for field json annotations
* Make json name null if absent rather than default to name
This fixes incorrect behavior where the parameter json name would always win out over the property value
* Report json name in code gen if different from property name
Resolves#800
* Unify required property name error message
* Report json name in kotlinjsonadapter, match code gen
* Upper case JSON
Co-Authored-By: Jake Wharton <jakew@google.com>
* Upper case JSON
Co-Authored-By: Jake Wharton <jakew@google.com>
* Don't keep constants
* Inline json name - property name comparison to util methods
* Remove unnecessary constructor keyword
* Consolidate non-null/missing property tests to parameterized suite
* Add custom json name tests for nonNull property checks
* Rename test to make maven happy
Maven won't run the test unless it ends with `Test` or `TestCase`