)]}'
{
  "commit": "7dc1f8581847a166a7c8a45f2b71db2ea189cdb7",
  "tree": "56dfdea661cfebae0e15656813843ec81670ee5e",
  "parents": [
    "4fe1712e62db5acf59afbc45b6791f97aa58c66e"
  ],
  "author": {
    "name": "Hans Wennborg",
    "email": "hans@hanshq.net",
    "time": "Wed Jan 18 04:36:52 2017 +0000"
  },
  "committer": {
    "name": "Hans Wennborg",
    "email": "hans@hanshq.net",
    "time": "Wed Jan 18 04:36:52 2017 +0000"
  },
  "message": "Merging r292183:\n------------------------------------------------------------------------\nr292183 | rsmith | 2017-01-16 18:14:37 -0800 (Mon, 16 Jan 2017) | 14 lines\n\nPartial revert of r290511.\n\nThe rules around typechecking deduced template arguments during partial\nordering are not clear, and while the prior behavior does not seem to be\ncorrect (it doesn\u0027t follow the general model of partial ordering where each\ntemplate parameter is replaced by a non-dependent but unique value), the new\nbehavior is also not clearly right and breaks some existing idioms.\n\nThe new behavior is retained for dealing with non-type template parameters\nwith \u0027auto\u0027 types, as without it even the most basic uses of that feature\ndon\u0027t work. We can revisit this once CWG has come to an agreement on how\npartial ordering with \u0027auto\u0027 non-type template parameters is supposed to\nwork.\n\n------------------------------------------------------------------------\n\nllvm-svn: 292338\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8ad5b5951ea34c30c1df8c9c85cf4969a0d7bdd1",
      "old_mode": 33188,
      "old_path": "clang/lib/Sema/SemaTemplate.cpp",
      "new_id": "ad1e89a0ca64768120500ebbd12619ebe8ad0268",
      "new_mode": 33188,
      "new_path": "clang/lib/Sema/SemaTemplate.cpp"
    },
    {
      "type": "modify",
      "old_id": "518ec78e6f7d03a4cb935fa0911a04f8611e614a",
      "old_mode": 33188,
      "old_path": "clang/test/SemaTemplate/class-template-spec.cpp",
      "new_id": "00e03ef61eb07fe3a3ef526ba2fdd0e8d31f7249",
      "new_mode": 33188,
      "new_path": "clang/test/SemaTemplate/class-template-spec.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0a151de3902361ca9c7de168fe43d7cf839cc0e4",
      "new_mode": 33188,
      "new_path": "clang/test/SemaTemplate/partial-order.cpp"
    },
    {
      "type": "modify",
      "old_id": "27a0a03f84f462c9083c972de38d90401ba30bdf",
      "old_mode": 33188,
      "old_path": "clang/test/SemaTemplate/temp_arg_nontype.cpp",
      "new_id": "5b72b8c6549a4ac1e4f5f811d1d985ee81f3d96f",
      "new_mode": 33188,
      "new_path": "clang/test/SemaTemplate/temp_arg_nontype.cpp"
    },
    {
      "type": "modify",
      "old_id": "aa517c32859937e2bec2e267ce06f562f7b6314c",
      "old_mode": 33188,
      "old_path": "clang/test/SemaTemplate/temp_arg_template_cxx1z.cpp",
      "new_id": "703935dcd5c19bfa76e6634a02fa379b11c19462",
      "new_mode": 33188,
      "new_path": "clang/test/SemaTemplate/temp_arg_template_cxx1z.cpp"
    }
  ]
}
