Commit Graph

11 Commits

Author SHA1 Message Date
Samuel Freilich
ad5cd31498
Add shrinker-test examples with never-referenced constructors (#2478)
* Add shrinker-test examples with never-referenced constructors

R8 can do some optimizations that assume values of types whose
constructors are never referenced are `null`. (A bit confused why
the rules here are sufficient to avoid that optimization in the
case of a class whose sole constructor has arguments and is
unreferenced, since the keep rule only refers to `<init>()` instead
of `<init>(...)`. Does R8 have special behavior for `<init>()` where
attempting to keep that makes it assume a class is constructable even
if it doesn't have a no-args constructor?)

Also rename some test classes/names to refer to `NoArgs` instead of
`Default` constructors. The examples here care about whether a
no-argument constructor is present. While a no-argument
constructor (explicitly defined or not) is used by default in some
circumstances, the Java documentation consistently uses "default
constructor" to refer only to constructors whose implementation is
implicitly provided by the complier (all default constructors are
no-argument constructors, but not vice versa).

* Update shrinker-test/src/main/java/com/example/ClassWithNoArgsConstructor.java

Accept review suggestion

Co-authored-by: Marcono1234 <Marcono1234@users.noreply.github.com>

* Update shrinker-test/src/main/java/com/example/NoSerializedNameMain.java

Accept review suggestion

Co-authored-by: Marcono1234 <Marcono1234@users.noreply.github.com>

* Further adjust test class/method names for consistency

* Update shrinker-test/src/main/java/com/example/NoSerializedNameMain.java

Co-authored-by: Marcono1234 <Marcono1234@users.noreply.github.com>

---------

Co-authored-by: Marcono1234 <Marcono1234@users.noreply.github.com>
2023-09-05 06:47:54 -07:00
Marcono1234
393db094dd
Add test for unused class to shrinker-test (#2455) 2023-08-22 16:31:56 -07:00
Søren Gjesse
7b5629bcfc
Update ProGuard default shrinking rules (#2448)
* Update ProGuard default shrinking rules to correctly deal with classes without a no-args constructor

* Update test after changing default shrinking rules

* Adjust shrinker tests

* Update rules

* Addressed review comments

* Addressed more review comments

* Addressed more review comments

---------

Co-authored-by: Marcono1234 <Marcono1234@users.noreply.github.com>
2023-08-22 08:40:31 -07:00
Marcono1234
7b8ce2b9f7
Prevent TypeToken from capturing type variables (#2376)
* Prevent `TypeToken` from capturing type variables

* Use hyphen for term "type-safe"

Not completely sure if that is grammatically correct, but it might make the
text a bit easier to understand.

* Update Troubleshooting Guide URLs in tests from 'master' to 'main'

* Rename system property

* Simplify system property check
2023-08-14 14:26:05 -07:00
dependabot[bot]
83d44c0fa2
Bump com.android.tools:r8 from 8.0.40 to 8.1.56 (#2462)
Bumps com.android.tools:r8 from 8.0.40 to 8.1.56.

---
updated-dependencies:
- dependency-name: com.android.tools:r8
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-08 06:35:47 -07:00
Marcono1234
ecb9f8c8ad
Adjust ProGuard default rules and shrinking tests (#2420)
* Adjust ProGuard default rules and shrinking tests

* Adjust comment

* Add shrinking test for class without no-args constructor; improve docs

* Improve Unsafe mention in Troubleshooting Guide

* Improve comment for `-if class *`
2023-07-24 07:34:02 -07:00
Marcono1234
6d9c3566b7
Document minimum Android API level and add workflow to check compatibility (#2431) 2023-07-06 10:04:36 -07:00
dependabot[bot]
5fa61b25b4
Bump maven-shade-plugin from 3.4.1 to 3.5.0 (#2423)
Bumps [maven-shade-plugin](https://github.com/apache/maven-shade-plugin) from 3.4.1 to 3.5.0.
- [Release notes](https://github.com/apache/maven-shade-plugin/releases)
- [Commits](https://github.com/apache/maven-shade-plugin/compare/maven-shade-plugin-3.4.1...maven-shade-plugin-3.5.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-shade-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Éamonn McManus <emcmanus@google.com>
2023-06-19 08:44:18 -07:00
Éamonn McManus
a80bc24e04
Rename master to main everywhere. (#2410) 2023-06-07 11:02:13 -07:00
dependabot[bot]
144626ddd9
Bump maven-failsafe-plugin from 3.1.0 to 3.1.2 (#2412)
Bumps [maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.1.0...surefire-3.1.2)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-failsafe-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-06-07 08:16:59 -07:00
Marcono1234
43396e45fd
Add ProGuard / R8 integration tests & add default ProGuard rules (#2397)
* Add code shrinking tools integration test

* Keep no-args constructor of classes usable with JsonAdapter

* Add library ProGuard rules for Gson

They are automatically applied for all users of Gson, see
https://developer.android.com/build/shrink-code#configuration-files

* Skip japicmp-maven-plugin for shrinker-test

* Add more tests for JsonAdapter, add tests for generic classes

* Extend default constructor test

* Add Troubleshooting Guide entry for TypeToken
2023-05-28 12:24:05 -07:00