Allow function_casts_as_integer in non-related ui tests

This commit is contained in:
Guillaume Gomez
2025-05-23 22:34:34 +02:00
parent 40be1db6b8
commit 725f4ad24b
16 changed files with 55 additions and 30 deletions
+2
View File
@@ -6,6 +6,8 @@
//@ compile-flags: -g
//@ ignore-backends: gcc
#![allow(function_casts_as_integer)]
use std::env;
use std::process::{Command, ExitStatus};
@@ -2,6 +2,8 @@
//@ build-pass
// Regression test for #56870: Internal compiler error (traits & associated consts)
#![allow(function_casts_as_integer)]
use std::fmt::Debug;
pub trait Foo<T> {
@@ -1,5 +1,8 @@
// https://github.com/rust-lang/rust/issues/54094
//@ check-pass
#![allow(function_casts_as_integer)]
trait Zoo {
type X;
}
+1 -1
View File
@@ -1,6 +1,6 @@
//@ run-pass
#![allow(dead_code)]
#![allow(dead_code, function_casts_as_integer)]
use std::vec;
@@ -1,5 +1,7 @@
//@ check-pass
#![allow(function_casts_as_integer)]
pub trait Foo {
fn foo(self) -> u32;
}
@@ -4,6 +4,8 @@
//@ normalize-stderr: "\[i8\]" -> "[i8 or u8 (arch dependant)]"
//@ normalize-stderr: "\[u8\]" -> "[i8 or u8 (arch dependant)]"
#![allow(function_casts_as_integer)]
type Foo = extern "C" fn(::std::ffi::CStr);
//~^ WARN `extern` fn uses type
extern "C" {
+2 -2
View File
@@ -1,5 +1,5 @@
warning: `extern` fn uses type `CStr`, which is not FFI-safe
--> $DIR/extern-C-non-FFI-safe-arg-ice-52334.rs:7:12
--> $DIR/extern-C-non-FFI-safe-arg-ice-52334.rs:9:12
|
LL | type Foo = extern "C" fn(::std::ffi::CStr);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not FFI-safe
@@ -9,7 +9,7 @@ LL | type Foo = extern "C" fn(::std::ffi::CStr);
= note: `#[warn(improper_ctypes_definitions)]` on by default
warning: `extern` block uses type `CStr`, which is not FFI-safe
--> $DIR/extern-C-non-FFI-safe-arg-ice-52334.rs:10:18
--> $DIR/extern-C-non-FFI-safe-arg-ice-52334.rs:12:18
|
LL | fn meh(blah: Foo);
| ^^^ not FFI-safe
+2
View File
@@ -1,5 +1,7 @@
//@ check-pass
#![allow(function_casts_as_integer)]
use std::ptr;
extern "C" fn c_fn() {}
+27 -27
View File
@@ -1,5 +1,5 @@
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:12:8
--> $DIR/ptr_null_checks.rs:14:8
|
LL | if (fn_ptr as *mut ()).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^
@@ -10,7 +10,7 @@ LL | if (fn_ptr as *mut ()).is_null() {}
= note: `#[warn(useless_ptr_null_checks)]` on by default
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:14:8
--> $DIR/ptr_null_checks.rs:16:8
|
LL | if (fn_ptr as *const u8).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^
@@ -20,7 +20,7 @@ LL | if (fn_ptr as *const u8).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:16:8
--> $DIR/ptr_null_checks.rs:18:8
|
LL | if (fn_ptr as *const ()) == std::ptr::null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -30,7 +30,7 @@ LL | if (fn_ptr as *const ()) == std::ptr::null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:18:8
--> $DIR/ptr_null_checks.rs:20:8
|
LL | if (fn_ptr as *mut ()) == std::ptr::null_mut() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -40,7 +40,7 @@ LL | if (fn_ptr as *mut ()) == std::ptr::null_mut() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:20:8
--> $DIR/ptr_null_checks.rs:22:8
|
LL | if (fn_ptr as *const ()) == (0 as *const ()) {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -50,7 +50,7 @@ LL | if (fn_ptr as *const ()) == (0 as *const ()) {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:22:8
--> $DIR/ptr_null_checks.rs:24:8
|
LL | if <*const _>::is_null(fn_ptr as *const ()) {}
| ^^^^^^^^^^^^^^^^^^^^------^^^^^^^^^^^^^^
@@ -60,7 +60,7 @@ LL | if <*const _>::is_null(fn_ptr as *const ()) {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:24:8
--> $DIR/ptr_null_checks.rs:26:8
|
LL | if (fn_ptr as *mut fn() as *const fn() as *const ()).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -70,7 +70,7 @@ LL | if (fn_ptr as *mut fn() as *const fn() as *const ()).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:26:8
--> $DIR/ptr_null_checks.rs:28:8
|
LL | if (fn_ptr as *mut fn() as *const fn()).cast_mut().is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -80,7 +80,7 @@ LL | if (fn_ptr as *mut fn() as *const fn()).cast_mut().is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:28:8
--> $DIR/ptr_null_checks.rs:30:8
|
LL | if ((fn_ptr as *mut fn()).cast() as *const fn()).cast_mut().is_null() {}
| ^^------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -90,7 +90,7 @@ LL | if ((fn_ptr as *mut fn()).cast() as *const fn()).cast_mut().is_null() {
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:30:8
--> $DIR/ptr_null_checks.rs:32:8
|
LL | if (fn_ptr as fn() as *const ()).is_null() {}
| ^--------------^^^^^^^^^^^^^^^^^^^^^^^^
@@ -100,7 +100,7 @@ LL | if (fn_ptr as fn() as *const ()).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: function pointers are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:32:8
--> $DIR/ptr_null_checks.rs:34:8
|
LL | if (c_fn as *const fn()).is_null() {}
| ^----^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -110,7 +110,7 @@ LL | if (c_fn as *const fn()).is_null() {}
= help: wrap the function pointer inside an `Option` and use `Option::is_none` to check for null pointer value
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:36:8
--> $DIR/ptr_null_checks.rs:38:8
|
LL | if (&mut 8 as *mut i32).is_null() {}
| ^------^^^^^^^^^^^^^^^^^^^^^^^
@@ -118,13 +118,13 @@ LL | if (&mut 8 as *mut i32).is_null() {}
| expression has type `&mut i32`
warning: returned pointer of `from_mut` call is never null, so checking it for null will always return false
--> $DIR/ptr_null_checks.rs:38:8
--> $DIR/ptr_null_checks.rs:40:8
|
LL | if ptr::from_mut(&mut 8).is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:40:8
--> $DIR/ptr_null_checks.rs:42:8
|
LL | if (&8 as *const i32).is_null() {}
| ^--^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -132,25 +132,25 @@ LL | if (&8 as *const i32).is_null() {}
| expression has type `&i32`
warning: returned pointer of `from_ref` call is never null, so checking it for null will always return false
--> $DIR/ptr_null_checks.rs:42:8
--> $DIR/ptr_null_checks.rs:44:8
|
LL | if ptr::from_ref(&8).is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: returned pointer of `from_ref` call is never null, so checking it for null will always return false
--> $DIR/ptr_null_checks.rs:44:8
--> $DIR/ptr_null_checks.rs:46:8
|
LL | if ptr::from_ref(&8).cast_mut().is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: returned pointer of `from_ref` call is never null, so checking it for null will always return false
--> $DIR/ptr_null_checks.rs:46:8
--> $DIR/ptr_null_checks.rs:48:8
|
LL | if (ptr::from_ref(&8).cast_mut() as *mut i32).is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:48:8
--> $DIR/ptr_null_checks.rs:50:8
|
LL | if (&8 as *const i32) == std::ptr::null() {}
| ^--^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -158,7 +158,7 @@ LL | if (&8 as *const i32) == std::ptr::null() {}
| expression has type `&i32`
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:51:8
--> $DIR/ptr_null_checks.rs:53:8
|
LL | if (ref_num as *const i32) == std::ptr::null() {}
| ^-------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -166,7 +166,7 @@ LL | if (ref_num as *const i32) == std::ptr::null() {}
| expression has type `&i32`
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:53:8
--> $DIR/ptr_null_checks.rs:55:8
|
LL | if (b"\0" as *const u8).is_null() {}
| ^-----^^^^^^^^^^^^^^^^^^^^^^^^
@@ -174,7 +174,7 @@ LL | if (b"\0" as *const u8).is_null() {}
| expression has type `&[u8; 1]`
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:55:8
--> $DIR/ptr_null_checks.rs:57:8
|
LL | if ("aa" as *const str).is_null() {}
| ^----^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -182,7 +182,7 @@ LL | if ("aa" as *const str).is_null() {}
| expression has type `&str`
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:57:8
--> $DIR/ptr_null_checks.rs:59:8
|
LL | if (&[1, 2] as *const i32).is_null() {}
| ^-------^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -190,7 +190,7 @@ LL | if (&[1, 2] as *const i32).is_null() {}
| expression has type `&[i32; 2]`
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:59:8
--> $DIR/ptr_null_checks.rs:61:8
|
LL | if (&mut [1, 2] as *mut i32) == std::ptr::null_mut() {}
| ^-----------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -198,7 +198,7 @@ LL | if (&mut [1, 2] as *mut i32) == std::ptr::null_mut() {}
| expression has type `&mut [i32; 2]`
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:61:8
--> $DIR/ptr_null_checks.rs:63:8
|
LL | if (static_i32() as *const i32).is_null() {}
| ^------------^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -206,7 +206,7 @@ LL | if (static_i32() as *const i32).is_null() {}
| expression has type `&i32`
warning: references are not nullable, so checking them for null will always return false
--> $DIR/ptr_null_checks.rs:63:8
--> $DIR/ptr_null_checks.rs:65:8
|
LL | if (&*{ static_i32() } as *const i32).is_null() {}
| ^------------------^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -214,13 +214,13 @@ LL | if (&*{ static_i32() } as *const i32).is_null() {}
| expression has type `&i32`
warning: returned pointer of `as_ptr` call is never null, so checking it for null will always return false
--> $DIR/ptr_null_checks.rs:67:8
--> $DIR/ptr_null_checks.rs:69:8
|
LL | if ptr::NonNull::new(&mut 8).unwrap().as_ptr().is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: returned pointer of `as_ptr` call is never null, so checking it for null will always return false
--> $DIR/ptr_null_checks.rs:69:8
--> $DIR/ptr_null_checks.rs:71:8
|
LL | if ptr::NonNull::<u8>::dangling().as_ptr().is_null() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+2
View File
@@ -8,6 +8,8 @@
// praying two functions go into separate codegen units and then assuming that
// if inlining *doesn't* happen the first byte of the functions will differ.
#![allow(function_casts_as_integer)]
pub fn foo() -> u32 {
bar::bar()
}
+2
View File
@@ -11,6 +11,8 @@
// praying two functions go into separate codegen units and then assuming that
// if inlining *doesn't* happen the first byte of the functions will differ.
#![allow(function_casts_as_integer)]
extern crate thin_lto_inlines_aux as bar;
pub fn foo() -> u32 {
+1
View File
@@ -1,5 +1,6 @@
//@ run-pass
#![feature(coerce_unsized, unsize)]
#![allow(function_casts_as_integer)]
use std::ops::CoerceUnsized;
use std::marker::Unsize;
+3
View File
@@ -1,4 +1,7 @@
//@ run-pass
#![allow(function_casts_as_integer)]
fn func(){}
const STR: &'static str = "hello";
+1
View File
@@ -1,6 +1,7 @@
//@ run-pass
//@ aux-build:mir_external_refs.rs
#![allow(function_casts_as_integer)]
#![allow(unpredictable_function_pointer_comparisons)]
extern crate mir_external_refs as ext;
@@ -9,6 +9,7 @@
//@ ignore-vxworks no SIGWINCH in user space
//@ ignore-nto no SA_ONSTACK
#![allow(function_casts_as_integer)]
#![feature(rustc_private)]
extern crate libc;
@@ -1,5 +1,7 @@
//@ build-pass
#![allow(function_casts_as_integer)]
trait Supertrait<T> {
fn method(&self) {}
}