Skip to content

Commit 4fbac29

Browse files
Rollup merge of #87179 - fee1-dead:active-const-impl, r=oli-obk
Mark `const_trait_impl` as active See [this zulip thread](https://rust-lang.zulipchat.com/#narrow/stream/146212-t-compiler.2Fconst-eval/topic/implementation.20path.20for.20const.20trait.20impls). r? ``@oli-obk``
2 parents 7c5cabe + 8841a42 commit 4fbac29

38 files changed

+24
-47
lines changed

Diff for: compiler/rustc_feature/src/active.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@ declare_features! (
534534
(active, bindings_after_at, "1.41.0", Some(65490), None),
535535

536536
/// Allows `impl const Trait for T` syntax.
537-
(incomplete, const_trait_impl, "1.42.0", Some(67792), None),
537+
(active, const_trait_impl, "1.42.0", Some(67792), None),
538538

539539
/// Allows `T: ?const Trait` syntax in bounds.
540540
(incomplete, const_trait_bound_opt_out, "1.42.0", Some(67794), None),

Diff for: src/test/ui/consts/const-float-classify.rs

-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
#![feature(const_float_bits_conv)]
66
#![feature(const_float_classify)]
77
#![feature(const_trait_impl)]
8-
#![allow(incomplete_features)]
98

109
// Don't promote
1110
const fn nop<T>(x: T) -> T { x }

Diff for: src/test/ui/consts/rustc-impl-const-stability.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// build-pass
22

33
#![crate_type = "lib"]
4-
#![allow(incomplete_features)]
54
#![feature(staged_api)]
65
#![feature(const_trait_impl)]
76
#![stable(feature = "foo", since = "1.0.0")]

Diff for: src/test/ui/rfc-2632-const-trait-impl/assoc-type.rs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
// FIXME: This test should fail since, within a const impl of `Foo`, the bound on `Foo::Bar` should
44
// require a const impl of `Add` for the associated type.
55

6-
#![allow(incomplete_features)]
76
#![feature(const_trait_impl)]
87

98
struct NonConstAdd(i32);

Diff for: src/test/ui/rfc-2632-const-trait-impl/attr-misuse.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#![feature(const_trait_impl)]
2-
#![allow(incomplete_features)]
32

43
#[default_method_body_is_const] //~ ERROR attribute should be applied
54
trait A {

Diff for: src/test/ui/rfc-2632-const-trait-impl/attr-misuse.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: attribute should be applied to a trait method with body
2-
--> $DIR/attr-misuse.rs:4:1
2+
--> $DIR/attr-misuse.rs:3:1
33
|
44
LL | #[default_method_body_is_const]
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -13,15 +13,15 @@ LL | | }
1313
| |_- not a trait method or missing a body
1414

1515
error: attribute should be applied to a trait method with body
16-
--> $DIR/attr-misuse.rs:13:1
16+
--> $DIR/attr-misuse.rs:12:1
1717
|
1818
LL | #[default_method_body_is_const]
1919
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2020
LL | fn main() {}
2121
| ------------ not a trait method or missing a body
2222

2323
error: attribute should be applied to a trait method with body
24-
--> $DIR/attr-misuse.rs:6:5
24+
--> $DIR/attr-misuse.rs:5:5
2525
|
2626
LL | #[default_method_body_is_const]
2727
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/auxiliary/cross-crate.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#![feature(const_trait_impl)]
2-
#![allow(incomplete_features)]
32

43
pub trait MyTrait {
54
fn func(self);

Diff for: src/test/ui/rfc-2632-const-trait-impl/auxiliary/staged-api.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#![feature(const_trait_impl)]
2-
#![allow(incomplete_features)]
32

43
#![feature(staged_api)]
54
#![stable(feature = "rust1", since = "1.0.0")]

Diff for: src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#![allow(incomplete_features)]
21
#![feature(const_trait_impl)]
32

43
pub trait Plus {

Diff for: src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-fail.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0015]: calls in constant functions are limited to constant functions, tuple structs and tuple variants
2-
--> $DIR/call-const-trait-method-fail.rs:25:5
2+
--> $DIR/call-const-trait-method-fail.rs:24:5
33
|
44
LL | a.plus(b)
55
| ^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/call-const-trait-method-pass.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// run-pass
22

3-
#![allow(incomplete_features)]
43
#![feature(const_trait_impl)]
54

65
struct Int(i32);

Diff for: src/test/ui/rfc-2632-const-trait-impl/call-generic-method-chain.rs

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
#![feature(const_trait_impl)]
66
#![feature(const_fn_trait_bound)]
7-
#![allow(incomplete_features)]
87

98
struct S;
109

Diff for: src/test/ui/rfc-2632-const-trait-impl/call-generic-method-nonconst.rs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// ignore-test
33

44
#![feature(const_trait_impl)]
5-
#![allow(incomplete_features)]
65

76
struct S;
87

Diff for: src/test/ui/rfc-2632-const-trait-impl/call-generic-method-pass.rs

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
#![feature(const_trait_impl)]
66
#![feature(const_fn_trait_bound)]
7-
#![allow(incomplete_features)]
87

98
struct S;
109

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#![allow(incomplete_features)]
21
#![feature(const_trait_impl)]
32

43
pub struct Int(i32);

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-and-non-const-impl.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0119]: conflicting implementations of trait `std::ops::Add` for type `i32`
2-
--> $DIR/const-and-non-const-impl.rs:6:1
2+
--> $DIR/const-and-non-const-impl.rs:5:1
33
|
44
LL | impl const std::ops::Add for i32 {
55
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -8,7 +8,7 @@ LL | impl const std::ops::Add for i32 {
88
- impl Add for i32;
99

1010
error[E0119]: conflicting implementations of trait `std::ops::Add` for type `Int`
11-
--> $DIR/const-and-non-const-impl.rs:24:1
11+
--> $DIR/const-and-non-const-impl.rs:23:1
1212
|
1313
LL | impl std::ops::Add for Int {
1414
| -------------------------- first implementation here
@@ -17,7 +17,7 @@ LL | impl const std::ops::Add for Int {
1717
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ conflicting implementation for `Int`
1818

1919
error[E0117]: only traits defined in the current crate can be implemented for arbitrary types
20-
--> $DIR/const-and-non-const-impl.rs:6:1
20+
--> $DIR/const-and-non-const-impl.rs:5:1
2121
|
2222
LL | impl const std::ops::Add for i32 {
2323
| ^^^^^^^^^^^-------------^^^^^---

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#![allow(incomplete_features)]
21
#![feature(const_trait_impl)]
32

43
struct S;

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-check-fns-in-const-impl.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0015]: calls in constant functions are limited to constant functions, tuple structs and tuple variants
2-
--> $DIR/const-check-fns-in-const-impl.rs:12:16
2+
--> $DIR/const-check-fns-in-const-impl.rs:11:16
33
|
44
LL | fn foo() { non_const() }
55
| ^^^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-default-method-bodies.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#![feature(const_trait_impl)]
22
#![feature(const_fn_trait_bound)] // FIXME is this needed?
3-
#![allow(incomplete_features)]
43

54
trait ConstDefaultFn: Sized {
65
fn b(self);

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-default-method-bodies.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0015]: calls in constant functions are limited to constant functions, tuple structs and tuple variants
2-
--> $DIR/const-default-method-bodies.rs:26:5
2+
--> $DIR/const-default-method-bodies.rs:25:5
33
|
44
LL | NonConstImpl.a();
55
| ^^^^^^^^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-impl-norecover.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#![feature(const_trait_impl)]
2-
#![allow(incomplete_features)]
32

43
struct Foo;
54

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-impl-norecover.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: expected identifier, found keyword `impl`
2-
--> $DIR/const-impl-norecover.rs:6:7
2+
--> $DIR/const-impl-norecover.rs:5:7
33
|
44
LL | const impl Foo {
55
| ^^^^ expected identifier, found keyword

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-impl-recovery.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#![feature(const_trait_impl)]
2-
#![allow(incomplete_features)]
32

43
trait Foo {}
54

Diff for: src/test/ui/rfc-2632-const-trait-impl/const-impl-recovery.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: expected identifier, found keyword `impl`
2-
--> $DIR/const-impl-recovery.rs:6:7
2+
--> $DIR/const-impl-recovery.rs:5:7
33
|
44
LL | const impl Foo for i32 {}
55
| ^^^^ expected identifier, found keyword
@@ -10,7 +10,7 @@ LL | impl const Foo for i32 {}
1010
|-- ^^^^^
1111

1212
error: expected identifier, found keyword `impl`
13-
--> $DIR/const-impl-recovery.rs:10:7
13+
--> $DIR/const-impl-recovery.rs:9:7
1414
|
1515
LL | const impl<T: Foo> Bar for T {}
1616
| ^^^^ expected identifier, found keyword

Diff for: src/test/ui/rfc-2632-const-trait-impl/cross-crate.gated.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0015]: calls in constant functions are limited to constant functions, tuple structs and tuple variants
2-
--> $DIR/cross-crate.rs:16:5
2+
--> $DIR/cross-crate.rs:15:5
33
|
44
LL | NonConst.func();
55
| ^^^^^^^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/cross-crate.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// revisions: stock gated
22
#![cfg_attr(gated, feature(const_trait_impl))]
3-
#![allow(incomplete_features)]
43

54
// aux-build: cross-crate.rs
65
extern crate cross_crate;

Diff for: src/test/ui/rfc-2632-const-trait-impl/cross-crate.stock.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
error[E0015]: calls in constant functions are limited to constant functions, tuple structs and tuple variants
2-
--> $DIR/cross-crate.rs:16:5
2+
--> $DIR/cross-crate.rs:15:5
33
|
44
LL | NonConst.func();
55
| ^^^^^^^^^^^^^^^
66

77
error[E0015]: calls in constant functions are limited to constant functions, tuple structs and tuple variants
8-
--> $DIR/cross-crate.rs:18:5
8+
--> $DIR/cross-crate.rs:17:5
99
|
1010
LL | Const.func();
1111
| ^^^^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/feature-gate.gated.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: fatal error triggered by #[rustc_error]
2-
--> $DIR/feature-gate.rs:14:1
2+
--> $DIR/feature-gate.rs:13:1
33
|
44
LL | fn main() {}
55
| ^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/feature-gate.rs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
// gate-test-const_trait_impl
33

44
#![cfg_attr(gated, feature(const_trait_impl))]
5-
#![allow(incomplete_features)]
65
#![feature(rustc_attrs)]
76

87
struct S;

Diff for: src/test/ui/rfc-2632-const-trait-impl/feature-gate.stock.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0658]: const trait impls are experimental
2-
--> $DIR/feature-gate.rs:10:6
2+
--> $DIR/feature-gate.rs:9:6
33
|
44
LL | impl const T for S {}
55
| ^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/generic-bound.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// run-pass
22

3-
#![allow(incomplete_features)]
43
#![feature(const_trait_impl)]
54
#![feature(const_fn_trait_bound)]
65

Diff for: src/test/ui/rfc-2632-const-trait-impl/hir-const-check.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
// Regression test for #69615.
22

33
#![feature(const_trait_impl)]
4-
#![allow(incomplete_features)]
54

65
pub trait MyTrait {
76
fn method(&self) -> Option<()>;

Diff for: src/test/ui/rfc-2632-const-trait-impl/hir-const-check.stderr

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0744]: `?` is not allowed in a `const fn`
2-
--> $DIR/hir-const-check.rs:12:9
2+
--> $DIR/hir-const-check.rs:11:9
33
|
44
LL | Some(())?;
55
| ^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#![feature(const_trait_impl)]
2-
#![allow(incomplete_features)]
32

43
trait Tr {
54
fn req(&self);

Diff for: src/test/ui/rfc-2632-const-trait-impl/impl-with-default-fn.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: const trait implementations may not use non-const default functions
2-
--> $DIR/impl-with-default-fn.rs:18:1
2+
--> $DIR/impl-with-default-fn.rs:17:1
33
|
44
LL | / impl const Tr for S {
55
LL | | fn req(&self) {}
@@ -9,7 +9,7 @@ LL | | }
99
= note: `prov` not implemented
1010

1111
error: const trait implementations may not use non-const default functions
12-
--> $DIR/impl-with-default-fn.rs:33:1
12+
--> $DIR/impl-with-default-fn.rs:32:1
1313
|
1414
LL | / impl const Tr for u32 {
1515
LL | | fn req(&self) {}
@@ -20,7 +20,7 @@ LL | | }
2020
= note: `prov` not implemented
2121

2222
error[E0046]: not all trait items implemented, missing: `req`
23-
--> $DIR/impl-with-default-fn.rs:27:1
23+
--> $DIR/impl-with-default-fn.rs:26:1
2424
|
2525
LL | fn req(&self);
2626
| -------------- `req` from trait

Diff for: src/test/ui/rfc-2632-const-trait-impl/stability.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#![allow(incomplete_features)]
21
#![feature(allow_internal_unstable)]
32
#![feature(const_add)]
43
#![feature(const_trait_impl)]

Diff for: src/test/ui/rfc-2632-const-trait-impl/stability.stderr

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error: trait methods cannot be stable const fn
2-
--> $DIR/stability.rs:14:5
2+
--> $DIR/stability.rs:13:5
33
|
44
LL | / fn sub(self, rhs: Self) -> Self {
55
LL | |
@@ -8,7 +8,7 @@ LL | | }
88
| |_____^
99

1010
error: `<Int as Add>::add` is not yet stable as a const fn
11-
--> $DIR/stability.rs:32:5
11+
--> $DIR/stability.rs:31:5
1212
|
1313
LL | Int(1i32) + Int(2i32)
1414
| ^^^^^^^^^^^^^^^^^^^^^

Diff for: src/test/ui/rfc-2632-const-trait-impl/syntax.rs

-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
#![feature(const_trait_bound_opt_out)]
55
#![feature(const_trait_impl)]
6-
#![allow(incomplete_features)]
76

87
// For now, this parses since an error does not occur until AST lowering.
98
impl ?const T {}

0 commit comments

Comments
 (0)