)]}'
{
  "commit": "af226dd10edba218ea1aa59bb294fad67e85c567",
  "tree": "9d676c3500609bd85102cfa71e789cf25d5c2e5a",
  "parents": [
    "24a31a8ab995782a582c3a4d1790a967673e9ca1"
  ],
  "author": {
    "name": "adonovan",
    "email": "adonovan@google.com",
    "time": "Tue Dec 17 12:43:00 2019 -0800"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Tue Dec 17 12:44:00 2019 -0800"
  },
  "message": "bazel analysis/skylark: fix crash in attr.int(default\u003d\u003cfunction\u003e)\n\nThe type of the default\u003d... parameter of each of the attr.\u003ctype\u003e functions\nwas inconsistent with the Param.type or Param.allowed_types annotations,\ncausing the annotation-based type-check to accept a StarlarkFunction value,\nbut the reflective call to then fail.\n\nThis CL removes StarlarkFunction from Param.allowed_types for these parameters:\n\n   attr.int(default\u003dfunction)\n   attr.int_list(default\u003dfunction)\n   attr.string(default\u003dfunction)\n   attr.string_list(default\u003dfunction)\n   attr.bool(default\u003dfunction)\n   attr.string_dict(default\u003dfunction)\n   attr.string_list_dict(default\u003dfunction)\n\nOnly these label-oriented attribute types accept a function:\n\n  attr.label,\n  attr.label_list\n  attr.label_keyed_string_dict\n  attr.output                     \\ the default parameter\n  attt.output_list                / is deprecated for these\n\nCL 285849424 fixes the annotation processor to detect this and similar errors.\nIt catches other instances and does other checks, so it is split off as a separate change.\n\nAlso:\n- move the nasty little optionMap function out of EvalUtils (where its\n  generic type forces it to abuse unsafe casts) and into SkylarkAttr.\n  (The only other use, in a test, was trivially replaced by simpler code.)\n- use Map not Dict for the map produced by optionMap.\n\nSee github.com/bazelbuild/bazel/issues/9463.\n\nPiperOrigin-RevId: 286037108\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8b2cdd17d82274a23fbf236208c088ab0327c000",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java",
      "new_id": "d43a8d482f1d66a00d88ff26df5b6e687f9926ca",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java"
    },
    {
      "type": "modify",
      "old_id": "4bd7a11fb8e5bd9b2454d4684a263b1e2af85b13",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java",
      "new_id": "350f4dc6b56ff8baaeea44c37f1476c864553726",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkAttrApi.java"
    },
    {
      "type": "modify",
      "old_id": "69d6ae3615a797d40abe92946211d74f7727410c",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java",
      "new_id": "9dc203fd534eed3b018de1bfb6c049108de93246",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/EvalUtils.java"
    },
    {
      "type": "modify",
      "old_id": "710d36440c431ee8c0e348d5526cfa2ae0269f29",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java",
      "new_id": "2301288e192efdbd93e7f87fbd028d20e9c189cd",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleClassFunctionsTest.java"
    },
    {
      "type": "modify",
      "old_id": "e01dd6b67fa16dee232385ea5ab6965ed9b73c3f",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java",
      "new_id": "d881afa46793501741a2f06956006b704ef148e7",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java"
    }
  ]
}
