forked from rust-lang/rust
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: add test for rust-lang#105111
Enabling a tied feature should not enable the other feature automatically. This was fixed by something in rust-lang#128796, probably rust-lang#128221 or rust-lang#128679.
- Loading branch information
Showing
6 changed files
with
75 additions
and
0 deletions.
There are no files selected for viewing
4 changes: 4 additions & 0 deletions
4
tests/ui/target-feature/tied-features-no-implication-1.paca.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,4 @@ | ||
error: the target features paca, pacg must all be either enabled or disabled together | ||
|
||
error: aborting due to 1 previous error | ||
|
4 changes: 4 additions & 0 deletions
4
tests/ui/target-feature/tied-features-no-implication-1.pacg.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,4 @@ | ||
error: the target features paca, pacg must all be either enabled or disabled together | ||
|
||
error: aborting due to 1 previous error | ||
|
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,20 @@ | ||
//@ revisions: paca pacg | ||
//@ compile-flags: --crate-type=rlib --target=aarch64-unknown-linux-gnu | ||
//@ needs-llvm-components: aarch64 | ||
//@[paca] compile-flags: -Ctarget-feature=+paca | ||
//@[paca] error-pattern: the target features paca, pacg must all be either enabled or disabled together | ||
//@[pacg] compile-flags: -Ctarget-feature=+pacg | ||
//@[paca] error-pattern: the target features paca, pacg must all be either enabled or disabled together | ||
#![feature(no_core, lang_items)] | ||
#![no_core] | ||
|
||
#[lang="sized"] | ||
trait Sized {} | ||
|
||
// In this test, demonstrate that +paca and +pacg both result in the tied feature error if there | ||
// isn't something causing an error. | ||
// See tied-features-no-implication.rs | ||
|
||
#[cfg(target_feature = "pacg")] | ||
pub unsafe fn foo() { | ||
} |
4 changes: 4 additions & 0 deletions
4
tests/ui/target-feature/tied-features-no-implication.paca.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,4 @@ | ||
error: the target features paca, pacg must all be either enabled or disabled together | ||
|
||
error: aborting due to 1 previous error | ||
|
14 changes: 14 additions & 0 deletions
14
tests/ui/target-feature/tied-features-no-implication.pacg.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,14 @@ | ||
error[E0428]: the name `foo` is defined multiple times | ||
--> $DIR/tied-features-no-implication.rs:28:1 | ||
| | ||
LL | fn foo() {} | ||
| -------- previous definition of the value `foo` here | ||
... | ||
LL | pub unsafe fn foo() { | ||
| ^^^^^^^^^^^^^^^^^^^ `foo` redefined here | ||
| | ||
= note: `foo` must be defined only once in the value namespace of this module | ||
|
||
error: aborting due to 1 previous error | ||
|
||
For more information about this error, try `rustc --explain E0428`. |
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,29 @@ | ||
//@ revisions: paca pacg | ||
//@ compile-flags: --crate-type=rlib --target=aarch64-unknown-linux-gnu | ||
//@ needs-llvm-components: aarch64 | ||
//@[paca] compile-flags: -Ctarget-feature=+paca | ||
//@[paca] error-pattern: the target features paca, pacg must all be either enabled or disabled together | ||
//@[pacg] compile-flags: -Ctarget-feature=+pacg | ||
//@[pacg] error-pattern: the name `foo` is defined multiple times | ||
#![feature(no_core, lang_items)] | ||
#![no_core] | ||
|
||
#[lang="sized"] | ||
trait Sized {} | ||
|
||
// Can't use `compile_error!` here without `core`/`std` but requiring these makes this test only | ||
// work if you have libcore built in the sysroot for `aarch64-unknown-linux-gnu`. Can't run this | ||
// test on any aarch64 platform because they all have different default available features - as | ||
// written, this test depends on `aarch64-unknown-linux-gnu` having -paca,-pacg by default. | ||
// Cause a multiple definition error instead. | ||
fn foo() {} | ||
|
||
// Enabling one of the tied features does not imply the other is enabled. | ||
// | ||
// With +paca, this multiple definition doesn't cause an error because +paca hasn't implied | ||
// +pacg. With +pacg, the multiple definition error is emitted (and the tied feature error would | ||
// be). | ||
|
||
#[cfg(target_feature = "pacg")] | ||
pub unsafe fn foo() { | ||
} |