)]}'
{
  "commit": "a0e620a9bb7dc3fbe1367fadc4dacf919c2fe315",
  "tree": "b2cd06de0149436466963fbd161756cb531c9e54",
  "parents": [
    "6f222b3f90a03ecf07a1b2e7dff1c85c3ab1546f",
    "9bd3f51ac161adee09074419708f450992ad8cc1"
  ],
  "author": {
    "name": "Guillaume Gomez",
    "email": "contact@guillaume-gomez.fr",
    "time": "Thu May 14 16:51:07 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu May 14 16:51:07 2026 +0200"
  },
  "message": "Rollup merge of #153785 - amandasystems:debug-type-test, r\u003dwesleywiser\n\nHand-written Debug implementation for `TypeTest`\n\nThis adds a hand-written debug format for `TypeTest`s that at least was helpful for me when debugging because I always struggle to remember which component is which. It formats a type test using the Unicode turnstile symbol (for \"computes\") to illustrate that the test encodes a typing rule that, if it holds, produces a conclusion.\n\nThe format is: `TypeTest from {originating span} {bound}  ⊢ T: \u0027lower_bound`, where `T` is the generic type being tested and `lower_bound` is the lower bound. Bounds are formatted as you would expect, but where the region for `\u0027lower_bound` is included in the outlives constraints for context. I resisted the urge to turn `ALL [A, ..., Z]` into `[A  ∧ ...  ∧ Z]` etc.\n\n## What it looks like\n\nHere\u0027s an example of a simple type test from the test suite that says that some type `I/#0` will be lower-bounded (outlive) `?4` iff `\u0027?1: \u0027?4`:\n\nBefore:\n```\n$ RUSTC_LOG\u003d\"rustc_borrowck::region_infer\u003ddebug\" rustc +stage1 tests/ui/associated-types/associated-types-eq-3.rs\n...\nDEBUG rustc_borrowck::region_infer type tests: [\n     TypeTest {\n         generic_kind: I/#0,\n         lower_bound: \u0027?4,\n         span: tests/ui/associated-types/associated-types-eq-3.rs:21:18: 21:25 (#0),\n         verify_bound: OutlivedBy(\n             \u0027?1,\n         ),\n     },\n     TypeTest {\n         generic_kind: I/#0,\n         lower_bound: \u0027?4,\n         span: tests/ui/associated-types/associated-types-eq-3.rs:21:18: 21:25 (#0),\n         verify_bound: OutlivedBy(\n             \u0027?1,\n         ),\n     },\n ]\n...\n```\n\nAfter:\n```\n$ RUSTC_LOG\u003d\"rustc_borrowck::region_infer\u003ddebug\" rustc +stage1 tests/ui/associated-types/associated-types-eq-3.rs\n...\n DEBUG rustc_borrowck::region_infer type tests: [\n     TypeTest from tests/ui/associated-types/associated-types-eq-3.rs:21:18: 21:25 (#0)[\u0027?1: \u0027?4] ⊢ I/#0: \u0027?4,\n     TypeTest from tests/ui/associated-types/associated-types-eq-3.rs:21:18: 21:25 (#0)[\u0027?1: \u0027?4] ⊢ I/#0: \u0027?4,\n ]\n...\n```\n",
  "tree_diff": []
}
