-
Notifications
You must be signed in to change notification settings - Fork 13k
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 <[email protected]> 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 <[email protected]>
- Loading branch information
1 parent
96859db
commit f3f2def
Showing
6 changed files
with
200 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,44 @@ | ||
#![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 marked `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 marked `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 marked `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 marked `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 marked `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 marked `const` | ||
|
||
|
||
#[stable(feature = "foo", since = "1.0.0")] | ||
#[rustc_const_unstable(feature = "const_foo", issue = "none")] | ||
pub extern "stdcall" fn foo_stdcall() {} | ||
//~^ ERROR attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be marked `const` |
100 changes: 100 additions & 0 deletions
100
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,100 @@ | ||
error: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be marked `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 marked `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 marked `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 marked `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 marked `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 marked `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: attributes `#[rustc_const_unstable]` and `#[rustc_const_stable]` require the function or method to be marked `const` | ||
--> $DIR/rustc-const-stability-require-const.rs:43:1 | ||
| | ||
LL | #[rustc_const_unstable(feature = "const_foo", issue = "none")] | ||
| -------------------------------------------------------------- attribute specified here | ||
LL | pub extern "stdcall" fn foo_stdcall() {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
| | ||
help: make the function or method const | ||
--> $DIR/rustc-const-stability-require-const.rs:43:1 | ||
| | ||
LL | pub extern "stdcall" fn foo_stdcall() {} | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
|
||
error: aborting due to 7 previous errors | ||
|