make type-check-4 asm tests about non-const expressions

This commit is contained in:
Ralf Jung 2024-09-26 20:16:40 +02:00
parent 4428a05167
commit ac2e318034
6 changed files with 22 additions and 96 deletions

View File

@ -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

View File

@ -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
View 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

View 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`.

View File

@ -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

View File

@ -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`.