Clarify the usage of "hints" in const_eval.
The "hint" mechanism is essentially used as a workaround to compute types for expressions which have not yet been type-checked. This commit clarifies that usage, and limits the effects to the places where it is currently necessary. Fixes #26210.
This commit is contained in:
parent
e05ac3938b
commit
6bdfb05347
14 changed files with 194 additions and 118 deletions
|
|
@ -8,11 +8,10 @@
|
|||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
#![feature(negate_unsigned)]
|
||||
#![deny(exceeding_bitshifts)]
|
||||
#![allow(unused_variables)]
|
||||
#![allow(dead_code)]
|
||||
#![feature(num_bits_bytes, negate_unsigned)]
|
||||
#![feature(num_bits_bytes)]
|
||||
|
||||
fn main() {
|
||||
let n = 1u8 << 7;
|
||||
|
|
@ -60,4 +59,7 @@ fn main() {
|
|||
|
||||
let n = 1_isize << std::isize::BITS; //~ ERROR: bitshift exceeds the type's number of bits
|
||||
let n = 1_usize << std::usize::BITS; //~ ERROR: bitshift exceeds the type's number of bits
|
||||
|
||||
|
||||
let n = 1i8<<(1isize+-1);
|
||||
}
|
||||
|
|
|
|||
23
src/test/compile-fail/match-range-fail-2.rs
Normal file
23
src/test/compile-fail/match-range-fail-2.rs
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
|
||||
// file at the top-level directory of this distribution and at
|
||||
// http://rust-lang.org/COPYRIGHT.
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
||||
// option. This file may not be copied, modified, or distributed
|
||||
// except according to those terms.
|
||||
|
||||
fn main() {
|
||||
match 5 {
|
||||
6 ... 1 => { }
|
||||
_ => { }
|
||||
};
|
||||
//~^^^ ERROR lower range bound must be less than or equal to upper
|
||||
|
||||
match 5u64 {
|
||||
0xFFFF_FFFF_FFFF_FFFF ... 1 => { }
|
||||
_ => { }
|
||||
};
|
||||
//~^^^ ERROR lower range bound must be less than or equal to upper
|
||||
}
|
||||
|
|
@ -9,12 +9,6 @@
|
|||
// except according to those terms.
|
||||
|
||||
fn main() {
|
||||
match 5 {
|
||||
6 ... 1 => { }
|
||||
_ => { }
|
||||
};
|
||||
//~^^^ ERROR lower range bound must be less than or equal to upper
|
||||
|
||||
match "wow" {
|
||||
"bar" ... "foo" => { }
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue