A new user of Moshi might try to make a class like
data class Response (
val users: ArrayList<User>
)
Then when trying to create a JsonAdapter for it, they get an unhelpful error
message like
Platform class java.util.ArrayList in java.util.ArrayList<java.lang.String>
requires explicit JsonAdapter to be registered
which doesn't explain what they should do to fix the problem. In fact what it
hints towards is that the user should implement a JsonAdapter for ArrayList,
when really they just need to change the type to List!
Now the error looks like
No JsonAdapter for java.util.ArrayList<java.lang.String>, you should use
List instead of ArrayList (Moshi only supports the collection interfaces
by default).
* Fix reflection names in generated proguard files
Proguard wants to speak reflection names
* Opportunistic clean up proguard tests
This ensures we fail the test if there are any unexpected ones
* Extract target constructor signature into TargetConstructor.kt
We'll need this to know what the runtime types are for proguard rules
* Add ProguardConfig
* Wire in proguard config
* Write proguard configs out with adapters
* Add full tests
* Now remove the rules!
* Ignore on inline classes for now
* Pass adapter constructor params correctly
* Improve the way Json.name is fetched for codegen
* Remove the comment for jsonName
* Add a test for json names with quotation marks
* Fix the broken tests
* Add LocalVariableName to common suppressions
NameAllocator will add underscores to names, which kotlin doesn't like for stylistic reasons
* Simplify structure a bit
Keeping track of template counts is error prone and would have failed only at runtime
* Update to Kotlin compile testing 1.2.4
This allows us to un-toe-hold a test from before
* Fix trailing newline
* Add class-based alternative
* Use updated test API
* Update to 1.2.5
* Update to Kotlin 1.3.60
Reported by a Googler - We currently gate the lookup of the class on the presence of `Metadata`. However, `Metadata` might be justifiably stripped by Proguard/R8, even though `DefaultConstructorMarker` might still be present. This means Moshi's defaults invocation is likely broken on (at least) R8 builds without this.
Workaround until next release is to keep Metadata annotations
* Suppress common warnings in generated classes
Followup from #1023 (Resolves#1023 too). Since we can't do targeted deprecation suppressions, we can just stick with blanket deprecations suppressions for now. This also suppresses a couple other common issues with all our generated adapters.
Have just eyeballed the results for now, can add a proper test as a followup once #1014 is in
* Add redundant projection and re-enable -Werror
* Add tests for deprecation suppression
With -Werror enabled now we can actually check this
* 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