{"push_id":1086686967,"size":2,"distinct_size":2,"ref":"refs/heads/master","head":"f049401e96a04eb3828f062b3b2b28d7ffd7f971","before":"b11748d264173b7eb65f8463306bb00a5c0e206d","commits":[{"sha":"0029475f1bc2cf20aee290d453d9e8e7bc738d84","author":{"email":"25bde77e144fcca55ce01543af70cbcf516b8a17@microsoft.com","name":"Joseph Tremoulet"},"message":"Separate TryDsc and ExnFlowDsc\n\nSupplement the helpers for finding a block's `TryDsc` (the `EHblkDsc` of\nthe innermost `try` region containing it) and a block's `HndDsc` (the\n`EHblkDsc` of the innermost handler it is part of) with helpers for\nfinding a block's `ExnFlowDsc` (the `EHblkDsc` of the innermost handler to\nwhich control may be transferred if an exception occurs in the given\nblock).\n\nThe `ExnFlowDsc` is the same as the `TryDsc` in most cases, but differs\nfor blocks in filter expressions -- when an exception escapes a filter,\nthat new exception is discarded and the search for a handler for the prior\nexception is resumed at the next-outer handler, which corresponds to the\nnext-outer try enclosing the try that the filter protects.  This is not\nthe try enclosing the filter itself for \"mutual-protect\" clauses such as\nare generated for\n  try {\n    ...\n  } catch when (E) { // <-- E is not in the 'try' but an exception\n    ...              //     in it causes flow to go to the 'finally'\n  } finally {\n    ...\n  }\n\nThis change adds helpers around the `ExnFlowDsc` and updates code that\nwas using the `TryDsc`/`TryIndex` where appropriate.\n\nThis fixes #4044.","distinct":true,"url":"https://api.github.com/repos/dotnet/coreclr/commits/0029475f1bc2cf20aee290d453d9e8e7bc738d84"},{"sha":"f049401e96a04eb3828f062b3b2b28d7ffd7f971","author":{"email":"8ca7188ad8d9b98e1ad5584704078fcf19aa7c78@gmail.com","name":"Joseph Tremoulet"},"message":"Merge pull request #4591 from JosephTremoulet/Filter\n\nSeparate TryDsc and ExnFlowDsc","distinct":true,"url":"https://api.github.com/repos/dotnet/coreclr/commits/f049401e96a04eb3828f062b3b2b28d7ffd7f971"}]}