diff --git a/compiler/rustc_ast_passes/src/ast_validation.rs b/compiler/rustc_ast_passes/src/ast_validation.rs
index 8c9ad83608761..9bd2416b3bcfe 100644
--- a/compiler/rustc_ast_passes/src/ast_validation.rs
+++ b/compiler/rustc_ast_passes/src/ast_validation.rs
@@ -881,11 +881,6 @@ impl<'a> Visitor<'a> for AstValidator<'a> {
                         &item.vis,
                         errors::VisibilityNotPermittedNote::TraitImpl,
                     );
-                    if let TyKind::Dummy = self_ty.kind {
-                        // Abort immediately otherwise the `TyKind::Dummy` will reach HIR lowering,
-                        // which isn't allowed. Not a problem for this obscure, obsolete syntax.
-                        this.dcx().emit_fatal(errors::ObsoleteAuto { span: item.span });
-                    }
                     if let (&Unsafe::Yes(span), &ImplPolarity::Negative(sp)) = (unsafety, polarity)
                     {
                         this.dcx().emit_err(errors::UnsafeNegativeImpl {
diff --git a/compiler/rustc_parse/src/parser/item.rs b/compiler/rustc_parse/src/parser/item.rs
index 77381ef46262f..f9a4afda5d0c8 100644
--- a/compiler/rustc_parse/src/parser/item.rs
+++ b/compiler/rustc_parse/src/parser/item.rs
@@ -597,19 +597,8 @@ impl<'a> Parser<'a> {
         let has_for = self.eat_keyword(kw::For);
         let missing_for_span = self.prev_token.span.between(self.token.span);
 
-        let ty_second = if self.token == token::DotDot {
-            // We need to report this error after `cfg` expansion for compatibility reasons
-            self.bump(); // `..`, do not add it to expected tokens
-
-            // AST validation later detects this `TyKind::Dummy` and emits an
-            // error. (#121072 will hopefully remove all this special handling
-            // of the obsolete `impl Trait for ..` and then this can go away.)
-            Some(self.mk_ty(self.prev_token.span, TyKind::Dummy))
-        } else if has_for || self.token.can_begin_type() {
-            Some(self.parse_ty()?)
-        } else {
-            None
-        };
+        let ty_second =
+            if has_for || self.token.can_begin_type() { Some(self.parse_ty()?) } else { None };
 
         generics.where_clause = self.parse_where_clause()?;
 
diff --git a/src/tools/tidy/src/issues.txt b/src/tools/tidy/src/issues.txt
index 81437473b2d25..4c95bd71d00c8 100644
--- a/src/tools/tidy/src/issues.txt
+++ b/src/tools/tidy/src/issues.txt
@@ -3325,7 +3325,6 @@
 "ui/parser/issues/issue-24197.rs",
 "ui/parser/issues/issue-24375.rs",
 "ui/parser/issues/issue-24780.rs",
-"ui/parser/issues/issue-27255.rs",
 "ui/parser/issues/issue-30318.rs",
 "ui/parser/issues/issue-3036.rs",
 "ui/parser/issues/issue-31804.rs",
diff --git a/tests/ui/parser/impl-parsing.rs b/tests/ui/parser/impl-parsing.rs
index 80ce888557078..2b2746fe94915 100644
--- a/tests/ui/parser/impl-parsing.rs
+++ b/tests/ui/parser/impl-parsing.rs
@@ -2,9 +2,7 @@ impl ! {} // OK
 impl ! where u8: Copy {} // OK
 
 impl Trait Type {} //~ ERROR missing `for` in a trait impl
-impl Trait .. {} //~ ERROR missing `for` in a trait impl
 impl ?Sized for Type {} //~ ERROR expected a trait, found type
-impl ?Sized for .. {} //~ ERROR expected a trait, found type
 
 default unsafe FAIL //~ ERROR expected item, found keyword `unsafe`
 //~^ ERROR `default` is not followed by an item
diff --git a/tests/ui/parser/impl-parsing.stderr b/tests/ui/parser/impl-parsing.stderr
index a57cc075ccc90..f4a6937720ac7 100644
--- a/tests/ui/parser/impl-parsing.stderr
+++ b/tests/ui/parser/impl-parsing.stderr
@@ -4,26 +4,14 @@ error: missing `for` in a trait impl
 LL | impl Trait Type {}
    |           ^ help: add `for` here
 
-error: missing `for` in a trait impl
-  --> $DIR/impl-parsing.rs:5:11
-   |
-LL | impl Trait .. {}
-   |           ^ help: add `for` here
-
 error: expected a trait, found type
-  --> $DIR/impl-parsing.rs:6:6
+  --> $DIR/impl-parsing.rs:5:6
    |
 LL | impl ?Sized for Type {}
    |      ^^^^^^
 
-error: expected a trait, found type
-  --> $DIR/impl-parsing.rs:7:6
-   |
-LL | impl ?Sized for .. {}
-   |      ^^^^^^
-
 error: `default` is not followed by an item
-  --> $DIR/impl-parsing.rs:9:1
+  --> $DIR/impl-parsing.rs:7:1
    |
 LL | default unsafe FAIL
    | ^^^^^^^ the `default` qualifier
@@ -31,12 +19,12 @@ LL | default unsafe FAIL
    = note: only `fn`, `const`, `type`, or `impl` items may be prefixed by `default`
 
 error: expected item, found keyword `unsafe`
-  --> $DIR/impl-parsing.rs:9:9
+  --> $DIR/impl-parsing.rs:7:9
    |
 LL | default unsafe FAIL
    |         ^^^^^^ expected item
    |
    = note: for a full list of items that can appear in modules, see <https://doc.rust-lang.org/reference/items.html>
 
-error: aborting due to 6 previous errors
+error: aborting due to 4 previous errors
 
diff --git a/tests/ui/parser/issues/issue-27255.rs b/tests/ui/parser/issues/issue-27255.rs
deleted file mode 100644
index d619688e10183..0000000000000
--- a/tests/ui/parser/issues/issue-27255.rs
+++ /dev/null
@@ -1,10 +0,0 @@
-trait A {}
-
-impl A .. {}
-//~^ ERROR missing `for` in a trait impl
-//~| ERROR `impl Trait for .. {}` is an obsolete syntax
-
-impl A      usize {}
-//~^ ERROR missing `for` in a trait impl
-
-fn main() {}
diff --git a/tests/ui/parser/issues/issue-27255.stderr b/tests/ui/parser/issues/issue-27255.stderr
deleted file mode 100644
index 391a23556c4e0..0000000000000
--- a/tests/ui/parser/issues/issue-27255.stderr
+++ /dev/null
@@ -1,22 +0,0 @@
-error: missing `for` in a trait impl
-  --> $DIR/issue-27255.rs:3:7
-   |
-LL | impl A .. {}
-   |       ^ help: add `for` here
-
-error: missing `for` in a trait impl
-  --> $DIR/issue-27255.rs:7:7
-   |
-LL | impl A      usize {}
-   |       ^^^^^^ help: add `for` here
-
-error: `impl Trait for .. {}` is an obsolete syntax
-  --> $DIR/issue-27255.rs:3:1
-   |
-LL | impl A .. {}
-   | ^^^^^^^^^^^^
-   |
-   = help: use `auto trait Trait {}` instead
-
-error: aborting due to 3 previous errors
-
diff --git a/tests/ui/parser/obsolete-syntax-impl-for-dotdot.rs b/tests/ui/parser/obsolete-syntax-impl-for-dotdot.rs
deleted file mode 100644
index e928f09aa6d37..0000000000000
--- a/tests/ui/parser/obsolete-syntax-impl-for-dotdot.rs
+++ /dev/null
@@ -1,9 +0,0 @@
-trait Trait1 {}
-trait Trait2 {}
-
-#[cfg(not_enabled)]
-impl Trait1 for .. {}
-
-impl Trait2 for .. {} //~ ERROR `impl Trait for .. {}` is an obsolete syntax
-
-fn main() {}
diff --git a/tests/ui/parser/obsolete-syntax-impl-for-dotdot.stderr b/tests/ui/parser/obsolete-syntax-impl-for-dotdot.stderr
deleted file mode 100644
index d5f404bed3108..0000000000000
--- a/tests/ui/parser/obsolete-syntax-impl-for-dotdot.stderr
+++ /dev/null
@@ -1,10 +0,0 @@
-error: `impl Trait for .. {}` is an obsolete syntax
-  --> $DIR/obsolete-syntax-impl-for-dotdot.rs:7:1
-   |
-LL | impl Trait2 for .. {}
-   | ^^^^^^^^^^^^^^^^^^^^^
-   |
-   = help: use `auto trait Trait {}` instead
-
-error: aborting due to 1 previous error
-