)]}'
{
  "commit": "6e459fecb794666fb7d1ddc25b93a025eed1bf40",
  "tree": "9224b50861200d35bfa5bcfa7a6fcc6ba2033383",
  "parents": [
    "3e27a20f31288980326b9e6794ef50f4093a06bc"
  ],
  "author": {
    "name": "Ben Clayton",
    "email": "bclayton@google.com",
    "time": "Wed Jul 14 09:44:41 2021 +0000"
  },
  "committer": {
    "name": "Tint LUCI CQ",
    "email": "tint-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jul 14 09:44:41 2021 +0000"
  },
  "message": "sem: Add CompoundStatement\n\nThis change introduces sem::CompoundStatement, a new base class for\nstatements that can hold other statements.\n\nsem::BlockStatements now derives from sem::CompoundStatement, and\nthis change introduces the following new CompoundStatements:\n* `sem::IfStatement`\n* `sem::ElseStatement`\n* `sem::ForLoopStatement`\n* `sem::LoopStatement`\n* `sem::SwitchStatement`.\nThese new CompoundStatements are now inserted into the semantic\ntree as now documented in `docs/compound_statements.md`.\n\nThe `sem::BlockStatement::FindFirstParent()` methods have been\nmoved down to `sem::Statement`.\n\nThe `Resolver::BlockScope()` method has been replaced with\n`Resolver::Scope()` which now maintains the `current_statement_`,\n`current_compound_statement_ ` and `current_block_`. This\nsimplifies statement nesting.\n\nThe most significant change in behavior is that statements now\nalways have a parent, so calling Block() on the initializer or\ncontinuing of a for-loop statement will now return the\nBlockStatement that holds the for-loop. Before this would\nreturn nullptr.\n\nFixed: tint:979\nChange-Id: I90e38fd719da2a281ed9210e975ab96171cb6842\nReviewed-on: https://dawn-review.googlesource.com/c/tint/+/57707\nKokoro: Kokoro \u003cnoreply+kokoro@google.com\u003e\nCommit-Queue: Ben Clayton \u003cbclayton@google.com\u003e\nReviewed-by: James Price \u003cjrprice@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7d28b1d4acdafb39a86abd449cccf7c3ac9e7bac",
      "new_mode": 33188,
      "new_path": "docs/compound_statements.md"
    },
    {
      "type": "modify",
      "old_id": "a7c93346fc2cf7c72ab19e50b702e28d6ab47336",
      "old_mode": 33188,
      "old_path": "src/BUILD.gn",
      "new_id": "83c42bf3ff10ff85161acac20d870aecefb62ad5",
      "new_mode": 33188,
      "new_path": "src/BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "9a98007449f79425721cbbba90b03984974cf89c",
      "old_mode": 33188,
      "old_path": "src/CMakeLists.txt",
      "new_id": "f5685bdaa42076d4b56dfdc521952aea7ccb2a95",
      "new_mode": 33188,
      "new_path": "src/CMakeLists.txt"
    },
    {
      "type": "delete",
      "old_id": "ab213f6bed2a1af154d17f9998fdb96fad07602a",
      "old_mode": 33188,
      "old_path": "src/resolver/block_test.cc",
      "new_id": "0000000000000000000000000000000000000000",
      "new_mode": 0,
      "new_path": "/dev/null"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a13cac6de7e0d6d999fbc02fb2b69e7d603739d6",
      "new_mode": 33188,
      "new_path": "src/resolver/compound_statement_test.cc"
    },
    {
      "type": "modify",
      "old_id": "8390108d30bb09839e9b58e3b5d6cb7d2b2fce36",
      "old_mode": 33188,
      "old_path": "src/resolver/resolver.cc",
      "new_id": "eac0b637b02fdf8338d51ea0fa174aeb075acbf5",
      "new_mode": 33188,
      "new_path": "src/resolver/resolver.cc"
    },
    {
      "type": "modify",
      "old_id": "bd2bf626ae026dd0594f28e5529e9d7187f1e727",
      "old_mode": 33188,
      "old_path": "src/resolver/resolver.h",
      "new_id": "680efe54e483d0def7cb517a45364a6fa52f6a6a",
      "new_mode": 33188,
      "new_path": "src/resolver/resolver.h"
    },
    {
      "type": "modify",
      "old_id": "9cdb421faf21c106b38165669c12e35ea94c3a93",
      "old_mode": 33188,
      "old_path": "src/sem/block_statement.cc",
      "new_id": "614fd06b3a23372e9ee7ca6af1ea1629cfccc3f8",
      "new_mode": 33188,
      "new_path": "src/sem/block_statement.cc"
    },
    {
      "type": "modify",
      "old_id": "c61c3f888ada3a4b3a13e9b172c8b1506351c6c4",
      "old_mode": 33188,
      "old_path": "src/sem/block_statement.h",
      "new_id": "cc76148e5bc6a922d54302bb32a81dcd00928527",
      "new_mode": 33188,
      "new_path": "src/sem/block_statement.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "59b67389965cad876f8df1d7a7992daa62618b44",
      "new_mode": 33188,
      "new_path": "src/sem/for_loop_statement.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2ee92e4fed0c7b1535439ce879f39d9fd91991c4",
      "new_mode": 33188,
      "new_path": "src/sem/for_loop_statement.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "4b5d843fe4c2c5a1419a2a23d8ea8d9d65eca29a",
      "new_mode": 33188,
      "new_path": "src/sem/if_statement.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d615a449b3bd84f33aa92a8eadf07287f03342d7",
      "new_mode": 33188,
      "new_path": "src/sem/if_statement.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "62ea00d6e71f537520742e061f458165f5275f9b",
      "new_mode": 33188,
      "new_path": "src/sem/loop_statement.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c80bc8c40b74ab3912febe5e618afc67a954104d",
      "new_mode": 33188,
      "new_path": "src/sem/loop_statement.h"
    },
    {
      "type": "modify",
      "old_id": "85ece66871b043585aa727851b75538dee700e94",
      "old_mode": 33188,
      "old_path": "src/sem/statement.cc",
      "new_id": "0accb48b1b38e3d46b743b2fbcc0ece356d997cd",
      "new_mode": 33188,
      "new_path": "src/sem/statement.cc"
    },
    {
      "type": "modify",
      "old_id": "f58e7a7e2b3107979e66f5086e1882929f0308a6",
      "old_mode": 33188,
      "old_path": "src/sem/statement.h",
      "new_id": "821a8a5f9a02078b93f82022c855dea08be4ba13",
      "new_mode": 33188,
      "new_path": "src/sem/statement.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c99ff719bdd6af44555376dc0136dc347c9bbe0b",
      "new_mode": 33188,
      "new_path": "src/sem/switch_statement.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "f7bb735a1a5dc8712b8a00510dcd65d1ed12ec31",
      "new_mode": 33188,
      "new_path": "src/sem/switch_statement.h"
    },
    {
      "type": "modify",
      "old_id": "f80e0726b5feaf045bb4b7653a02abbb4a23e99e",
      "old_mode": 33188,
      "old_path": "test/BUILD.gn",
      "new_id": "5192ad9ac7a5e72375c694439159edfcdc2f059f",
      "new_mode": 33188,
      "new_path": "test/BUILD.gn"
    }
  ]
}
