about summary refs log tree commit diff
path: root/compiler/rustc_codegen_gcc
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume1.gomez@gmail.com>2023-07-03 18:46:13 +0200
committerGitHub <noreply@github.com>2023-07-03 18:46:13 +0200
commit4668d3e737bad1a250500a77ba529d2006f1dd47 (patch)
tree5f93767aeb7215e324a886575f4067ed2f7023e4 /compiler/rustc_codegen_gcc
parentf798ada7babac06d4611b0b3a6079d8399ab58ab (diff)
parentf3f879326895658ca8b07726b8ba3eddab5b7c81 (diff)
downloadrust-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