Skip to content

Commit dd4a99b

Browse files
committed
analyze: add "bad function calls good function" case in catch_panic test
1 parent acad7df commit dd4a99b

File tree

1 file changed

+18
-4
lines changed

1 file changed

+18
-4
lines changed

c2rust-analyze/tests/filecheck/catch_panic.rs

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,29 @@ unsafe fn bad(p: NonNull<u8>) {
1515
*p.as_ptr() = 1;
1616
}
1717

18-
// Analysis of `bad2` should also fail because it has a callee on which analysis failed.
19-
// CHECK-NOT: final labeling for "bad2"
20-
unsafe fn bad2(p: NonNull<u8>) {
18+
// Analysis of `call_bad` should also fail because it has a callee on which analysis failed.
19+
// CHECK-NOT: final labeling for "call_bad"
20+
unsafe fn call_bad(p: NonNull<u8>) {
2121
bad(p);
2222
}
2323

24+
// Analysis of this function fails, but it also calls `good`. Failures should not propagate from
25+
// caller to callee (only callee to caller), so analysis of `good` should still succeed.
26+
// CHECK-NOT: final labeling for "bad_call_good"
27+
unsafe fn bad_call_good(p: NonNull<u8>) {
28+
*p.as_ptr() = 1;
29+
good(p.as_ptr());
30+
}
31+
2432
// CHECK: analysis of DefId({{.*}}::bad) failed:
2533
// CHECK-SAME: UnknownDef
2634
// CHECK-SAME: NonNull::<u8>::as_ptr
2735

28-
// CHECK: analysis of DefId({{.*}}::bad2) failed:
36+
// CHECK: analysis of DefId({{.*}}::call_bad) failed:
2937
// CHECK-SAME: analysis failed on callee DefId({{.*}}::bad)
38+
39+
// CHECK: analysis of DefId({{.*}}::bad_call_good) failed:
40+
// CHECK-SAME: UnknownDef
41+
// CHECK-SAME: NonNull::<u8>::as_ptr
42+
43+
// CHECK: saw errors in 3 / 4 functions

0 commit comments

Comments
 (0)