diff options
| author | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2023-07-03 18:46:13 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-07-03 18:46:13 +0200 |
| commit | 4668d3e737bad1a250500a77ba529d2006f1dd47 (patch) | |
| tree | 5f93767aeb7215e324a886575f4067ed2f7023e4 /compiler/rustc_codegen_gcc | |
| parent | f798ada7babac06d4611b0b3a6079d8399ab58ab (diff) | |
| parent | f3f879326895658ca8b07726b8ba3eddab5b7c81 (diff) | |
| download | rust-4668d3e737bad1a250500a77ba529d2006f1dd47.tar.gz rust-4668d3e737bad1a250500a77ba529d2006f1dd47.zip | |
Rollup merge of #112869 - compiler-errors:sketchy-new-select, r=lcnr
Implement selection via new trait solver Implements selection via the new solver by calling into `assemble_and_evaluate_candidates`, doing a very light-weight "winnow" to choose one candidate over the others, and then re-confirming that candidate outside of the `EvalCtxt` in order to compute the information necessary for the `ImplSource`. This selection routine is best effort -- if it receives an ambiguous response from the `EvalCtxt`, then it may return ambiguity if the work to re-confirm the goal is not "easy" -- right now, that means everything except for object and impl goals. Since we don't want to reimplement all of the work of the `compute_builtin_*` methods in the solver internals, we bail out if we encounter ambiguity more often than the old solver. This should only barely affect [method selection](https://github.com/rust-lang/rust/blob/f798ada7babac06d4611b0b3a6079d8399ab58ab/compiler/rustc_hir_typeck/src/method/probe.rs#L1447) and not codegen. It can be made more precise later if needed. r? `@lcnr`
Diffstat (limited to 'compiler/rustc_codegen_gcc')
0 files changed, 0 insertions, 0 deletions
