mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-26 13:01:27 +03:00
Revert performing basic const checks in typeck on stable
This commit is contained in:
@@ -921,6 +921,14 @@ pub(super) fn enforce_context_effects(
|
||||
callee_did: DefId,
|
||||
callee_args: GenericArgsRef<'tcx>,
|
||||
) {
|
||||
// FIXME(const_trait_impl): We should be enforcing these effects unconditionally.
|
||||
// This can be done as soon as we convert the standard library back to
|
||||
// using const traits, since if we were to enforce these conditions now,
|
||||
// we'd fail on basically every builtin trait call (i.e. `1 + 2`).
|
||||
if !self.tcx.features().const_trait_impl() {
|
||||
return;
|
||||
}
|
||||
|
||||
// If we have `rustc_do_not_const_check`, do not check `[const]` bounds.
|
||||
if self.has_rustc_attrs && find_attr!(self.tcx, self.body_id, RustcDoNotConstCheck) {
|
||||
return;
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
//@ known-bug: #137187
|
||||
#![feature(const_trait_impl, const_ops)]
|
||||
|
||||
use std::ops::Add;
|
||||
|
||||
const trait A where
|
||||
*const Self: const Add,
|
||||
*const Self: Add,
|
||||
{
|
||||
fn b(c: *const Self) -> <*const Self as Add>::Output {
|
||||
c + c
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
||||
@@ -42,8 +42,6 @@ fn for_never_type() -> ! {
|
||||
// that it's readable
|
||||
fn for_in_arg(a: &[(); for x in 0..2 {}]) -> bool {
|
||||
//~^ ERROR mismatched types
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
true
|
||||
}
|
||||
|
||||
@@ -88,8 +86,6 @@ fn loop_() -> bool {
|
||||
const C: i32 = {
|
||||
for i in 0.. {
|
||||
//~^ ERROR mismatched types
|
||||
//~| ERROR `std::ops::RangeFrom<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::RangeFrom<{integer}>: const Iterator` is not satisfied
|
||||
}
|
||||
};
|
||||
|
||||
@@ -97,8 +93,6 @@ fn main() {
|
||||
let _ = [10; {
|
||||
for i in 0..5 {
|
||||
//~^ ERROR mismatched types
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
}
|
||||
}];
|
||||
|
||||
@@ -111,6 +105,4 @@ fn main() {
|
||||
|
||||
let _ = |a: &[(); for x in 0..2 {}]| {};
|
||||
//~^ ERROR mismatched types
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
warning: denote infinite loops with `loop { ... }`
|
||||
--> $DIR/coerce-loop-issue-122561.rs:51:5
|
||||
--> $DIR/coerce-loop-issue-122561.rs:49:5
|
||||
|
|
||||
LL | while true {
|
||||
| ^^^^^^^^^^ help: use `loop`
|
||||
@@ -7,30 +7,11 @@ LL | while true {
|
||||
= note: `#[warn(while_true)]` on by default
|
||||
|
||||
warning: denote infinite loops with `loop { ... }`
|
||||
--> $DIR/coerce-loop-issue-122561.rs:75:5
|
||||
--> $DIR/coerce-loop-issue-122561.rs:73:5
|
||||
|
|
||||
LL | while true {
|
||||
| ^^^^^^^^^^ help: use `loop`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:43:33
|
||||
|
|
||||
LL | fn for_in_arg(a: &[(); for x in 0..2 {}]) -> bool {
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:43:33
|
||||
|
|
||||
LL | fn for_in_arg(a: &[(); for x in 0..2 {}]) -> bool {
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:43:24
|
||||
|
|
||||
@@ -131,7 +112,7 @@ LL | fn for_single_line() -> bool { for i in 0.. { return false; } /* `bool` val
|
||||
| ++++++++++++++++++
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:51:5
|
||||
--> $DIR/coerce-loop-issue-122561.rs:49:5
|
||||
|
|
||||
LL | fn while_inifinite() -> bool {
|
||||
| ---- expected `bool` because of return type
|
||||
@@ -150,7 +131,7 @@ LL + /* `bool` value */
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:60:5
|
||||
--> $DIR/coerce-loop-issue-122561.rs:58:5
|
||||
|
|
||||
LL | fn while_finite() -> bool {
|
||||
| ---- expected `bool` because of return type
|
||||
@@ -170,7 +151,7 @@ LL + /* `bool` value */
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:68:5
|
||||
--> $DIR/coerce-loop-issue-122561.rs:66:5
|
||||
|
|
||||
LL | fn while_zero_times() -> bool {
|
||||
| ---- expected `bool` because of return type
|
||||
@@ -188,7 +169,7 @@ LL + /* `bool` value */
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:75:5
|
||||
--> $DIR/coerce-loop-issue-122561.rs:73:5
|
||||
|
|
||||
LL | fn while_never_type() -> ! {
|
||||
| - expected `!` because of return type
|
||||
@@ -206,30 +187,11 @@ LL ~ }
|
||||
LL + /* `loop {}` or `panic!("...")` */
|
||||
|
|
||||
|
||||
error[E0277]: the trait bound `std::ops::RangeFrom<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:89:14
|
||||
|
|
||||
LL | for i in 0.. {
|
||||
| ^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::RangeFrom<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::RangeFrom<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:89:14
|
||||
|
|
||||
LL | for i in 0.. {
|
||||
| ^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:89:5
|
||||
--> $DIR/coerce-loop-issue-122561.rs:87:5
|
||||
|
|
||||
LL | / for i in 0.. {
|
||||
... |
|
||||
LL | |
|
||||
LL | | }
|
||||
| |_____^ expected `i32`, found `()`
|
||||
|
|
||||
@@ -240,30 +202,11 @@ LL ~ }
|
||||
LL + /* `i32` value */
|
||||
|
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:98:18
|
||||
|
|
||||
LL | for i in 0..5 {
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:98:18
|
||||
|
|
||||
LL | for i in 0..5 {
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:98:9
|
||||
--> $DIR/coerce-loop-issue-122561.rs:94:9
|
||||
|
|
||||
LL | / for i in 0..5 {
|
||||
... |
|
||||
LL | |
|
||||
LL | | }
|
||||
| |_________^ expected `usize`, found `()`
|
||||
|
|
||||
@@ -275,7 +218,7 @@ LL + /* `usize` value */
|
||||
|
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:106:9
|
||||
--> $DIR/coerce-loop-issue-122561.rs:100:9
|
||||
|
|
||||
LL | / while false {
|
||||
LL | |
|
||||
@@ -289,27 +232,8 @@ LL ~ }
|
||||
LL + /* `usize` value */
|
||||
|
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:112:32
|
||||
|
|
||||
LL | let _ = |a: &[(); for x in 0..2 {}]| {};
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/coerce-loop-issue-122561.rs:112:32
|
||||
|
|
||||
LL | let _ = |a: &[(); for x in 0..2 {}]| {};
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/coerce-loop-issue-122561.rs:112:23
|
||||
--> $DIR/coerce-loop-issue-122561.rs:106:23
|
||||
|
|
||||
LL | let _ = |a: &[(); for x in 0..2 {}]| {};
|
||||
| ^^^^^^^^^^^^^^^^ expected `usize`, found `()`
|
||||
@@ -320,7 +244,6 @@ help: consider returning a value here
|
||||
LL | let _ = |a: &[(); for x in 0..2 {} /* `usize` value */]| {};
|
||||
| +++++++++++++++++++
|
||||
|
||||
error: aborting due to 22 previous errors; 2 warnings emitted
|
||||
error: aborting due to 14 previous errors; 2 warnings emitted
|
||||
|
||||
Some errors have detailed explanations: E0277, E0308.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
||||
@@ -1,23 +1,18 @@
|
||||
error[E0277]: pointers cannot be reliably compared during const eval
|
||||
error: pointers cannot be reliably compared during const eval
|
||||
--> $DIR/const_raw_ptr_ops.rs:7:26
|
||||
|
|
||||
LL | const X: bool = unsafe { &1 as *const i32 == &2 as *const i32 };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: trait `PartialEq` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
= note: see issue #53020 <https://github.com/rust-lang/rust/issues/53020> for more information
|
||||
|
||||
error[E0277]: pointers cannot be reliably compared during const eval
|
||||
error: pointers cannot be reliably compared during const eval
|
||||
--> $DIR/const_raw_ptr_ops.rs:9:27
|
||||
|
|
||||
LL | const X2: bool = unsafe { 42 as *const i32 == 43 as *const i32 };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: trait `PartialEq` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
= note: see issue #53020 <https://github.com/rust-lang/rust/issues/53020> for more information
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
const fn f(x: usize) -> usize {
|
||||
let mut sum = 0;
|
||||
for i in 0..x {
|
||||
//~^ ERROR `std::ops::Range<usize>: [const] Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::Range<usize>: [const] Iterator` is not satisfied
|
||||
//~^ ERROR cannot use `for`
|
||||
//~| ERROR cannot use `for`
|
||||
sum += i;
|
||||
}
|
||||
sum
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
error[E0277]: the trait bound `std::ops::Range<usize>: [const] Iterator` is not satisfied
|
||||
--> $DIR/const-fn-error.rs:5:14
|
||||
|
|
||||
LL | for i in 0..x {
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<usize>` to implement `[const] IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<usize>: [const] Iterator` is not satisfied
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<usize>` in constant functions
|
||||
--> $DIR/const-fn-error.rs:5:14
|
||||
|
|
||||
LL | for i in 0..x {
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<usize>` in constant functions
|
||||
--> $DIR/const-fn-error.rs:5:14
|
||||
|
|
||||
LL | for i in 0..x {
|
||||
| ^^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
const _: () = {
|
||||
for _ in 0..5 {}
|
||||
//~^ ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~^ ERROR cannot use `for`
|
||||
//~| ERROR cannot use `for`
|
||||
};
|
||||
|
||||
fn main() {}
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/const-for-feature-gate.rs:4:14
|
||||
|
|
||||
LL | for _ in 0..5 {}
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/const-for-feature-gate.rs:4:14
|
||||
|
|
||||
LL | for _ in 0..5 {}
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/const-for-feature-gate.rs:4:14
|
||||
|
|
||||
LL | for _ in 0..5 {}
|
||||
| ^^^^
|
||||
|
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
const _: () = {
|
||||
for _ in 0..5 {}
|
||||
//~^ ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~^ ERROR cannot use `for`
|
||||
//~| ERROR cannot use `for`
|
||||
};
|
||||
|
||||
fn main() {}
|
||||
|
||||
@@ -1,22 +1,20 @@
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/const-for.rs:4:14
|
||||
|
|
||||
LL | for _ in 0..5 {}
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/const-for.rs:4:14
|
||||
|
|
||||
LL | for _ in 0..5 {}
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/const-for.rs:4:14
|
||||
|
|
||||
LL | for _ in 0..5 {}
|
||||
| ^^^^
|
||||
|
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -51,14 +51,14 @@ fn main() {
|
||||
let mut x = 0;
|
||||
|
||||
for i in 0..4 {
|
||||
//~^ ERROR: `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR: `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~^ ERROR: cannot use `for`
|
||||
//~| ERROR: cannot use `for`
|
||||
x += i;
|
||||
}
|
||||
|
||||
for i in 0..4 {
|
||||
//~^ ERROR: `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR: `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~^ ERROR: cannot use `for`
|
||||
//~| ERROR: cannot use `for`
|
||||
x += i;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,41 +1,37 @@
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/loop.rs:53:14
|
||||
|
|
||||
LL | for i in 0..4 {
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/loop.rs:53:14
|
||||
|
|
||||
LL | for i in 0..4 {
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/loop.rs:59:14
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/loop.rs:53:14
|
||||
|
|
||||
LL | for i in 0..4 {
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/loop.rs:59:14
|
||||
|
|
||||
LL | for i in 0..4 {
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot use `for` loop on `std::ops::Range<i32>` in constants
|
||||
--> $DIR/loop.rs:59:14
|
||||
|
|
||||
LL | for i in 0..4 {
|
||||
| ^^^^
|
||||
|
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
error[E0277]: pointers cannot be reliably compared during const eval
|
||||
error: pointers cannot be reliably compared during const eval
|
||||
--> $DIR/different-fn-ptr-binders-during-ctfe.rs:5:5
|
||||
|
|
||||
LL | x == y
|
||||
| ^^^^^^
|
||||
|
|
||||
note: trait `PartialEq` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
= note: see issue #53020 <https://github.com/rust-lang/rust/issues/53020> for more information
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
error[E0277]: pointers cannot be reliably compared during const eval
|
||||
error: pointers cannot be reliably compared during const eval
|
||||
--> $DIR/issue-25826.rs:3:30
|
||||
|
|
||||
LL | const A: bool = unsafe { id::<u8> as *const () < id::<u16> as *const () };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: trait `PartialOrd` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/ptr/const_ptr.rs:LL:COL
|
||||
= note: see issue #53020 <https://github.com/rust-lang/rust/issues/53020> for more information
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
||||
@@ -1,13 +1,10 @@
|
||||
error[E0277]: pointers cannot be reliably compared during const eval
|
||||
error: pointers cannot be reliably compared during const eval
|
||||
--> $DIR/cmp_fn_pointers.rs:2:14
|
||||
|
|
||||
LL | unsafe { x == y }
|
||||
| ^^^^^^
|
||||
|
|
||||
note: trait `PartialEq` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||
= note: see issue #53020 <https://github.com/rust-lang/rust/issues/53020> for more information
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
||||
@@ -8,9 +8,7 @@
|
||||
const _: () = {
|
||||
let x = X;
|
||||
x == x;
|
||||
//~^ ERROR: their message
|
||||
//~| NOTE: their label
|
||||
//~| NOTE: trait `PartialEq` is implemented but not `const`
|
||||
//~| NOTE: their note
|
||||
//~| NOTE: their other note
|
||||
//~^ ERROR: cannot call non-const operator in constants
|
||||
//~| NOTE: impl defined here, but it is not `const`
|
||||
//~| NOTE: limited to constant functions
|
||||
};
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
error[E0277]: their message
|
||||
error[E0015]: cannot call non-const operator in constants
|
||||
--> $DIR/it_works_foreign.rs:10:5
|
||||
|
|
||||
LL | x == x;
|
||||
| ^^^^^^ their label
|
||||
| ^^^^^^
|
||||
|
|
||||
note: trait `PartialEq` is implemented but not `const`
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/auxiliary/non_const_impl.rs:11:1
|
||||
|
|
||||
LL | impl PartialEq for X {
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= note: their note
|
||||
= note: their other note
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
note = "my other note"
|
||||
)]
|
||||
impl PartialEq for X {
|
||||
//~^ NOTE: impl defined here, but it is not `const`
|
||||
fn eq(&self, _other: &X) -> bool {
|
||||
true
|
||||
}
|
||||
@@ -18,8 +19,6 @@ fn eq(&self, _other: &X) -> bool {
|
||||
const _: () = {
|
||||
let x = X;
|
||||
x == x;
|
||||
//~^ ERROR: my message
|
||||
//~| NOTE: my label
|
||||
//~| NOTE: my note
|
||||
//~| NOTE: my other note
|
||||
//~^ ERROR: cannot call non-const operator in constants
|
||||
//~| NOTE: limited to constant functions
|
||||
};
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
error[E0277]: my message
|
||||
--> $DIR/it_works_local.rs:20:5
|
||||
error[E0015]: cannot call non-const operator in constants
|
||||
--> $DIR/it_works_local.rs:21:5
|
||||
|
|
||||
LL | x == x;
|
||||
| ^^^^^^ my label
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: my note
|
||||
= note: my other note
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/it_works_local.rs:12:1
|
||||
|
|
||||
LL | impl PartialEq for X {
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
const fn foo() {
|
||||
Foo == Foo;
|
||||
//~^ ERROR: the trait bound `Foo: [const] PartialEq` is not satisfied
|
||||
//~^ ERROR: cannot call non-const operator in constant functions
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
error[E0277]: the trait bound `Foo: [const] PartialEq` is not satisfied
|
||||
error[E0015]: cannot call non-const operator in constant functions
|
||||
--> $DIR/feature-gate-diagnostic-on-const.rs:12:5
|
||||
|
|
||||
LL | Foo == Foo;
|
||||
| ^^^^^^^^^^
|
||||
|
|
||||
note: trait `PartialEq` is implemented but not `const`
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/auxiliary/diagnostic-on-const.rs:4:1
|
||||
|
|
||||
LL | impl PartialEq for Foo {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -2,6 +2,4 @@
|
||||
fn main() {
|
||||
|y: Vec<[(); for x in 0..2 {}]>| {};
|
||||
//~^ ERROR mismatched types
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
}
|
||||
|
||||
@@ -1,22 +1,3 @@
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/for-loop-in-vec-type-mismatchrs-50585.rs:3:27
|
||||
|
|
||||
LL | |y: Vec<[(); for x in 0..2 {}]>| {};
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/for-loop-in-vec-type-mismatchrs-50585.rs:3:27
|
||||
|
|
||||
LL | |y: Vec<[(); for x in 0..2 {}]>| {};
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/for-loop-in-vec-type-mismatchrs-50585.rs:3:18
|
||||
|
|
||||
@@ -29,7 +10,6 @@ help: consider returning a value here
|
||||
LL | |y: Vec<[(); for x in 0..2 {} /* `usize` value */]>| {};
|
||||
| +++++++++++++++++++
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
Some errors have detailed explanations: E0277, E0308.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
|
||||
@@ -9,6 +9,6 @@ fn main() {
|
||||
//~^ WARN denote infinite loops with
|
||||
|
||||
[(); { for _ in 0usize.. {}; 0}];
|
||||
//~^ ERROR `std::ops::RangeFrom<usize>: const Iterator` is not satisfied
|
||||
//~| ERROR `std::ops::RangeFrom<usize>: const Iterator` is not satisfied
|
||||
//~^ ERROR cannot use `for`
|
||||
//~| ERROR cannot use `for`
|
||||
}
|
||||
|
||||
@@ -32,26 +32,24 @@ help: give the `break` a value of the expected type
|
||||
LL | [(); loop { break 42 }];
|
||||
| ++
|
||||
|
||||
error[E0277]: the trait bound `std::ops::RangeFrom<usize>: const Iterator` is not satisfied
|
||||
--> $DIR/loop-in-array-length.rs:11:21
|
||||
|
|
||||
LL | [(); { for _ in 0usize.. {}; 0}];
|
||||
| ^^^^^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::RangeFrom<usize>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::RangeFrom<usize>: const Iterator` is not satisfied
|
||||
error[E0015]: cannot use `for` loop on `std::ops::RangeFrom<usize>` in constants
|
||||
--> $DIR/loop-in-array-length.rs:11:21
|
||||
|
|
||||
LL | [(); { for _ in 0usize.. {}; 0}];
|
||||
| ^^^^^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot use `for` loop on `std::ops::RangeFrom<usize>` in constants
|
||||
--> $DIR/loop-in-array-length.rs:11:21
|
||||
|
|
||||
LL | [(); { for _ in 0usize.. {}; 0}];
|
||||
| ^^^^^^^^
|
||||
|
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||
|
||||
error: aborting due to 4 previous errors; 1 warning emitted
|
||||
|
||||
Some errors have detailed explanations: E0277, E0308.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
Some errors have detailed explanations: E0015, E0308.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -9,8 +9,9 @@
|
||||
impl Foo {
|
||||
const fn get<R: Deref<Target = Self>>(self: R) -> u32 {
|
||||
//~^ ERROR invalid generic `self` parameter type
|
||||
//~| ERROR destructor of `R` cannot be evaluated at compile-time
|
||||
self.0
|
||||
//~^ ERROR the trait bound `R: [const] Deref` is not satisfied
|
||||
//~^ ERROR cannot perform non-const deref coercion on `R` in constant functions
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
error[E0277]: the trait bound `R: [const] Deref` is not satisfied
|
||||
--> $DIR/arbitrary-self-from-method-substs-ice.rs:12:9
|
||||
error[E0015]: cannot perform non-const deref coercion on `R` in constant functions
|
||||
--> $DIR/arbitrary-self-from-method-substs-ice.rs:13:9
|
||||
|
|
||||
LL | self.0
|
||||
| ^^^^
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: attempting to deref into `Foo`
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0493]: destructor of `R` cannot be evaluated at compile-time
|
||||
--> $DIR/arbitrary-self-from-method-substs-ice.rs:10:43
|
||||
|
|
||||
LL | const fn get<R: Deref<Target = Self>>(self: R) -> u32 {
|
||||
| ^^^^ the destructor for this type cannot be evaluated in constant functions
|
||||
...
|
||||
LL | }
|
||||
| - value is dropped here
|
||||
|
||||
error[E0801]: invalid generic `self` parameter type: `R`
|
||||
--> $DIR/arbitrary-self-from-method-substs-ice.rs:10:49
|
||||
@@ -13,7 +25,7 @@ LL | const fn get<R: Deref<Target = Self>>(self: R) -> u32 {
|
||||
= note: type of `self` must not be a method generic parameter type
|
||||
= help: use a concrete type such as `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0277, E0801.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
Some errors have detailed explanations: E0015, E0493, E0801.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
struct B;
|
||||
|
||||
static S: &'static B = &A;
|
||||
//~^ ERROR the trait bound `A: const Deref` is not satisfied
|
||||
//~^ ERROR cannot perform non-const deref coercion
|
||||
|
||||
use std::ops::Deref;
|
||||
|
||||
|
||||
@@ -1,14 +1,23 @@
|
||||
error[E0277]: the trait bound `A: const Deref` is not satisfied
|
||||
error[E0015]: cannot perform non-const deref coercion on `A` in statics
|
||||
--> $DIR/static-ref-deref-non-const-trait.rs:6:24
|
||||
|
|
||||
LL | static S: &'static B = &A;
|
||||
| ^^
|
||||
|
|
||||
help: make the `impl` of trait `Deref` `const`
|
||||
= note: attempting to deref into `B`
|
||||
note: deref defined here
|
||||
--> $DIR/static-ref-deref-non-const-trait.rs:12:5
|
||||
|
|
||||
LL | impl const Deref for A {
|
||||
| +++++
|
||||
LL | type Target = B;
|
||||
| ^^^^^^^^^^^
|
||||
note: impl defined here, but it is not `const`
|
||||
--> $DIR/static-ref-deref-non-const-trait.rs:11:1
|
||||
|
|
||||
LL | impl Deref for A {
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
= note: calls in statics are limited to constant functions, tuple structs and tuple variants
|
||||
= note: consider wrapping this expression in `std::sync::LazyLock::new(|| ...)`
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -10,6 +10,6 @@ fn default() -> A {
|
||||
|
||||
#[derive_const(Default)]
|
||||
pub struct S(A);
|
||||
//~^ ERROR: `A: [const] Default` is not satisfied
|
||||
//~^ ERROR: cannot call non-const associated function
|
||||
|
||||
fn main() {}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
error[E0277]: the trait bound `A: [const] Default` is not satisfied
|
||||
error[E0015]: cannot call non-const associated function `<A as Default>::default` in constant functions
|
||||
--> $DIR/derive-const-non-const-type.rs:12:14
|
||||
|
|
||||
LL | #[derive_const(Default)]
|
||||
@@ -6,11 +6,8 @@ LL | #[derive_const(Default)]
|
||||
LL | pub struct S(A);
|
||||
| ^
|
||||
|
|
||||
help: make the `impl` of trait `Default` `const`
|
||||
|
|
||||
LL | impl const Default for A {
|
||||
| +++++
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
For more information about this error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -17,9 +17,10 @@ fn non_const_context() {
|
||||
const fn const_context() {
|
||||
#[cfg(any(stocknc, gatednc))]
|
||||
NonConst.func();
|
||||
//[stocknc,gatednc]~^ ERROR: the trait bound
|
||||
//[stocknc]~^ ERROR: cannot call
|
||||
//[gatednc]~^^ ERROR: the trait bound
|
||||
Const.func();
|
||||
//[stock]~^ ERROR: cannot call
|
||||
//[stock,stocknc]~^ ERROR: cannot call
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
error[E0658]: cannot call conditionally-const method `<cross_crate::Const as cross_crate::MyTrait>::func` in constant functions
|
||||
--> $DIR/cross-crate.rs:21:11
|
||||
--> $DIR/cross-crate.rs:22:11
|
||||
|
|
||||
LL | Const.func();
|
||||
| ^^^^^^
|
||||
|
||||
@@ -1,15 +1,23 @@
|
||||
error[E0277]: the trait bound `cross_crate::NonConst: [const] cross_crate::MyTrait` is not satisfied
|
||||
error[E0015]: cannot call non-const method `<cross_crate::NonConst as cross_crate::MyTrait>::func` in constant functions
|
||||
--> $DIR/cross-crate.rs:19:14
|
||||
|
|
||||
LL | NonConst.func();
|
||||
| ^^^^
|
||||
| ^^^^^^
|
||||
|
|
||||
note: trait `MyTrait` is implemented but not `const`
|
||||
--> $DIR/auxiliary/cross-crate.rs:11:1
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0658]: cannot call conditionally-const method `<cross_crate::Const as cross_crate::MyTrait>::func` in constant functions
|
||||
--> $DIR/cross-crate.rs:22:11
|
||||
|
|
||||
LL | impl MyTrait for NonConst {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
LL | Const.func();
|
||||
| ^^^^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
= note: see issue #143874 <https://github.com/rust-lang/rust/issues/143874> for more information
|
||||
= help: add `#![feature(const_trait_impl)]` to the crate attributes to enable
|
||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
Some errors have detailed explanations: E0015, E0658.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -83,13 +83,15 @@ help: enable `#![feature(const_trait_impl)]` in your crate and mark `Bar` as `co
|
||||
LL | #[cfg(any(yyn, ynn, nyn, nnn))] const trait Bar: [const] Foo {}
|
||||
| +++++
|
||||
|
||||
error[E0277]: the trait bound `T: [const] Foo` is not satisfied
|
||||
error[E0015]: cannot call non-const method `<T as Foo>::a` in constant functions
|
||||
--> $DIR/super-traits-fail-3.rs:38:7
|
||||
|
|
||||
LL | x.a();
|
||||
| ^
|
||||
| ^^^
|
||||
|
|
||||
= note: calls in constant functions are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 9 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0277, E0658.
|
||||
For more information about an error, try `rustc --explain E0277`.
|
||||
Some errors have detailed explanations: E0015, E0658.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
|
||||
@@ -36,8 +36,8 @@ const fn foo<T: [const] Bar>(x: &T) {
|
||||
//[yyn,ynn,nyn,nnn]~| ERROR: `[const]` can only be applied to `const` traits
|
||||
//[nyy,nyn,nny,nnn]~^^^ ERROR: const trait impls are experimental
|
||||
x.a();
|
||||
//[yyn,nyn]~^ ERROR: the trait bound `T: [const] Foo` is not satisfied
|
||||
//[ynn,yny,nny,nnn]~^^ ERROR: cannot call non-const method `<T as Foo>::a` in constant functions
|
||||
//[yyn]~^ ERROR: the trait bound `T: [const] Foo` is not satisfied
|
||||
//[ynn,yny,nny,nnn,nyn]~^^ ERROR: cannot call non-const method `<T as Foo>::a` in constant functions
|
||||
//[nyy]~^^^ ERROR: cannot call conditionally-const method `<T as Foo>::a` in constant functions
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,4 @@
|
||||
fn main() {
|
||||
Vec::<[(); 1 + for x in 0..1 {}]>::new();
|
||||
//~^ ERROR cannot add
|
||||
//~| ERROR const Iterator` is not satisfied
|
||||
//~| ERROR const Iterator` is not satisfied
|
||||
}
|
||||
|
||||
@@ -1,22 +1,3 @@
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/for-in-const-eval.rs:3:29
|
||||
|
|
||||
LL | Vec::<[(); 1 + for x in 0..1 {}]>::new();
|
||||
| ^^^^ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
= note: required for `std::ops::Range<{integer}>` to implement `const IntoIterator`
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/for-in-const-eval.rs:3:29
|
||||
|
|
||||
LL | Vec::<[(); 1 + for x in 0..1 {}]>::new();
|
||||
| ^^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
|
||||
error[E0277]: cannot add `()` to `{integer}`
|
||||
--> $DIR/for-in-const-eval.rs:3:18
|
||||
|
|
||||
@@ -35,6 +16,6 @@ LL | Vec::<[(); 1 + for x in 0..1 {}]>::new();
|
||||
`&f64` implements `Add`
|
||||
and 56 others
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0277`.
|
||||
|
||||
@@ -239,5 +239,5 @@ fn evens_squared(n: usize) -> _ {
|
||||
|
||||
const _: _ = (1..10).filter(|x| x % 2 == 0).map(|x| x * x);
|
||||
//~^ ERROR the placeholder
|
||||
//~| ERROR the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
//~| ERROR the trait bound `Filter<std::ops::Range<{integer}>
|
||||
//~| ERROR cannot call
|
||||
//~| ERROR cannot call
|
||||
|
||||
@@ -587,29 +587,17 @@ LL - fn evens_squared(n: usize) -> _ {
|
||||
LL + fn evens_squared(n: usize) -> impl Iterator<Item = usize> {
|
||||
|
|
||||
|
||||
error[E0277]: the trait bound `std::ops::Range<{integer}>: const Iterator` is not satisfied
|
||||
--> $DIR/typeck_type_placeholder_item.rs:240:15
|
||||
|
|
||||
LL | const _: _ = (1..10).filter(|x| x % 2 == 0).map(|x| x * x);
|
||||
| ^^^^^ ------ required by a bound introduced by this call
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/range.rs:LL:COL
|
||||
|
||||
error[E0277]: the trait bound `Filter<std::ops::Range<{integer}>, {closure@$DIR/typeck_type_placeholder_item.rs:240:29: 240:32}>: const Iterator` is not satisfied
|
||||
--> $DIR/typeck_type_placeholder_item.rs:240:45
|
||||
|
|
||||
LL | const _: _ = (1..10).filter(|x| x % 2 == 0).map(|x| x * x);
|
||||
| ^^^
|
||||
|
|
||||
note: trait `Iterator` is implemented but not `const`
|
||||
--> $SRC_DIR/core/src/iter/adapters/filter.rs:LL:COL
|
||||
|
||||
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
|
||||
--> $DIR/typeck_type_placeholder_item.rs:240:10
|
||||
|
|
||||
LL | const _: _ = (1..10).filter(|x| x % 2 == 0).map(|x| x * x);
|
||||
| ^ not allowed in type signatures
|
||||
|
|
||||
note: however, the inferred type `Map<Filter<Range<i32>, {closure@typeck_type_placeholder_item.rs:240:29}>, {closure@typeck_type_placeholder_item.rs:240:49}>` cannot be named
|
||||
--> $DIR/typeck_type_placeholder_item.rs:240:14
|
||||
|
|
||||
LL | const _: _ = (1..10).filter(|x| x % 2 == 0).map(|x| x * x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
|
||||
--> $DIR/typeck_type_placeholder_item.rs:40:24
|
||||
@@ -690,7 +678,23 @@ LL | fn map<T>(_: fn() -> Option<&'static T>) -> Option<T> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot call non-const method `<std::ops::Range<i32> as Iterator>::filter::<{closure@$DIR/typeck_type_placeholder_item.rs:240:29: 240:32}>` in constants
|
||||
--> $DIR/typeck_type_placeholder_item.rs:240:22
|
||||
|
|
||||
LL | const _: _ = (1..10).filter(|x| x % 2 == 0).map(|x| x * x);
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error[E0015]: cannot call non-const method `<Filter<std::ops::Range<i32>, {closure@$DIR/typeck_type_placeholder_item.rs:240:29: 240:32}> as Iterator>::map::<i32, {closure@$DIR/typeck_type_placeholder_item.rs:240:49: 240:52}>` in constants
|
||||
--> $DIR/typeck_type_placeholder_item.rs:240:45
|
||||
|
|
||||
LL | const _: _ = (1..10).filter(|x| x % 2 == 0).map(|x| x * x);
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||
|
||||
error: aborting due to 83 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0015, E0046, E0121, E0277, E0282, E0403.
|
||||
Some errors have detailed explanations: E0015, E0046, E0121, E0282, E0403.
|
||||
For more information about an error, try `rustc --explain E0015`.
|
||||
|
||||
Reference in New Issue
Block a user