Skip to content

Commit ff364b0

Browse files
authored
Rollup merge of #111557 - cjgillot:revert-111020, r=petrochenkov
Revert "Validate resolution for SelfCtor too." This reverts commit 8345340. That PR introduced a breaking change. Fixes #111541 Reopens #89868 r? `@petrochenkov`
2 parents 828caa8 + 33ec632 commit ff364b0

File tree

5 files changed

+17
-55
lines changed

5 files changed

+17
-55
lines changed

compiler/rustc_resolve/src/diagnostics.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -550,7 +550,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
550550

551551
let sm = self.tcx.sess.source_map();
552552
let def_id = match outer_res {
553-
Res::SelfTyParam { .. } | Res::SelfCtor(_) => {
553+
Res::SelfTyParam { .. } => {
554554
err.span_label(span, "can't use `Self` here");
555555
return err;
556556
}

compiler/rustc_resolve/src/ident.rs

+1-4
Original file line numberDiff line numberDiff line change
@@ -1174,10 +1174,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
11741174
return Res::Err;
11751175
}
11761176
}
1177-
Res::Def(DefKind::TyParam, _)
1178-
| Res::SelfTyParam { .. }
1179-
| Res::SelfTyAlias { .. }
1180-
| Res::SelfCtor(_) => {
1177+
Res::Def(DefKind::TyParam, _) | Res::SelfTyParam { .. } | Res::SelfTyAlias { .. } => {
11811178
for rib in ribs {
11821179
let has_generic_params: HasGenericParams = match rib.kind {
11831180
RibKind::Normal

tests/ui/self/self-ctor-inner-const.rs

-17
This file was deleted.

tests/ui/self/self-ctor-inner-const.stderr

-33
This file was deleted.

tests/ui/self/self-ctor-nongeneric.rs

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// `Self` as a constructor is currently allowed when the outer item is not generic.
2+
// check-pass
3+
4+
struct S0(usize);
5+
6+
impl S0 {
7+
fn foo() {
8+
const C: S0 = Self(0);
9+
fn bar() -> S0 {
10+
Self(0)
11+
}
12+
}
13+
}
14+
15+
fn main() {}

0 commit comments

Comments
 (0)