Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
### What does this PR try to resolve? Despite being interned `SourceId::Eq` is not a `ptr::eq`. Which in turn is because `SourceId`s concept of identity is a complete mess. The code relies on having to IDs that are `Eq` but do not have the same values for their fields. As one measure of this `SourceId` has an `impl Hash` which does something different from `fn full_hash` and `fn stable_hash`. Separately `SourceIdInner` has a different implementation. Similar levels of complexity exist for `Eq`. Every one of these `impl`s was added due to a real bug/issue we've had that needs to stay fixed. Not all of witch are reproducible enough to have made it into our test suite. I [have some ideas](#14665 (comment)) for how to reorganize the types so that this is easier to reason about and faster. But given the history and the complexity I want to move extremely carefully. ### How should we test and review this PR? The test pass, and it's a one line change, but this still needs careful review. ### Additional information r? @ehuss I remember you and Alex working very hard to track down most of these bugs.
- Loading branch information