Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 6 pull requests #70734

Merged
merged 17 commits into from
Apr 3, 2020
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Extend #69020 test to include reversed order.
Make sure we check the case where the generic operand comes first, in
case any future changes make this ordering matter.
jumbatm committed Apr 2, 2020
commit 0d73bb926c271f494f22818ec25984057dcdfb4d
18 changes: 18 additions & 0 deletions src/test/ui/consts/issue-69020.rs
Original file line number Diff line number Diff line change
@@ -9,9 +9,16 @@ use std::i32;

pub trait Foo {
const NEG: i32;
const GEN: i32;

const ADD: i32;
const DDA: i32;

const DIV: i32;
const VID: i32;

const OOB: i32;
const BOO: i32;
}

// These constants cannot be evaluated already (they depend on `T::N`), so
@@ -20,10 +27,21 @@ pub trait Foo {
impl<T: Foo> Foo for Vec<T> {
const NEG: i32 = -i32::MIN + T::NEG;
//~^ ERROR arithmetic operation will overflow
const GEN: i32 = T::NEG + (-i32::MIN);
//~^ ERROR arithmetic operation will overflow

const ADD: i32 = (i32::MAX+1) + T::ADD;
//~^ ERROR arithmetic operation will overflow
const DDA: i32 = T::ADD + (i32::MAX+1);
//~^ ERROR arithmetic operation will overflow

const DIV: i32 = (1/0) + T::DIV;
//~^ ERROR operation will panic
const VID: i32 = T::DIV + (1/0);
//~^ ERROR operation will panic

const OOB: i32 = [1][1] + T::OOB;
//~^ ERROR operation will panic
const BOO: i32 = T::OOB + [1][1];
//~^ ERROR operation will panic
}