)]}'
{
  "commit": "54ec37db189c839f8d2b5b9626f7dd78b3add0d8",
  "tree": "d9b665bc0affc706523a7ad1144cb7420e1f9a57",
  "parents": [
    "6118004e0db99820f1b6eb15d7901987c1f5481f"
  ],
  "author": {
    "name": "Googler",
    "email": "noreply@google.com",
    "time": "Sun Sep 15 08:39:37 2019 -0700"
  },
  "committer": {
    "name": "Copybara-Service",
    "email": "copybara-worker@google.com",
    "time": "Sun Sep 15 08:40:31 2019 -0700"
  },
  "message": "bazel syntax: simplify comprehensions\n\nThis change merges {List,Dict,Abstract}Comprehension into a\nsingle concrete class. The \"k: v\" body in a dict comprehension\n{k: v for vars in iterable} is now represented as\nDictionaryLiteral.Entry.\n\n\"Clause\" was a poor abstraction: clients need to know that\nthere are only two instances, If and For, and handle them\nspecifically.\n\nThe doEval method is now a single recursive\nfunction that fits easily in a single page.\n\nWe delete the following classes:\n\n  AbstractBuilder\n  OutputCollector\n  ListComprehension\n    Builder\n    ListOutputCollector\n  Clause.Kind\n  DictComprehension\n    Builder\n    DictOutputCollector\n\nPiperOrigin-RevId: 269185401\n",
  "tree_diff": [
    {
      "type": "delete",
      "old_id": "f9c307602ad371c611efff62a4b66c45d7c3731a",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/AbstractComprehension.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a6d9af03daa9dc4ea35b4e2917c4117ad8bdcbed",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/Comprehension.java"
    },
    {
      "type": "delete",
      "old_id": "a8094f34399d0c02af54866118e54efcedf18275",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/DictComprehension.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "3dbc643fa4878fb4711ade114209257e503f7f1f",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/DictionaryLiteral.java",
      "new_id": "c7df54f042dc07ecb6b23a61e29d8506536524a8",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/DictionaryLiteral.java"
    },
    {
      "type": "delete",
      "old_id": "12d31e6d0cc5af5f2de9990f26b5bc9046d53243",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/ListComprehension.java",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "modify",
      "old_id": "e2a6b88f940cd94f4a83090b29f4f0ad9c8ae6e9",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/Parser.java",
      "new_id": "f1ed1114cd999d991b59410c2520244cc07fdd8b",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/Parser.java"
    },
    {
      "type": "modify",
      "old_id": "348191f4f39a950bc97332e74b3e0a9e50b03e02",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java",
      "new_id": "25ed6fa0577fc62698b25de64f23ec9af2fd00b7",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/SyntaxTreeVisitor.java"
    },
    {
      "type": "modify",
      "old_id": "8c6662febeb39cd6924e3284171051d04afc0f55",
      "old_mode": 33188,
      "old_path": "src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java",
      "new_id": "e9a72404d87471aeaaec4728d83313f620a86dea",
      "new_mode": 33188,
      "new_path": "src/main/java/com/google/devtools/build/lib/syntax/ValidationEnvironment.java"
    },
    {
      "type": "modify",
      "old_id": "b00c88600ebda192ed72b1d0095b9c5d9ba8e144",
      "old_mode": 33188,
      "old_path": "src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java",
      "new_id": "c40649948aa8e60ee744b4a94fc696638444b698",
      "new_mode": 33188,
      "new_path": "src/test/java/com/google/devtools/build/lib/syntax/ParserTest.java"
    }
  ]
}
