make type-check-4 asm tests about non-const expressions
This commit is contained in:
parent
4428a05167
commit
ac2e318034
@ -1,27 +0,0 @@
|
|||||||
//@ only-aarch64
|
|
||||||
//@ build-fail
|
|
||||||
|
|
||||||
use std::arch::global_asm;
|
|
||||||
|
|
||||||
fn main() {}
|
|
||||||
|
|
||||||
// Constants must be... constant
|
|
||||||
|
|
||||||
static mut S: i32 = 1;
|
|
||||||
const fn const_foo(x: i32) -> i32 {
|
|
||||||
x
|
|
||||||
}
|
|
||||||
const fn const_bar<T>(x: T) -> T {
|
|
||||||
x
|
|
||||||
}
|
|
||||||
global_asm!("{}", const unsafe { S });
|
|
||||||
//~^ ERROR: evaluation of constant value failed
|
|
||||||
//~| mutable global memory
|
|
||||||
global_asm!("{}", const const_foo(0));
|
|
||||||
global_asm!("{}", const const_foo(unsafe { S }));
|
|
||||||
//~^ ERROR: evaluation of constant value failed
|
|
||||||
//~| mutable global memory
|
|
||||||
global_asm!("{}", const const_bar(0));
|
|
||||||
global_asm!("{}", const const_bar(unsafe { S }));
|
|
||||||
//~^ ERROR: evaluation of constant value failed
|
|
||||||
//~| mutable global memory
|
|
@ -1,21 +0,0 @@
|
|||||||
error[E0080]: evaluation of constant value failed
|
|
||||||
--> $DIR/type-check-4.rs:17:34
|
|
||||||
|
|
|
||||||
LL | global_asm!("{}", const unsafe { S });
|
|
||||||
| ^ constant accesses mutable global memory
|
|
||||||
|
|
||||||
error[E0080]: evaluation of constant value failed
|
|
||||||
--> $DIR/type-check-4.rs:21:44
|
|
||||||
|
|
|
||||||
LL | global_asm!("{}", const const_foo(unsafe { S }));
|
|
||||||
| ^ constant accesses mutable global memory
|
|
||||||
|
|
||||||
error[E0080]: evaluation of constant value failed
|
|
||||||
--> $DIR/type-check-4.rs:25:44
|
|
||||||
|
|
|
||||||
LL | global_asm!("{}", const const_bar(unsafe { S }));
|
|
||||||
| ^ constant accesses mutable global memory
|
|
||||||
|
|
||||||
error: aborting due to 3 previous errors
|
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0080`.
|
|
11
tests/ui/asm/non-const.rs
Normal file
11
tests/ui/asm/non-const.rs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
//@ needs-asm-support
|
||||||
|
|
||||||
|
use std::arch::global_asm;
|
||||||
|
|
||||||
|
fn main() {}
|
||||||
|
|
||||||
|
// Constants must be... constant
|
||||||
|
fn non_const_fn(x: i32) -> i32 { x }
|
||||||
|
|
||||||
|
global_asm!("/* {} */", const non_const_fn(0));
|
||||||
|
//~^ERROR: cannot call non-const fn
|
11
tests/ui/asm/non-const.stderr
Normal file
11
tests/ui/asm/non-const.stderr
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
error[E0015]: cannot call non-const fn `non_const_fn` in constants
|
||||||
|
--> $DIR/non-const.rs:10:31
|
||||||
|
|
|
||||||
|
LL | global_asm!("/* {} */", const non_const_fn(0));
|
||||||
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: calls in constants are limited to constant functions, tuple structs and tuple variants
|
||||||
|
|
||||||
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0015`.
|
@ -1,27 +0,0 @@
|
|||||||
//@ only-x86_64
|
|
||||||
//@ build-fail
|
|
||||||
|
|
||||||
use std::arch::global_asm;
|
|
||||||
|
|
||||||
fn main() {}
|
|
||||||
|
|
||||||
// Constants must be... constant
|
|
||||||
|
|
||||||
static mut S: i32 = 1;
|
|
||||||
const fn const_foo(x: i32) -> i32 {
|
|
||||||
x
|
|
||||||
}
|
|
||||||
const fn const_bar<T>(x: T) -> T {
|
|
||||||
x
|
|
||||||
}
|
|
||||||
global_asm!("{}", const unsafe { S });
|
|
||||||
//~^ ERROR evaluation of constant value failed
|
|
||||||
//~| mutable global memory
|
|
||||||
global_asm!("{}", const const_foo(0));
|
|
||||||
global_asm!("{}", const const_foo(unsafe { S }));
|
|
||||||
//~^ ERROR evaluation of constant value failed
|
|
||||||
//~| mutable global memory
|
|
||||||
global_asm!("{}", const const_bar(0));
|
|
||||||
global_asm!("{}", const const_bar(unsafe { S }));
|
|
||||||
//~^ ERROR evaluation of constant value failed
|
|
||||||
//~| mutable global memory
|
|
@ -1,21 +0,0 @@
|
|||||||
error[E0080]: evaluation of constant value failed
|
|
||||||
--> $DIR/type-check-4.rs:17:34
|
|
||||||
|
|
|
||||||
LL | global_asm!("{}", const unsafe { S });
|
|
||||||
| ^ constant accesses mutable global memory
|
|
||||||
|
|
||||||
error[E0080]: evaluation of constant value failed
|
|
||||||
--> $DIR/type-check-4.rs:21:44
|
|
||||||
|
|
|
||||||
LL | global_asm!("{}", const const_foo(unsafe { S }));
|
|
||||||
| ^ constant accesses mutable global memory
|
|
||||||
|
|
||||||
error[E0080]: evaluation of constant value failed
|
|
||||||
--> $DIR/type-check-4.rs:25:44
|
|
||||||
|
|
|
||||||
LL | global_asm!("{}", const const_bar(unsafe { S }));
|
|
||||||
| ^ constant accesses mutable global memory
|
|
||||||
|
|
||||||
error: aborting due to 3 previous errors
|
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0080`.
|
|
Loading…
Reference in New Issue
Block a user