Skip to content
This repository was archived by the owner on May 28, 2025. It is now read-only.

Commit 0922559

Browse files
committed
Auto merge of rust-lang#102627 - matthiaskrgr:rollup-2xtrqkw, r=matthiaskrgr
Rollup of 8 pull requests Successful merges: - rust-lang#102439 (rustdoc: re-sugar more cross-crate trait bounds) - rust-lang#102569 (Improve `FromStr` example) - rust-lang#102597 (Avoid ICE in printing RPITIT type) - rust-lang#102607 (Improve documentation of `slice::{from_ptr_range, from_ptr_range_mut}`) - rust-lang#102613 (Fix ICE rust-lang#101739) - rust-lang#102615 (Cleanup some error code explanations) - rust-lang#102617 (`HirId` for `deferred_transmute_checks`) - rust-lang#102620 (Migrate `.stab` elements style to CSS variables) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2 parents 33d3519 + d329213 commit 0922559

File tree

31 files changed

+325
-86
lines changed

31 files changed

+325
-86
lines changed

compiler/rustc_error_codes/src/error_codes/E0045.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ Variadic parameters have been used on a non-C ABI function.
33
Erroneous code example:
44

55
```compile_fail,E0045
6-
#![feature(unboxed_closures)]
7-
8-
extern "rust-call" {
6+
extern "Rust" {
97
fn foo(x: u8, ...); // error!
108
}
119
```

compiler/rustc_error_codes/src/error_codes/E0092.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,6 @@ functions are defined in `compiler/rustc_codegen_llvm/src/intrinsic.rs` and in
1919
#![feature(intrinsics)]
2020

2121
extern "rust-intrinsic" {
22-
fn atomic_fence(); // ok!
22+
fn atomic_fence_seqcst(); // ok!
2323
}
2424
```

compiler/rustc_error_codes/src/error_codes/E0161.md

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ A value was moved whose size was not known at compile time.
33
Erroneous code example:
44

55
```compile_fail,E0161
6-
#![feature(box_syntax)]
76
trait Bar {
87
fn f(self);
98
}
@@ -13,7 +12,7 @@ impl Bar for i32 {
1312
}
1413

