Skip to content

Commit fbaf17c

Browse files
authored
Unrolled build for #150980
Rollup merge of #150980 - fix-ice-150673, r=fee1-dead Use updated indexes to build reverse map for delegation generics Fixes #150673. This was a bug that built the `param_def_id_to_index` map with indexes before the new generics were renumbered. r? @petrochenkov
2 parents 1377169 + e555d2c commit fbaf17c

File tree

3 files changed

+43
-3
lines changed

3 files changed

+43
-3
lines changed

compiler/rustc_hir_analysis/src/delegation.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,6 @@ fn build_generics<'tcx>(
135135
// }
136136
own_params.sort_by_key(|key| key.kind.is_ty_or_const());
137137

138-
let param_def_id_to_index =
139-
own_params.iter().map(|param| (param.def_id, param.index)).collect();
140-
141138
let (parent_count, has_self) = if let Some(def_id) = parent {
142139
let parent_generics = tcx.generics_of(def_id);
143140
let parent_kind = tcx.def_kind(def_id);
@@ -162,6 +159,9 @@ fn build_generics<'tcx>(
162159
}
163160
}
164161

162+
let param_def_id_to_index =
163+
own_params.iter().map(|param| (param.def_id, param.index)).collect();
164+
165165
ty::Generics {
166166
parent,
167167
parent_count,
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#![feature(fn_delegation)]
2+
#![allow(incomplete_features)]
3+
4+
mod to_reuse {
5+
pub fn foo<T>() -> T {
6+
unimplemented!()
7+
}
8+
}
9+
10+
struct S<T>(T);
11+
12+
trait Trait {
13+
reuse to_reuse::foo;
14+
}
15+
16+
impl Trait for S {
17+
//~^ ERROR: missing generics for struct `S`
18+
reuse Trait::foo;
19+
}
20+
21+
fn main() {}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
error[E0107]: missing generics for struct `S`
2+
--> $DIR/ice-issue-150673.rs:16:16
3+
|
4+
LL | impl Trait for S {
5+
| ^ expected 1 generic argument
6+
|
7+
note: struct defined here, with 1 generic parameter: `T`
8+
--> $DIR/ice-issue-150673.rs:10:8
9+
|
10+
LL | struct S<T>(T);
11+
| ^ -
12+
help: add missing generic argument
13+
|
14+
LL | impl Trait for S<T> {
15+
| +++
16+
17+
error: aborting due to 1 previous error
18+
19+
For more information about this error, try `rustc --explain E0107`.

0 commit comments

Comments
 (0)