)]}'
{
  "commit": "bd276c4b44838fcfd4f3f3204cd67c4c2c051177",
  "tree": "d21c7c98287db57bde6a7978cfd3c6e1346fb213",
  "parents": [
    "96675c915ab9b295e2993d7511d7bd4f647093cc"
  ],
  "author": {
    "name": "Dmitri Prime",
    "email": "bolms@google.com",
    "time": "Fri Oct 11 12:59:21 2024 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Oct 11 12:59:21 2024 -0700"
  },
  "message": "Replace `WhichOneof(\"x\")` with `which_x`.  (#197)\n\nThis change refactors `OneOfField` so that all fields in a given `oneof`\r\nconstruct share the same backing attributes on their container class --\r\n`which_{oneof name}`, which holds the (string) name of the\r\ncurrently-active member of the oneof named `{oneof name}` (or `None` if\r\nno member is active), and `_value_{oneof name}`, which holds the value\r\nof the currently-active member (or `None`).\r\n\r\nThis avoids looping through field specs in order to do an update or to\r\nfigure out which member of a `oneof` is currently active.\r\n\r\nSince the `WhichOneof()` method is now a trivial read of a\r\nsimilarly-named attribute, it can be inlined for a small decrease in\r\noverall code size and without sacrificing readability.\r\n\r\nAs a result of these changes, the compiler now runs 4.5% faster on my\r\nlarge test `.emb`.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3b82db0b7f7d8f6553a01abcb54161a7a5b08ea9",
      "old_mode": 33188,
      "old_path": "compiler/back_end/cpp/header_generator.py",
      "new_id": "0201d124864525607cabde5bda00b236c62c8b69",
      "new_mode": 33188,
      "new_path": "compiler/back_end/cpp/header_generator.py"
    },
    {
      "type": "modify",
      "old_id": "232eee892ee554302c55a5027d381c5a5bf94d58",
      "old_mode": 33188,
      "old_path": "compiler/front_end/attribute_checker.py",
      "new_id": "9920db487b45d61209ec092a8ac222b45b459002",
      "new_mode": 33188,
      "new_path": "compiler/front_end/attribute_checker.py"
    },
    {
      "type": "modify",
      "old_id": "852c9ad3f692b1635d09a9a59b8a8c9e86a19909",
      "old_mode": 33188,
      "old_path": "compiler/front_end/constraints.py",
      "new_id": "44b884d5ccfdffa4b739c84e31a721c4b6c938be",
      "new_mode": 33188,
      "new_path": "compiler/front_end/constraints.py"
    },
    {
      "type": "modify",
      "old_id": "cca36eefe39ddfce192cf695e10ee4b2313f9f0d",
      "old_mode": 33188,
      "old_path": "compiler/front_end/expression_bounds.py",
      "new_id": "51efca50830d917d0bf20a28bc32bfe5d7e20c1c",
      "new_mode": 33188,
      "new_path": "compiler/front_end/expression_bounds.py"
    },
    {
      "type": "modify",
      "old_id": "7af68363f0210c68716c13bfdaca61d95cd9cb34",
      "old_mode": 33188,
      "old_path": "compiler/front_end/expression_bounds_test.py",
      "new_id": "e5bc25d54a1aac5b6ffac856e2935d7e9143e586",
      "new_mode": 33188,
      "new_path": "compiler/front_end/expression_bounds_test.py"
    },
    {
      "type": "modify",
      "old_id": "498b1a9d1e8278c0eefd01b4f2b4606ea0bd75ae",
      "old_mode": 33188,
      "old_path": "compiler/front_end/symbol_resolver.py",
      "new_id": "0590b0d3fbe15315a1ffabb603c63e835059daaa",
      "new_mode": 33188,
      "new_path": "compiler/front_end/symbol_resolver.py"
    },
    {
      "type": "modify",
      "old_id": "693d15700e3071f32fbb8c7201ab82ea10dedf99",
      "old_mode": 33188,
      "old_path": "compiler/front_end/symbol_resolver_test.py",
      "new_id": "ddf7783cbcde4453697bd7a156873d9dfcbf1ea9",
      "new_mode": 33188,
      "new_path": "compiler/front_end/symbol_resolver_test.py"
    },
    {
      "type": "modify",
      "old_id": "c3f7870a5f393ba370fc007f133f679d46b92a8a",
      "old_mode": 33188,
      "old_path": "compiler/front_end/type_check.py",
      "new_id": "ce4155d2758d0796d6b321ab06e78a8fe00f4a44",
      "new_mode": 33188,
      "new_path": "compiler/front_end/type_check.py"
    },
    {
      "type": "modify",
      "old_id": "995f20d9f7688a29e4c20e08426070588bfead20",
      "old_mode": 33188,
      "old_path": "compiler/front_end/type_check_test.py",
      "new_id": "766f9e898220f9932c414e07c7b34578924f3a2d",
      "new_mode": 33188,
      "new_path": "compiler/front_end/type_check_test.py"
    },
    {
      "type": "modify",
      "old_id": "835330689190f7f583df9c1355fcbc02e417a090",
      "old_mode": 33188,
      "old_path": "compiler/front_end/write_inference.py",
      "new_id": "bd4e2ba40fe01b46a81a5792f6830641d2dcd43d",
      "new_mode": 33188,
      "new_path": "compiler/front_end/write_inference.py"
    },
    {
      "type": "modify",
      "old_id": "c6afa2fda629a6087dcdbc832718a92b7cb6954f",
      "old_mode": 33188,
      "old_path": "compiler/front_end/write_inference_test.py",
      "new_id": "f4ea8bf346918712a08cc9000741125eaf675966",
      "new_mode": 33188,
      "new_path": "compiler/front_end/write_inference_test.py"
    },
    {
      "type": "modify",
      "old_id": "2ebbffafad577fe391f7ef9d1c8ec325746ae43f",
      "old_mode": 33188,
      "old_path": "compiler/util/attribute_util.py",
      "new_id": "d20f19137bc6dbe8e5a0e7638c608ca645031dcc",
      "new_mode": 33188,
      "new_path": "compiler/util/attribute_util.py"
    },
    {
      "type": "modify",
      "old_id": "fda124e770d7a266495f65f70607b5c7c7172455",
      "old_mode": 33188,
      "old_path": "compiler/util/ir_data.py",
      "new_id": "cd12b96c314af7965bec527acf2c379e9999fa9b",
      "new_mode": 33188,
      "new_path": "compiler/util/ir_data.py"
    },
    {
      "type": "modify",
      "old_id": "76df36cd60cc887f3ab3316e312d854f9e80597c",
      "old_mode": 33188,
      "old_path": "compiler/util/ir_data_fields.py",
      "new_id": "e6b6ddba01436b6afa45cc701eab803ec364aaaa",
      "new_mode": 33188,
      "new_path": "compiler/util/ir_data_fields.py"
    },
    {
      "type": "modify",
      "old_id": "f6ee2cadd0c28f566f5f5de1089209b0a0085364",
      "old_mode": 33188,
      "old_path": "compiler/util/ir_data_fields_test.py",
      "new_id": "0376b69f619f610d3f71bb082834175eeff2a860",
      "new_mode": 33188,
      "new_path": "compiler/util/ir_data_fields_test.py"
    },
    {
      "type": "modify",
      "old_id": "99fbf7d42a3cb34ab2dc4a9bd5aec96f5f411427",
      "old_mode": 33188,
      "old_path": "compiler/util/ir_data_utils.py",
      "new_id": "e7679a6182c412c49f389fc4a416c76789aa92f6",
      "new_mode": 33188,
      "new_path": "compiler/util/ir_data_utils.py"
    },
    {
      "type": "modify",
      "old_id": "2d8763bae691ee19bc323cd8241a1709d81926c0",
      "old_mode": 33188,
      "old_path": "compiler/util/ir_util.py",
      "new_id": "c1de244cf6555f4be71b1b4a3d48d86bd566a0a3",
      "new_mode": 33188,
      "new_path": "compiler/util/ir_util.py"
    }
  ]
}
