)]}'
{
  "commit": "fd31bbd3f110b00b0e2d9f0e4df17b2d89bad1a0",
  "tree": "90034be71ee5a737b9fd95896ffd954b26ae7262",
  "parents": [
    "b78251fdcd852e1d2134e68dafcec34fd632ca43"
  ],
  "author": {
    "name": "Antonio Maiorano",
    "email": "amaiorano@google.com",
    "time": "Tue Mar 09 10:26:57 2021 +0000"
  },
  "committer": {
    "name": "Commit Bot service account",
    "email": "commit-bot@chromium.org",
    "time": "Tue Mar 09 10:26:57 2021 +0000"
  },
  "message": "TD: validate continue statements bypassing body variables\n\nWe now keep track of scopes as a tree of BlockInfos that track variables\ndeclared in each scope. For loop scopes, we store the index of the first\nvariable (if any) that follows the first continue statement. Using this\ndata structure, when parsing expressions, we validate that used\nvariables in continuing blocks are not bypassed by a continue statement\nin the parent loop block.\n\nAlso:\n* Validate that continue statements are in a loop in TD. This error is\nalready caught by the spir-v writer, but better to catch it here.\n* Add more utility functions to ProgramBuilder to make it easier to\nwrite tests\n\nFixed: tint:17\nChange-Id: I967bf2cfb63062bac8dcca113d074ba0fe2152e2\nReviewed-on: https://dawn-review.googlesource.com/c/tint/+/44120\nReviewed-by: Ben Clayton \u003cbclayton@google.com\u003e\nCommit-Queue: Ben Clayton \u003cbclayton@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f7df6140b5b6458bd6f26350731431d67dd2c337",
      "old_mode": 33188,
      "old_path": "src/ast/block_statement.h",
      "new_id": "a2cb102b22f5b33411bec3894b4b06ffca06bc7b",
      "new_mode": 33188,
      "new_path": "src/ast/block_statement.h"
    },
    {
      "type": "modify",
      "old_id": "d4b8ff6a71d4da87e205722e912d42e9095cfcad",
      "old_mode": 33188,
      "old_path": "src/program_builder.h",
      "new_id": "d7f0f2ab0ff56dccc87eaa49b3efeccf3412ff7e",
      "new_mode": 33188,
      "new_path": "src/program_builder.h"
    },
    {
      "type": "modify",
      "old_id": "22ad3350ae3125521d9a817756a45cff95d44782",
      "old_mode": 33188,
      "old_path": "src/type_determiner.cc",
      "new_id": "6f7197999786f23c54dcb7ea50e492f0fe62c5b4",
      "new_mode": 33188,
      "new_path": "src/type_determiner.cc"
    },
    {
      "type": "modify",
      "old_id": "2c3fd2a71a850368bf738d2242a4153665efcb79",
      "old_mode": 33188,
      "old_path": "src/type_determiner.h",
      "new_id": "b32f9e3d3fc02c6277132d05805e0f3c3180e88a",
      "new_mode": 33188,
      "new_path": "src/type_determiner.h"
    },
    {
      "type": "modify",
      "old_id": "30ea38d959a23700cf850c494904661bdbc5eeac",
      "old_mode": 33188,
      "old_path": "src/type_determiner_test.cc",
      "new_id": "dd66bbf5f9f4917842e784c8d076cb3af3006e95",
      "new_mode": 33188,
      "new_path": "src/type_determiner_test.cc"
    }
  ]
}
