Rollup merge of #136573 - oli-obk:document-literal-at-wrong-type-reason, r=compiler-errors

Document why some "type mismatches" exist

Just something I stumbled over and thought to save myself (and maybe others) the research time when encountering it again.
This commit is contained in:
Jubilee 2025-02-05 19:53:50 -08:00 committed by GitHub
commit ffa67f9c44
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1619,6 +1619,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
ast::LitKind::Int(_, ast::LitIntType::Unsuffixed) => {
let opt_ty = expected.to_option(self).and_then(|ty| match ty.kind() {
ty::Int(_) | ty::Uint(_) => Some(ty),
// These exist to direct casts like `0x61 as char` to use
// the right integer type to cast from, instead of falling back to
// i32 due to no further constraints.
ty::Char => Some(tcx.types.u8),
ty::RawPtr(..) => Some(tcx.types.usize),
ty::FnDef(..) | ty::FnPtr(..) => Some(tcx.types.usize),