)]}'
{
  "commit": "ecdd86ec8908fe3a4e9161d9b288ca87f9ecb7af",
  "tree": "37bf1f15d50230d528d1b25271c7e7ffded970f6",
  "parents": [
    "98a7bc0d8c9541416d32fdf4b533fd0f1b52ca7b"
  ],
  "author": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Thu Feb 19 13:02:06 2026 +0100"
  },
  "committer": {
    "name": "Christoffer Adamsen",
    "email": "christofferqa@google.com",
    "time": "Fri Feb 20 01:34:06 2026 -0800"
  },
  "message": "Add support for negated names in member rules\n\nRELNOTES: Support for negating member name patterns\n\nThis extend the configuration language such that it is possible to match\non negated member name patterns.\n\nExample: It is now possible to match all methods that don\u0027t end in\n\"ForTesting\" using the following rule:\n\n-keepclassmembers class com.example.MyClass {\n  *** !*ForTesting(...);\n}\n\nMember name patterns can also be negated in the precondition of -if\nrules. If a negated member name pattern contains wildcards, such\nwildcards cannot be back-referenced in the -if consequent rule.\n\nBug: b/484870212\nChange-Id: I87f23a2238404747917d8e6a02545bc0a7f740f8\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f99f6306e35fc8e33f05d710157822499daa7fab",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java",
      "new_id": "1be2931ae5a7ca0d2c68e5cdc6d151fd0c34e0c5",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java"
    },
    {
      "type": "modify",
      "old_id": "60b7ffbfeb12fe8a282ae6c587253de0c3056551",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java",
      "new_id": "91f9fc8a9c7fdf6f84c48c33c78394db7e27376b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardConfigurationUtils.java"
    },
    {
      "type": "modify",
      "old_id": "740b2eb52ab07750ea6d4fb56e83542e6e577e41",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java",
      "new_id": "4bb37f59a2b0f5a502c94a575c939dc6061da6ad",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java"
    },
    {
      "type": "modify",
      "old_id": "ecd43b1ea716899293b702b4702c181895f9978e",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardNameMatcher.java",
      "new_id": "f4eea0261456b2f897e1e5f04e8b8ef78d9b1cab",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardNameMatcher.java"
    },
    {
      "type": "modify",
      "old_id": "a672c960737373834f0dbd5d002850f35a285ba2",
      "old_mode": 33188,
      "old_path": "src/main/java/com/android/tools/r8/shaking/ProguardWildcard.java",
      "new_id": "814c502a1a6284ef59374f10fef827c6ebf9a443",
      "new_mode": 33188,
      "new_path": "src/main/java/com/android/tools/r8/shaking/ProguardWildcard.java"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "05762b3bd04f7c1ebd4397bf80d3eccd22c4ce60",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/KeepRuleNegatedNameTest.java"
    },
    {
      "type": "modify",
      "old_id": "50465cad5e0c20e425a0cb3112a803dbe7642007",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java",
      "new_id": "f21e321c3233357637a914f6839f26762dcf722e",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java"
    },
    {
      "type": "modify",
      "old_id": "5163bbd75d783a430e518618665b61d8465c582b",
      "old_mode": 33188,
      "old_path": "src/test/java/com/android/tools/r8/shaking/ProguardNameMatchingTest.java",
      "new_id": "673ba912bdf2a18b90b84f186329a94a62399c64",
      "new_mode": 33188,
      "new_path": "src/test/java/com/android/tools/r8/shaking/ProguardNameMatchingTest.java"
    }
  ]
}
