Skip to content

Commit b5b19ab

Browse files
committed
Extend check_defs test with calls to intrinsic_name
1 parent 172a6d5 commit b5b19ab

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

tests/ui-fulldeps/stable-mir/check_defs.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ extern crate stable_mir;
1919

2020
use std::assert_matches::assert_matches;
2121
use mir::{mono::Instance, TerminatorKind::*};
22+
use stable_mir::mir::mono::InstanceKind;
2223
use rustc_smir::rustc_internal;
2324
use stable_mir::ty::{RigidTy, TyKind, Ty, UintTy};
2425
use stable_mir::*;
@@ -35,9 +36,10 @@ fn test_stable_mir() -> ControlFlow<()> {
3536
assert_eq!(main_fn.trimmed_name(), "main");
3637

3738
let instances = get_instances(main_fn.body().unwrap());
38-
assert_eq!(instances.len(), 2);
39+
assert_eq!(instances.len(), 3);
3940
test_fn(instances[0], "from_u32", "std::char::from_u32", "core");
4041
test_fn(instances[1], "Vec::<u8>::new", "std::vec::Vec::<u8>::new", "alloc");
42+
test_fn(instances[2], "ctpop::<u8>", "std::intrinsics::ctpop::<u8>", "core");
4143
test_vec_new(instances[1]);
4244
ControlFlow::Continue(())
4345
}
@@ -48,6 +50,14 @@ fn test_fn(instance: Instance, expected_trimmed: &str, expected_qualified: &str,
4850
assert_eq!(&trimmed, expected_trimmed);
4951
assert_eq!(&qualified, expected_qualified);
5052

53+
if instance.kind == InstanceKind::Intrinsic {
54+
let intrinsic = instance.intrinsic_name().unwrap();
55+
let (trimmed_base, _trimmed_args) = trimmed.split_once("::").unwrap();
56+
assert_eq!(intrinsic, trimmed_base);
57+
return;
58+
}
59+
assert!(instance.intrinsic_name().is_none());
60+
5161
let item = CrateItem::try_from(instance).unwrap();
5262
let trimmed = item.trimmed_name();
5363
let qualified = item.name();
@@ -119,10 +129,12 @@ fn generate_input(path: &str) -> std::io::Result<()> {
119129
write!(
120130
file,
121131
r#"
132+
#![feature(core_intrinsics)]
122133
123134
fn main() {{
124135
let _c = core::char::from_u32(99);
125136
let _v = Vec::<u8>::new();
137+
let _i = std::intrinsics::ctpop::<u8>(0);
126138
}}
127139
"#
128140
)?;

0 commit comments

Comments
 (0)