-
Notifications
You must be signed in to change notification settings - Fork 12.7k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fn must be const if marked with stability attribut
remove trailing newline fix: test with attribute but missing const Update compiler/rustc_passes/src/stability.rs Co-authored-by: Léo Lanteri Thauvin <leseulartichaut@gmail.com> Add test for extern functions fix: using span_help instead of span_suggestion add test for some ABIs + fmt fix Update compiler/rustc_passes/src/stability.rs Co-authored-by: Léo Lanteri Thauvin <leseulartichaut@gmail.com> Refractor and add test for `impl const` Add test to make sure no output + cleanup condition ----------------------------- remove stdcall test, failing CI test C abi is already tested in this, so it is not that useful to test another one. The tested code is blind to which specific ABI for now, as long as it's not an intrinsic one
- Loading branch information
Lamb
committed
Jul 8, 2021
1 parent
96859db
commit 07f903e
Showing
7 changed files
with
220 additions
and
7 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
#![crate_type = "lib"] | ||
#![feature(staged_api)] | ||
#![stable(feature = "foo", since = "1.0.0")] | ||
|
||
#[stable(feature = "foo", since = "1.0.0")] | ||
#[rustc_const_unstable(feature = "const_foo", issue = "none")] | ||
pub fn foo() {} | ||
//~^ ERROR attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
|
||
#[stable(feature = "bar", since = "1.0.0")] | ||
#[rustc_const_stable(feature = "const_bar", since = "1.0.0")] | ||
pub fn bar() {} | ||
//~^ ERROR attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
|
||
#[stable(feature = "potato", since = "1.0.0")] | ||
pub struct Potato; | ||
|
||
impl Potato { | ||
#[stable(feature = "salad", since = "1.0.0")] | ||
#[rustc_const_unstable(feature = "const_salad", issue = "none")] | ||
pub fn salad(&self) -> &'static str { "mmmmmm" } | ||
//~^ ERROR attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
|
||
#[stable(feature = "roasted", since = "1.0.0")] | ||
#[rustc_const_unstable(feature = "const_roasted", issue = "none")] | ||
pub fn roasted(&self) -> &'static str { "mmmmmmmmmm" } | ||
//~^ ERROR attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
} | ||
|
||
#[stable(feature = "bar", since = "1.0.0")] | ||
#[rustc_const_stable(feature = "const_bar", since = "1.0.0")] | ||
pub extern "C" fn bar_c() {} | ||
//~^ ERROR attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
|
||
#[stable(feature = "foo", since = "1.0.0")] | ||
#[rustc_const_unstable(feature = "const_foo", issue = "none")] | ||
pub extern "C" fn foo_c() {} | ||
//~^ ERROR attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
|
||
|
||
#[stable(feature = "foobar", since = "1.0.0")] | ||
#[rustc_const_unstable(feature = "foobar_const", issue = "none")] | ||
pub const fn foobar() {} | ||
|
||
#[stable(feature = "barfoo", since = "1.0.0")] | ||
#[rustc_const_stable(feature = "barfoo_const", since = "1.0.0")] | ||
pub const fn barfoo() {} |
86 changes: 86 additions & 0 deletions
86
src/test/ui/consts/rustc-const-stability-require-const.stderr
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
error: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
--> $DIR/rustc-const-stability-require-const.rs:7:1 | ||
| | ||
LL | #[rustc_const_unstable(feature = "const_foo", issue = "none")] | ||
| -------------------------------------------------------------- attribute specified here | ||
LL | pub fn foo() {} | ||
| ^^^^^^^^^^^^ | ||
| | ||
help: make the function or method const | ||
--> $DIR/rustc-const-stability-require-const.rs:7:1 | ||
| | ||
LL | pub fn foo() {} | ||
| ^^^^^^^^^^^^ | ||
|
||
error: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
--> $DIR/rustc-const-stability-require-const.rs:12:1 | ||
| | ||
LL | #[rustc_const_stable(feature = "const_bar", since = "1.0.0")] | ||
| ------------------------------------------------------------- attribute specified here | ||
LL | pub fn bar() {} | ||
| ^^^^^^^^^^^^ | ||
| | ||
help: make the function or method const | ||
--> $DIR/rustc-const-stability-require-const.rs:12:1 | ||
| | ||
LL | pub fn bar() {} | ||
| ^^^^^^^^^^^^ | ||
|
||
error: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
--> $DIR/rustc-const-stability-require-const.rs:21:5 | ||
| | ||
LL | #[rustc_const_unstable(feature = "const_salad", issue = "none")] | ||
| ---------------------------------------------------------------- attribute specified here | ||
LL | pub fn salad(&self) -> &'static str { "mmmmmm" } | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
help: make the function or method const | ||
--> $DIR/rustc-const-stability-require-const.rs:21:5 | ||
| | ||
LL | pub fn salad(&self) -> &'static str { "mmmmmm" } | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
--> $DIR/rustc-const-stability-require-const.rs:26:5 | ||
| | ||
LL | #[rustc_const_unstable(feature = "const_roasted", issue = "none")] | ||
| ------------------------------------------------------------------ attribute specified here | ||
LL | pub fn roasted(&self) -> &'static str { "mmmmmmmmmm" } | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
help: make the function or method const | ||
--> $DIR/rustc-const-stability-require-const.rs:26:5 | ||
| | ||
LL | pub fn roasted(&self) -> &'static str { "mmmmmmmmmm" } | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
--> $DIR/rustc-const-stability-require-const.rs:32:1 | ||
| | ||
LL | #[rustc_const_stable(feature = "const_bar", since = "1.0.0")] | ||
| ------------------------------------------------------------- attribute specified here | ||
LL | pub extern "C" fn bar_c() {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
help: make the function or method const | ||
--> $DIR/rustc-const-stability-require-const.rs:32:1 | ||
| | ||
LL | pub extern "C" fn bar_c() {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be `const` | ||
--> $DIR/rustc-const-stability-require-const.rs:37:1 | ||
| | ||
LL | #[rustc_const_unstable(feature = "const_foo", issue = "none")] | ||
| -------------------------------------------------------------- attribute specified here | ||
LL | pub extern "C" fn foo_c() {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
help: make the function or method const | ||
--> $DIR/rustc-const-stability-require-const.rs:37:1 | ||
| | ||
LL | pub extern "C" fn foo_c() {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: aborting due to 6 previous errors | ||
|
Oops, something went wrong.