Skip to content

Commit 9d35d68

Browse files
authored
Auto merge of #34846 - jonas-schievink:issue34839, r=eddyb
Variant Size Differences: Erase regions before computing type layout Fixes #34839
2 parents d5b9850 + d148610 commit 9d35d68

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/librustc_lint/types.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,8 @@ impl LateLintPass for VariantSizeDifferences {
698698
if gens.ty_params.is_empty() { // sizes only make sense for non-generic types
699699
let t = cx.tcx.node_id_to_type(it.id);
700700
let layout = cx.tcx.normalizing_infer_ctxt(ProjectionMode::Any).enter(|infcx| {
701-
t.layout(&infcx).unwrap_or_else(|e| {
701+
let ty = cx.tcx.erase_regions(&t);
702+
ty.layout(&infcx).unwrap_or_else(|e| {
702703
bug!("failed to get layout for `{}`: {}", t, e)
703704
})
704705
});

src/test/compile-fail/issue-34839.rs

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![feature(rustc_attrs)]
12+
#![allow(dead_code)]
13+
14+
trait RegularExpression: Sized {
15+
type Text;
16+
}
17+
18+
struct ExecNoSyncStr<'a>(&'a u8);
19+
20+
impl<'c> RegularExpression for ExecNoSyncStr<'c> {
21+
type Text = u8;
22+
}
23+
24+
struct FindCaptures<'t, R>(&'t R::Text) where R: RegularExpression, R::Text: 't;
25+
26+
enum FindCapturesInner<'r, 't> {
27+
Dynamic(FindCaptures<'t, ExecNoSyncStr<'r>>),
28+
}
29+
30+
#[rustc_error]
31+
fn main() {} //~ ERROR compilation successful

0 commit comments

Comments
 (0)