Implement reflective support for Java Records (#1381)

* Standardize around JDK 8

* Update GJF to support newer JDKs

* Fix misc java 8 issues in tests

* Prepare java 16/records checking at runtime

* Implement real RecordJsonAdapter

* Spotless

* Prepare build for JDK 16+

* Fix property name for kapt

* Small cleanup

* Make FallbackEnum java-8 happy

* Remove animalsniffer

* Fix format

* Add opens for ExtendsPlatformClassWithProtectedFields

* Return null every time in shim for main tests

* Use JDK 16 + release 8 to replace animalsniffer

* Simplify accessor accessible handling

* Remove manifest attrs

* Fix typo

* Fix KCT tests + upgrade it

* Cover another

* Try explicit kotlin daemon args for java 17?

* Disable 17-ea for now until kotlin 1.5.30

* Add JsonQualifier and Json(name) tests + fix qualifiers

* Ensure constructor is accessible

* GJF it properly

* GJF 1.11

* Unwrap InvocationTargetException

* Use MethodHandle for constructor

* Use MethodHandle for accessor too

* Revert "Remove manifest attrs"

This reverts commit 3eb768fd6904bb5c979aa01c3c182e0fb9329d62.

* Proper MR jar

* *actually* fix GJF, which wasn't getting applied before

We can just enable this everywhere now since we require JDK 16 anyway

* Make IDE happy about modules access

* Fixup records tests to play nice with modules

Gotta be public

* Add complex smoke test

* Remove comment

Not a regression test in this case
This commit is contained in:
Zac Sweers
2021-08-23 12:00:06 -04:00
committed by GitHub
parent 2572c29e42
commit 95250b0359
20 changed files with 653 additions and 104 deletions

View File

@@ -21,11 +21,6 @@ object Dependencies {
const val ktlintVersion = "0.41.0"
const val okio = "com.squareup.okio:okio:2.10.0"
object AnimalSniffer {
const val annotations = "org.codehaus.mojo:animal-sniffer-annotations:1.16"
const val java7Signature = "org.codehaus.mojo.signature:java17:1.0@signature"
}
object AutoService {
private const val version = "1.0"
const val annotations = "com.google.auto.service:auto-service-annotations:$version"
@@ -53,7 +48,7 @@ object Dependencies {
object Testing {
const val assertj = "org.assertj:assertj-core:3.11.1"
const val compileTesting = "com.github.tschuchortdev:kotlin-compile-testing:1.4.0"
const val compileTesting = "com.github.tschuchortdev:kotlin-compile-testing:1.4.3"
const val junit = "junit:junit:4.13.2"
const val truth = "com.google.truth:truth:1.0.1"
}