summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCamille GILLOT <gillot.camille@gmail.com>2023-05-14 12:48:32 +0000
committerCamille GILLOT <gillot.camille@gmail.com>2023-05-14 12:48:32 +0000
commit343819d33f5c4f026bbd789f87b03f932f11b0cb (patch)
treeaacd1b398175e71a5363c76a1f05aed8d598a220
parentbc888958c9e1fdde09791f15d3421bdc3b6d7d29 (diff)
downloadrust-343819d33f5c4f026bbd789f87b03f932f11b0cb.tar.gz
Revert "Validate resolution for SelfCtor too."
This reverts commit 83453408a0ce91b9e3d3ae6e7f117b1fd28b487d.
-rw-r--r--compiler/rustc_resolve/src/diagnostics.rs2
-rw-r--r--compiler/rustc_resolve/src/ident.rs5
-rw-r--r--tests/ui/self/self-ctor-inner-const.rs17
-rw-r--r--tests/ui/self/self-ctor-inner-const.stderr33
4 files changed, 2 insertions, 55 deletions
diff --git a/compiler/rustc_resolve/src/diagnostics.rs b/compiler/rustc_resolve/src/diagnostics.rs
index 6675b8ed59b..59eda9db97f 100644
--- a/compiler/rustc_resolve/src/diagnostics.rs
+++ b/compiler/rustc_resolve/src/diagnostics.rs
@@ -550,7 +550,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
let sm = self.tcx.sess.source_map();
let def_id = match outer_res {
- Res::SelfTyParam { .. } | Res::SelfCtor(_) => {
+ Res::SelfTyParam { .. } => {
err.span_label(span, "can't use `Self` here");
return err;
}
diff --git a/compiler/rustc_resolve/src/ident.rs b/compiler/rustc_resolve/src/ident.rs
index 755acdd81fe..f065c4ddd2e 100644
--- a/compiler/rustc_resolve/src/ident.rs
+++ b/compiler/rustc_resolve/src/ident.rs
@@ -1174,10 +1174,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
return Res::Err;
}
}
- Res::Def(DefKind::TyParam, _)
- | Res::SelfTyParam { .. }
- | Res::SelfTyAlias { .. }
- | Res::SelfCtor(_) => {
+ Res::Def(DefKind::TyParam, _) | Res::SelfTyParam { .. } | Res::SelfTyAlias { .. } => {
for rib in ribs {
let has_generic_params: HasGenericParams = match rib.kind {
RibKind::Normal
diff --git a/tests/ui/self/self-ctor-inner-const.rs b/tests/ui/self/self-ctor-inner-const.rs
deleted file mode 100644
index b015397a5bc..00000000000
--- a/tests/ui/self/self-ctor-inner-const.rs
+++ /dev/null
@@ -1,17 +0,0 @@
-// Verify that we ban usage of `Self` as constructor from inner items.
-
-struct S0<T>(T);
-
-impl<T> S0<T> {
- fn foo() {
- const C: S0<u8> = Self(0);
- //~^ ERROR can't use generic parameters from outer function
- fn bar() -> Self {
- //~^ ERROR can't use generic parameters from outer function
- Self(0)
- //~^ ERROR can't use generic parameters from outer function
- }
- }
-}
-
-fn main() {}
diff --git a/tests/ui/self/self-ctor-inner-const.stderr b/tests/ui/self/self-ctor-inner-const.stderr
deleted file mode 100644
index 7287c64c659..00000000000
--- a/tests/ui/self/self-ctor-inner-const.stderr
+++ /dev/null
@@ -1,33 +0,0 @@
-error[E0401]: can't use generic parameters from outer function
- --> $DIR/self-ctor-inner-const.rs:7:27
- |
-LL | const C: S0<u8> = Self(0);
- | ^^^^
- | |
- | use of generic parameter from outer function
- | can't use `Self` here
-
-error[E0401]: can't use generic parameters from outer function
- --> $DIR/self-ctor-inner-const.rs:9:21
- |
-LL | impl<T> S0<T> {
- | ---- `Self` type implicitly declared here, by this `impl`
-...
-LL | fn bar() -> Self {
- | ^^^^
- | |
- | use of generic parameter from outer function
- | use a type here instead
-
-error[E0401]: can't use generic parameters from outer function
- --> $DIR/self-ctor-inner-const.rs:11:13
- |
-LL | Self(0)
- | ^^^^
- | |
- | use of generic parameter from outer function
- | can't use `Self` here
-
-error: aborting due to 3 previous errors
-
-For more information about this error, try `rustc --explain E0401`.