)]}'
{
  "commit": "59d24735d01c85de2f9e60479c85e726abdeb6ea",
  "tree": "687bf912902f9dc92e89bf55713e8f612798116f",
  "parents": [
    "316f9f6b6d9ae643b5bd88e5fb0995802ebbeac7"
  ],
  "author": {
    "name": "Ben Clayton",
    "email": "bclayton@google.com",
    "time": "Mon Feb 08 22:42:54 2021 +0000"
  },
  "committer": {
    "name": "Commit Bot service account",
    "email": "commit-bot@chromium.org",
    "time": "Mon Feb 08 22:42:54 2021 +0000"
  },
  "message": "Add IntrinsicTable\n\nProvides a centeralized table for all intrinsic overloads.\n\nIntrinsicTable::Lookup() takes the intrinsic type and list of arguments, returning either the matched overload, or a sensible error message.\n\nThe validator has expectations that the TypeDeterminer resolves the return type of an intrinsic call, even when the signature doesn\u0027t match. To handle this, create semantic::Intrinsic nodes even when the overload fails to match. A significant portion of the Validator\u0027s logic for handling intrinsics can be removed (future change).\n\nThere are a number of benefits to migrating the TypeDeterminer and Validator over to the IntrinsicTable:\n* There\u0027s far less intrininsic-bespoke code to maintain (no more duplicate `kIntrinsicData` tables in TypeDeterminer and Validator).\n* Adding or adjusting an intrinsic overload involves adding or adjusting a single Register() line.\n* Error messages give helpful suggestions for related overloads when given incorrect arguments.\n* Error messages are consistent for all intrinsics.\n* Error messages are far more understandable than those produced by the TypeDeterminer.\n* Further improvements on the error messages produced by the IntrinsicTable will benefit _all_ the intrinsics and their overloads.\n* The IntrinsicTable generates correct parameter information, including whether parameters are pointers or not.\n* The IntrinsicTable will help with implementing autocomplete for a language server\n\nChange-Id: I4bfa88533396b0b372aef41a62fe47b738531aed\nReviewed-on: https://dawn-review.googlesource.com/c/tint/+/40504\nCommit-Queue: Ben Clayton \u003cbclayton@google.com\u003e\nReviewed-by: dan sinclair \u003cdsinclair@chromium.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "57d221a682ce24bdb72c3b1d7b70fe9b862ed8fe",
      "old_mode": 33188,
      "old_path": "BUILD.gn",
      "new_id": "699411a14c99b340a64bf61b1cf6952712921ddc",
      "new_mode": 33188,
      "new_path": "BUILD.gn"
    },
    {
      "type": "modify",
      "old_id": "4ce8de2b503cab7afdb2ab7b44451a52c3838f4f",
      "old_mode": 33188,
      "old_path": "src/CMakeLists.txt",
      "new_id": "876e851ba5cb23311fb7c4373a315fb4aaf97e78",
      "new_mode": 33188,
      "new_path": "src/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d550eec69d42c81dd7cd3b58338aa2cb5d044a87",
      "new_mode": 33188,
      "new_path": "src/intrinsic_table.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2f58872c4b2f2742388c233a0619fb7b3063b71a",
      "new_mode": 33188,
      "new_path": "src/intrinsic_table.h"
    },
    {
      "type": "modify",
      "old_id": "7ea3c093fd223f24ec32b910333b254c718413f3",
      "old_mode": 33188,
      "old_path": "src/type_determiner.cc",
      "new_id": "0353b669c44c017d81045ed7f08fccf5ec70d4cd",
      "new_mode": 33188,
      "new_path": "src/type_determiner.cc"
    },
    {
      "type": "modify",
      "old_id": "9928b907adb539b56cebfff20de9027ee05f1b1e",
      "old_mode": 33188,
      "old_path": "src/type_determiner.h",
      "new_id": "2a8b28e55b611ab251792b0c1893bc147499004b",
      "new_mode": 33188,
      "new_path": "src/type_determiner.h"
    },
    {
      "type": "modify",
      "old_id": "4b43554ca4f16a2483147dcfe04d14fb1165cacd",
      "old_mode": 33188,
      "old_path": "src/type_determiner_test.cc",
      "new_id": "5ea317c72bba16156d748eaf994ee0cbc20e214b",
      "new_mode": 33188,
      "new_path": "src/type_determiner_test.cc"
    }
  ]
}
