about summary refs log tree commit diff
path: root/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
diff options
context:
space:
mode:
authorNilstrieb <48135649+Nilstrieb@users.noreply.github.com>2023-06-21 07:37:01 +0200
committerGitHub <noreply@github.com>2023-06-21 07:37:01 +0200
commita98c14f3a9326e00d4c0734138308bf98206baa6 (patch)
tree469f759b87dde57291b2ed57dda34d0210ac344f /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
parent34c8e53d7a7fcf3bfb3340e9f61d5cf6494c4f6d (diff)
parentdcee3ab4f8e66a6783fc902362bee1f1bb957818 (diff)
downloadrust-a98c14f3a9326e00d4c0734138308bf98206baa6.tar.gz
rust-a98c14f3a9326e00d4c0734138308bf98206baa6.zip
Rollup merge of #112772 - compiler-errors:clauses-1, r=lcnr
Add a fully fledged `Clause` type, rename old `Clause` to `ClauseKind`

Does two basic things before I put up a more delicate set of PRs (along the lines of #112714, but hopefully much cleaner) that migrate existing usages of `ty::Predicate` to `ty::Clause` (`predicates_of`/`item_bounds`/`ParamEnv::caller_bounds`).

1. Rename `Clause` to `ClauseKind`, so it's parallel with `PredicateKind`.
2. Add a new `Clause` type which is parallel to `Predicate`.
    * This type exposes `Clause::kind(self) -> Binder<'tcx, ClauseKind<'tcx>>` which is parallel to `Predicate::kind` 😸

The new `Clause` type essentially acts as a newtype wrapper around `Predicate` that asserts that it is specifically a `PredicateKind::Clause`. Turns out from experimentation[^1] that this is not negative performance-wise, which is wonderful, since this a much simpler design than something that requires encoding the discriminant into the alignment bits of a predicate kind, or something else like that...

r? ``@lcnr`` or ``@oli-obk``

[^1]: https://github.com/rust-lang/rust/pull/112714#issuecomment-1595653910
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions