Skip to content

Commit

Permalink
Bless tests now that we do promotion if min_const_fn fails
Browse files Browse the repository at this point in the history
We bailed out of `QualifyAndPromoteConsts` immediately if the
`min_const_fn` checks failed, which sometimes resulted in additional,
spurious errors since promotion was skipped.

We now do promotion in a completely separate pass, so this is no longer
an issue.
  • Loading branch information
ecstatic-morse committed Nov 8, 2019
1 parent b316384 commit b13c2c3
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 28 deletions.
1 change: 0 additions & 1 deletion src/test/ui/consts/min_const_fn/min_const_fn.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,6 @@ const fn no_rpit() -> impl std::fmt::Debug {} //~ ERROR `impl Trait` in const fn
const fn no_dyn_trait(_x: &dyn std::fmt::Debug) {} //~ ERROR trait bounds other than `Sized`
const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
//~^ ERROR trait bounds other than `Sized`
//~| ERROR cannot return reference to temporary value

const fn no_unsafe() { unsafe {} }

Expand Down
19 changes: 5 additions & 14 deletions src/test/ui/consts/min_const_fn/min_const_fn.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -286,17 +286,8 @@ LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
= help: add `#![feature(const_fn)]` to the crate attributes to enable

error[E0515]: cannot return reference to temporary value
--> $DIR/min_const_fn.rs:137:63
|
LL | const fn no_dyn_trait_ret() -> &'static dyn std::fmt::Debug { &() }
| ^--
| ||
| |temporary value created here
| returns a reference to data owned by the current function

error[E0723]: trait bounds other than `Sized` on const fn parameters are unstable
--> $DIR/min_const_fn.rs:143:41
--> $DIR/min_const_fn.rs:142:41
|
LL | const fn really_no_traits_i_mean_it() { (&() as &dyn std::fmt::Debug, ()).1 }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Expand All @@ -305,7 +296,7 @@ LL | const fn really_no_traits_i_mean_it() { (&() as &dyn std::fmt::Debug, ()).1
= help: add `#![feature(const_fn)]` to the crate attributes to enable

error[E0723]: function pointers in const fn are unstable
--> $DIR/min_const_fn.rs:146:21
--> $DIR/min_const_fn.rs:145:21
|
LL | const fn no_fn_ptrs(_x: fn()) {}
| ^^
Expand All @@ -314,15 +305,15 @@ LL | const fn no_fn_ptrs(_x: fn()) {}
= help: add `#![feature(const_fn)]` to the crate attributes to enable

error[E0723]: function pointers in const fn are unstable
--> $DIR/min_const_fn.rs:148:27
--> $DIR/min_const_fn.rs:147:27
|
LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo }
| ^^^^
|
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
= help: add `#![feature(const_fn)]` to the crate attributes to enable

error: aborting due to 37 previous errors
error: aborting due to 36 previous errors

Some errors have detailed explanations: E0493, E0515, E0723.
Some errors have detailed explanations: E0493, E0723.
For more information about an error, try `rustc --explain E0493`.
1 change: 0 additions & 1 deletion src/test/ui/consts/min_const_fn/min_const_fn_dyn.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,5 @@ const fn no_inner_dyn_trait2(x: Hide) {
}
const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
//~^ ERROR trait bounds other than `Sized`
//~| ERROR temporary value dropped while borrowed

fn main() {}
14 changes: 2 additions & 12 deletions src/test/ui/consts/min_const_fn/min_const_fn_dyn.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -16,16 +16,6 @@ LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
= note: for more information, see issue https://github.com/rust-lang/rust/issues/57563
= help: add `#![feature(const_fn)]` to the crate attributes to enable

error[E0716]: temporary value dropped while borrowed
--> $DIR/min_const_fn_dyn.rs:12:67
|
LL | const fn no_inner_dyn_trait_ret() -> Hide { Hide(HasDyn { field: &0 }) }
| -^ - temporary value is freed at the end of this statement
| ||
| |creates a temporary which is freed while still in use
| cast requires that borrow lasts for `'static`

error: aborting due to 3 previous errors
error: aborting due to 2 previous errors

Some errors have detailed explanations: E0716, E0723.
For more information about an error, try `rustc --explain E0716`.
For more information about this error, try `rustc --explain E0723`.

0 comments on commit b13c2c3

Please sign in to comment.