1514
fn main() {
16-
let b: Box<dyn Bar> = box (0 as i32);
15+
let b: Box<dyn Bar> = Box::new(0i32);
1716
b.f();
1817
// error: cannot move a value of type dyn Bar: the size of dyn Bar cannot
1918
// be statically determined
@@ -27,8 +26,6 @@ either `&x` or `&mut x`. Since a reference has a fixed size, this lets you move
2726
it around as usual. Example:
2827

2928
```
30-
#![feature(box_syntax)]
31-
3229
trait Bar {
3330
fn f(&self);
3431
}
@@ -38,7 +35,7 @@ impl Bar for i32 {
3835
}
3936

4037
fn main() {
41-
let b: Box<dyn Bar> = box (0 as i32);
38+
let b: Box<dyn Bar> = Box::new(0i32);
4239
b.f();
4340
// ok!
4441
}

compiler/rustc_error_codes/src/error_codes/E0579.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ Erroneous code example:
88
fn main() {
99
match 5u32 {
1010
// This range is ok, albeit pointless.
11-
1 .. 2 => {}
11+
1..2 => {}
1212
// This range is empty, and the compiler can tell.
13-
5 .. 5 => {} // error!
13+
5..5 => {} // error!
1414
}
1515
}
1616
```

compiler/rustc_error_codes/src/error_codes/E0622.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Erroneous code example:
55
```compile_fail,E0622
66
#![feature(intrinsics)]
77
extern "rust-intrinsic" {
8-
pub static breakpoint : fn(); // error: intrinsic must be a function
8+
pub static breakpoint: fn(); // error: intrinsic must be a function
99
}
1010

1111
fn main() { unsafe { breakpoint(); } }

compiler/rustc_error_codes/src/error_codes/E0743.md

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@ The C-variadic type `...` has been nested inside another type.
33
Erroneous code example:
44

55
```compile_fail,E0743
6-
#![feature(c_variadic)]
7-
86
fn foo2(x: u8, y: &...) {} // error!
97
```
108

compiler/rustc_hir_analysis/src/check/expr.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
542542
// been resolved or we errored. This is important as we can only check transmute
543543
// on concrete types, but the output type may not be known yet (it would only
544544
// be known if explicitly specified via turbofish).
545-
self.deferred_transmute_checks.borrow_mut().push((from, to, expr.span));
545+
self.deferred_transmute_checks.borrow_mut().push((from, to, expr.hir_id));
546546
}
547547
if !tcx.features().unsized_fn_params {
548548
// We want to remove some Sized bounds from std functions,

compiler/rustc_hir_analysis/src/check/fn_ctxt/checks.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
5050
pub(in super::super) fn check_transmutes(&self) {
5151
let mut deferred_transmute_checks = self.deferred_transmute_checks.borrow_mut();
5252
debug!("FnCtxt::check_transmutes: {} deferred checks", deferred_transmute_checks.len());
53-
for (from, to, span) in deferred_transmute_checks.drain(..) {
54-
self.check_transmute(span, from, to);
53+
for (from, to, hir_id) in deferred_transmute_checks.drain(..) {
54+
self.check_transmute(from, to, hir_id);
5555
}
5656
}
5757

compiler/rustc_hir_analysis/src/check/inherited.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ pub struct Inherited<'a, 'tcx> {
5555

5656
pub(super) deferred_cast_checks: RefCell<Vec<super::cast::CastCheck<'tcx>>>,
5757

58-
pub(super) deferred_transmute_checks: RefCell<Vec<(Ty<'tcx>, Ty<'tcx>, Span)>>,
58+
pub(super) deferred_transmute_checks: RefCell<Vec<(Ty<'tcx>, Ty<'tcx>, hir::HirId)>>,
5959

6060
pub(super) deferred_asm_checks: RefCell<Vec<(&'tcx hir::InlineAsm<'tcx>, hir::HirId)>>,
6161

compiler/rustc_hir_analysis/src/check/intrinsicck.rs

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use hir::HirId;
12
use rustc_ast::InlineAsmTemplatePiece;
23
use rustc_data_structures::fx::FxHashSet;
34
use rustc_errors::struct_span_err;
@@ -6,7 +7,7 @@ use rustc_index::vec::Idx;
67
use rustc_middle::ty::layout::{LayoutError, SizeSkeleton};
78
use rustc_middle::ty::{self, Article, FloatTy, IntTy, Ty, TyCtxt, TypeVisitable, UintTy};
89
use rustc_session::lint;
9-
use rustc_span::{Span, Symbol, DUMMY_SP};
10+
use rustc_span::{Symbol, DUMMY_SP};
1011
use rustc_target::abi::{Pointer, VariantIdx};
1112
use rustc_target::asm::{InlineAsmReg, InlineAsmRegClass, InlineAsmRegOrRegClass, InlineAsmType};
1213

@@ -40,11 +41,13 @@ fn unpack_option_like<'tcx>(tcx: TyCtxt<'tcx>, ty: Ty<'tcx>) -> Ty<'tcx> {
4041
}
4142

4243
impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
43-
pub fn check_transmute(&self, span: Span, from: Ty<'tcx>, to: Ty<'tcx>) {
44+
pub fn check_transmute(&self, from: Ty<'tcx>, to: Ty<'tcx>, hir_id: HirId) {
45+
let tcx = self.tcx;
46+
let span = tcx.hir().span(hir_id);
4447
let convert = |ty: Ty<'tcx>| {
4548
let ty = self.resolve_vars_if_possible(ty);
46-
let ty = self.tcx.normalize_erasing_regions(self.param_env, ty);
47-
(SizeSkeleton::compute(ty, self.tcx, self.param_env), ty)
49+
let ty = tcx.normalize_erasing_regions(self.param_env, ty);
50+
(SizeSkeleton::compute(ty, tcx, self.param_env), ty)
4851
};
4952
let (sk_from, from) = convert(from);
5053
let (sk_to, to) = convert(to);
@@ -57,9 +60,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
5760

5861
// Special-case transmuting from `typeof(function)` and
5962
// `Option<typeof(function)>` to present a clearer error.
60-
let from = unpack_option_like(self.tcx, from);
61-
if let (&ty::FnDef(..), SizeSkeleton::Known(size_to)) = (from.kind(), sk_to) && size_to == Pointer.size(&self.tcx) {
62-
struct_span_err!(self.tcx.sess, span, E0591, "can't transmute zero-sized type")
63+
let from = unpack_option_like(tcx, from);
64+
if let (&ty::FnDef(..), SizeSkeleton::Known(size_to)) = (from.kind(), sk_to) && size_to == Pointer.size(&tcx) {
65+
struct_span_err!(tcx.sess, span, E0591, "can't transmute zero-sized type")
6366
.note(&format!("source type: {from}"))
6467
.note(&format!("target type: {to}"))
6568
.help("cast with `as` to a pointer instead")
@@ -83,7 +86,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
8386
};
8487

8588
let mut err = struct_span_err!(
86-
self.tcx.sess,
89+
tcx.sess,
8790
span,
8891
E0512,
8992
"cannot transmute between types of different sizes, \

0 commit comments

Comments
 (0)