)]}'
{
  "commit": "06e32a8d0d2e7e28bc4e597e4ce96e2e0c229d08",
  "tree": "acaf8d8a3428c492df6210cc498903720e24fcd1",
  "parents": [
    "cf616dfa0539cd1f1ef2022a5128faef752695a1"
  ],
  "author": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Tue May 28 08:45:45 2024 +0200"
  },
  "committer": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Tue May 28 08:45:45 2024 +0200"
  },
  "message": "Only include default \u003cinit\u003e() for empty member rules in compat mode\n\nRELNOTES:\n\nThis fixes a bug in R8 full mode where keep rules with absent or empty member rules would implicitly be converted into a stronger keep rule that has a member rule matching the default constructor.\n\nExample:\n\n1. The rule -keep class A would implicitly be converted to -keep class A { void \u003cinit\u003e(); }.\n\n2. The rule -keep class A {} would implicitly be converted to -keep class A { void \u003cinit\u003e(); }.\n\n\nFor consistency with the R8 full mode documentation in compatibility-faq.md (\"The default constructor (\u003cinit\u003e()) is not implicitly kept when a class is kept.\"), this change limits the implicit inclusion of void \u003cinit\u003e() to Proguard compatibility mode.\n\nNote that starting with this change, -keepclassmembers rules with no member rules (e.g., -keepclassmembers class A) do no longer have any effect in R8 full mode.\n\nFixes: b/132318799\nFixes: b/323136645\nChange-Id: Ic6049e561bcd35b7a45ee9c8c5b94e1780e538a1",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "819b3499445b9f18a05dad4d4ea45947eb9adb42",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/R8Command.java",
      "new_id": "adfaf2930f0f1cafd12585da3c4a49cea4d6e6e0",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/R8Command.java"
    },
    {
      "type": "modify",
      "old_id": "98bb1473962540eca31921c0ff3fd013a8955453",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java",
      "new_id": "165e5208baf1020af3f7f68f927564e74116e98b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java"
    },
    {
      "type": "modify",
      "old_id": "b2dcea5447adda87ce1d52c595371b2a76f8b997",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java",
      "new_id": "d59e2eff9fd3c1b9968d57007e6abd3474b84d25",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java"
    },
    {
      "type": "modify",
      "old_id": "fb028997f2576c570c5e782b5c90aa6b47f661e7",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardKeepRuleBase.java",
      "new_id": "308ab6e4f4907000abfb7f1eec77c50da34df726",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardKeepRuleBase.java"
    },
    {
      "type": "modify",
      "old_id": "1bd723a4f5bbba0814bd1c176bc3048ddfca15b8",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/compatproguard/CompatKeepClassMemberNamesTestRunner.java",
      "new_id": "bb999d89c9c742927339e9664000873bf877999a",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/compatproguard/CompatKeepClassMemberNamesTestRunner.java"
    },
    {
      "type": "modify",
      "old_id": "08fde0f073cce37e080466d85d82591176edfc66",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesExtendsTest.java",
      "new_id": "16bc26e470dc8fb604ad3a102fa408679d7b26de",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesExtendsTest.java"
    },
    {
      "type": "modify",
      "old_id": "270637d43abbb3772948b93d662d4ed3b2c0d929",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesHorizontalMergeTest.java",
      "new_id": "9366ecf84d96390674f7f7448c17bfa1658ba301",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesHorizontalMergeTest.java"
    },
    {
      "type": "modify",
      "old_id": "b4202683995184df158b5d866f06136fa65f4434",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesIllegalSubclassMergedTest.java",
      "new_id": "7d5eefa8bd6ccabf08f9b168640835d678f48a0b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesIllegalSubclassMergedTest.java"
    },
    {
      "type": "modify",
      "old_id": "240b7a97fed50bd5fd2337cd1bf617907ca8e7c8",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesIllegalSubclassTest.java",
      "new_id": "cf6aef5a88a1f51dc6475d84500f1c6f5af57932",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesIllegalSubclassTest.java"
    },
    {
      "type": "modify",
      "old_id": "ac61cf8506968c9af0513b825214e26278133bd1",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesImplementsTest.java",
      "new_id": "a275617868e1263e1958aab0cf067bf16f3e1d3b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesImplementsTest.java"
    },
    {
      "type": "modify",
      "old_id": "bcd774a6eba56c27e8a9d43122febaa1baab3f5c",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesMergeTest.java",
      "new_id": "74ee559be1892d393a979a7890b113e139821664",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesMergeTest.java"
    },
    {
      "type": "modify",
      "old_id": "1893e3b549e12857c08936af703134e71d743fa9",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesShrinkingTest.java",
      "new_id": "a5a68a0fdb5e37a64a96008276051e53601da5f8",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesShrinkingTest.java"
    },
    {
      "type": "modify",
      "old_id": "c220e9dbc96021bdf86df02e255f8285827d2f54",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesTestAllowPermittedSubclassesRemovalTest.java",
      "new_id": "4b96a42bcedad76ca999f9cdd71bfe0b065d251d",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/desugar/sealed/SealedClassesTestAllowPermittedSubclassesRemovalTest.java"
    },
    {
      "type": "modify",
      "old_id": "bf5614e0c766ad2d138cdb8b4b6395e2c76016e0",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/dexsplitter/DexSplitterFieldTypeStrengtheningTest.java",
      "new_id": "5c94d284ce7e984e2d7b8cae361cd4dded0a951b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/dexsplitter/DexSplitterFieldTypeStrengtheningTest.java"
    },
    {
      "type": "modify",
      "old_id": "be84e824faa0d7262b63005c6c5f6f99433bf496",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/KeptClassInliningTest.java",
      "new_id": "0fd3754a391d75457910c74abfd9e8ee4f6b8d9d",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/ir/optimize/classinliner/KeptClassInliningTest.java"
    },
    {
      "type": "modify",
      "old_id": "3b1ef5f2bcc1c319631aeff1a0d84c4c075bb26d",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/keepanno/compatissues/EmptyClassWithMembersRuleTest.java",
      "new_id": "1f16eb94b94b100ffba0c30180bfa438c58eddd5",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/keepanno/compatissues/EmptyClassWithMembersRuleTest.java"
    },
    {
      "type": "modify",
      "old_id": "944b39bb0c6ce74ff66f50898eae9e808ac4ebcc",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/keepanno/compatissues/NonDefaultInitClassWithMembersRuleTest.java",
      "new_id": "9b461684d982cdbbd2d7aa775e2f8d9cf18a64c2",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/keepanno/compatissues/NonDefaultInitClassWithMembersRuleTest.java"
    },
    {
      "type": "modify",
      "old_id": "8731d5eaeaff21e8fe1c7d98f916f6317a8555ca",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInClasspathTypeTest.java",
      "new_id": "3ad68c92aad54ceadf4bbfdecc746f53c37e93df",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInClasspathTypeTest.java"
    },
    {
      "type": "modify",
      "old_id": "2c7400ab4f1f3ce546686b487ad86282b5a32d4a",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java",
      "new_id": "fe8c7479d197ea7304f8464d63421752e8ccb97e",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java"
    },
    {
      "type": "modify",
      "old_id": "73e45340631b60253059b3097c70ccfd9a796475",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionFunctionTest.java",
      "new_id": "969f5a75866b5eaa1c501c6dafbbb8e57a6e6f5c",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionFunctionTest.java"
    },
    {
      "type": "modify",
      "old_id": "a177f44bdf864e5ff22faa7a9c6675d5d721b3df",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionPropertyTest.java",
      "new_id": "2780a6bdcc983318f63f1b52ac9d1dd24ac4f8c4",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionPropertyTest.java"
    },
    {
      "type": "modify",
      "old_id": "da87d5f3106a74a7ab348c1732616ab002b5cc40",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionTest.java",
      "new_id": "c6fa15845d5079723f835d8f0073128405620462",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionTest.java"
    },
    {
      "type": "modify",
      "old_id": "28b621a27f89df498d82044df2991b0ec031224a",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/naming/IdentifierNameStringMarkerTest.java",
      "new_id": "cc150aa11a604484b6a4ab2ca6f3f3a84567b3cf",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/naming/IdentifierNameStringMarkerTest.java"
    },
    {
      "type": "modify",
      "old_id": "a4bc84c2ce46299c0c9b0185e7d2eac6b640e07a",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/repackage/RepackageWithStringIdentifier.java",
      "new_id": "b3df30fbe2e9bb2ec93f2956c8525ece170163aa",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/repackage/RepackageWithStringIdentifier.java"
    },
    {
      "type": "modify",
      "old_id": "8df062f4c0ccf391e9128184f8301fa0ecb4e281",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/KeepAnnotatedMemberTest.java",
      "new_id": "b7c0d9a24c6fbb514ae87c2be910ccad5d68e42b",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/KeepAnnotatedMemberTest.java"
    },
    {
      "type": "modify",
      "old_id": "902d86a5da76399ebf67fb10dfe6c0bf6e70a7f3",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/ifrule/ConditionalKeepIfKeptTest.java",
      "new_id": "96aa8fd63049ac026d92caea67a9b2b2f39ee828",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/ifrule/ConditionalKeepIfKeptTest.java"
    },
    {
      "type": "modify",
      "old_id": "63d57461ce67640a389e886984e70f4f341ca137",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/ifrule/IfOnStaticFinalFieldTest.java",
      "new_id": "824863cdd0c972a41a97b2dc18fc157456cfe9b6",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/ifrule/IfOnStaticFinalFieldTest.java"
    },
    {
      "type": "modify",
      "old_id": "79ae86f5704616f4e7708c0f60f27363bf7dc1a4",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/ifrule/membervaluepropagation/IfWithFieldValuePropagationTest.java",
      "new_id": "9fa36b4e3cc516c4e96833d8ee4aaf7e8156b2d9",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/ifrule/membervaluepropagation/IfWithFieldValuePropagationTest.java"
    },
    {
      "type": "modify",
      "old_id": "270a8377ba59369134f60f897d2343f54f7a4f1f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/ifrule/membervaluepropagation/IfWithMethodValuePropagationTest.java",
      "new_id": "e2b98e83e137526046a5cd71566dbb955adc2ae1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/ifrule/membervaluepropagation/IfWithMethodValuePropagationTest.java"
    },
    {
      "type": "modify",
      "old_id": "02584286f84e27d4835fbcfd30e6bc3064a4147f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/DefaultInterfaceMethodsTest.java",
      "new_id": "31876396dd85a0c524536e451ad881b173c6f361",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/DefaultInterfaceMethodsTest.java"
    },
    {
      "type": "modify",
      "old_id": "9357d07ae2c075456000f71aa8700daf4caf39af",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/ImplementingMethodInSubclassTest.java",
      "new_id": "7d439970af8e0cd6e91427f1eabe67d9af0b0aa1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/ImplementingMethodInSubclassTest.java"
    },
    {
      "type": "modify",
      "old_id": "a2fe6b9e740133f54e575ae08517694fb8cac2d9",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/InterfaceMethodKeepResolutionTest.java",
      "new_id": "f850ee54c342e94f1daa5d45782c1eca1ecf57c1",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/InterfaceMethodKeepResolutionTest.java"
    },
    {
      "type": "modify",
      "old_id": "b8095e1df986d2c869f830e214e9a76a1fd3c141",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/SubTypeOverridesInterfaceMethodTest.java",
      "new_id": "3cdcb569bcf51002f0808c532d0e9342b072be76",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/methods/interfaces/SubTypeOverridesInterfaceMethodTest.java"
    },
    {
      "type": "modify",
      "old_id": "32a40c04efbad2576049a38c7735feb166ab24d9",
      "old_mode": 33188,
      "old_path": "src/test/testbase/java/com/android/tools/r8/TestBuilder.java",
      "new_id": "201d67472e45fc401b9333defa06bf8c85b184a9",
      "new_mode": 33188,
      "new_path": "src/test/testbase/java/com/android/tools/r8/TestBuilder.java"
    },
    {
      "type": "modify",
      "old_id": "1d8821ea0d54a8ffabb4fb286dee231db90324dd",
      "old_mode": 33188,
      "old_path": "src/test/testbase/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java",
      "new_id": "8ce018e23add5a3fd0e1131f4af5a15c68f1f2f2",
      "new_mode": 33188,
      "new_path": "src/test/testbase/java/com/android/tools/r8/dexsplitter/SplitterTestBase.java"
    }
  ]
}
