Skip to content

Commit e875066

Browse files
authored
Fix UI test runner flag handling and recursive provenance resolution (#126)
This PR rewrites the UI test runner to actually respect `//@ compile-flags:` directives (previously silently ignored), and fixes a panic in provenance type resolution that crashed on nested struct fields. - Rewrite `run_ui_tests.sh`: flag-based CLI, build-once-then-invoke (eliminates cargo freshness overhead per test), arch-aware skip logic, optional `--save-debug-output` for failure triage - Add `extract_test_flags()` to both runners: parses `//@ compile-flags:`, `//@ edition:`, and `//@ rustc-env:` directives from test files - Fix `get_prov_ty` to recursively walk nested struct/tuple fields instead of requiring an exact byte-offset match at the top level - Replace panicking unwraps in `get_prov_ty` with graceful fallbacks UI test results: 19 failing -> 2 failing, 2871 passing -> 2888 passing. ## What was wrong Two independent problems, both surfaced by investigating the 19 UI test failures on the `master` branch. ### 1. Test runner ignoring compile-flags directives The UI test runners (`run_ui_tests.sh`, `remake_ui_tests.sh`) never extracted `//@ compile-flags:`, `//@ edition:`, or `//@ rustc-env:` directives from test files. Every test ran with bare `-Zno-codegen` regardless of what the test required. 17 of the 19 failures were compilation errors caused by missing flags (e.g., `--edition 2021`, `--test`, `-Zunstable-options`, `-Ccodegen-units=1`). These tests were "failing" for the wrong reason: they weren't testing stable-mir-json at all, just failing to compile. ### 2. Provenance type resolution panicking on nested structs `get_prov_ty` used `field_for_offset` (exact byte-offset match) to find which field a provenance pointer belongs to, then returned that field's type directly. This works when the pointer sits at the start of a top-level field, but breaks on nested structs. Concrete example: `TestDescAndFn` has fields at offsets 0 (`TestDesc`) and 128 (`TestFn`). A pointer at byte offset 56 sits inside `TestDesc` (which itself has a `&str` field at relative offset 56). The old code looked for a field starting at exactly offset 56 in the top-level struct, found nothing, and panicked. The fix adds `field_containing_offset` (range-based: finds the field with the largest start offset <= target) and makes the struct and tuple branches recurse into the containing field with a relative offset, walking down through the field hierarchy until reaching the actual pointer type. ## Test runner changes The rewritten `run_ui_tests.sh`: - **Flag-based CLI**: `--verbose`, `--save-generated-output`, `--save-debug-output` replace positional args and env vars - **Build once**: runs `cargo build` upfront, then invokes the binary directly with proper `DYLD_LIBRARY_PATH`/`LD_LIBRARY_PATH` setup (cuts ~2-3s of cargo freshness checking per test) - **Arch filtering**: skips tests gated on foreign architectures via path matching and `//@ only-<arch>` directive parsing - **Flag extraction**: `extract_test_flags()` parses `//@ compile-flags:`, `//@ edition:`, and `//@ rustc-env:` directives - **Debug output**: `--save-debug-output` captures stderr on failure to `tests/ui/debug/<test_name>.stderr` and prints a 4-line snippet inline `remake_ui_tests.sh` gets the same `extract_test_flags()` function so regeneration respects directives too. ## Remaining failures | Test | Exit | Root cause | |------|------|------------| | `tests/ui/issues/issue-26641.rs` | 101 | rustc internal panic ("escaping bound vars"); not a stable-mir-json bug | | `tests/ui/sanitizer/cfi/drop-in-place.rs` | 101 | Missing `-Ccodegen-units=1` in the test file's `//@ compile-flags:` directive; every sibling CFI test has it, this one doesn't. Upstream test bug, not ours. | ## Test plan - [x] `cargo build` clean - [x] Full UI test suite on Linux: 2888 passing, 2 failing (both known, neither ours) - [x] `make integration-test`
1 parent ff1a18f commit e875066

8 files changed

Lines changed: 389 additions & 116 deletions

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
target/
22
tests/ui/failing/*
3-
tests/ui/passing/*
3+
tests/ui/passing/*
4+
tests/ui/debug/*

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,15 @@ retroactive best-effort summary; earlier changes were not formally tracked.
2727
- Restructured `printer.rs` into a declarative 3-phase pipeline: `collect_items` -> `collect_and_analyze_items` -> `assemble_smir`, with `CollectedCrate`/`DerivedInfo` interface types enforcing the boundary between collection and assembly
2828
- Added `AllocMap` with debug-mode coherence checking (`verify_coherence`): asserts that every `AllocId` in stored bodies exists in the alloc map and that no body is walked twice; zero cost in release builds
2929
- Removed dead static-item fixup from `assemble_smir` (violated the phase boundary, misclassified statics as functions; never triggered in integration tests)
30+
- Rewrote `run_ui_tests.sh`: flag-based CLI (`--verbose`, `--save-generated-output`, `--save-debug-output`), build-once-then-invoke (eliminates per-test cargo overhead), arch-aware skip logic for cross-platform test lists
31+
- UI test runners now extract and pass `//@ compile-flags:`, `//@ edition:`, and `//@ rustc-env:` directives from test files (previously silently ignored)
3032
- Switched from compiler build to `rustup`-managed toolchain ([#33])
3133
- Removed forked rust dependency ([#19])
3234

3335
### Fixed
36+
- Fixed `get_prov_ty` to recursively walk nested struct/tuple fields when resolving provenance types; previously used exact byte-offset matching which panicked on pointers inside nested structs (e.g., `&str` at offset 56 inside `TestDesc` inside `TestDescAndFn`)
37+
- Removed incorrect `builtin_deref` assertions from VTable and Static allocation collection that rejected valid non-pointer types (raw `*const ()` vtable pointers, non-pointer statics)
38+
- Replaced panicking `unwrap`/`assert` calls in `get_prov_ty` with graceful fallbacks for layout failures, non-rigid types, and unexpected offsets
3439
- Fixed early `return` in `BodyAnalyzer::visit_terminator` that skipped `super_terminator()`, causing alloc/type/span collection to miss everything inside `Call` terminators with non-`ZeroSized` function operands (const-evaluated function pointers); bug present since [`aff2dd0`](https://github.com/runtimeverification/stable-mir-json/commit/aff2dd0)
3540
- Avoided duplicate `inst.body()` calls that were reallocating `AllocId`s ([#120])
3641
- Prevented svg/png generation when `dot` is unavailable ([#117])

Makefile

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,7 @@ remake-ui-tests:
6363

6464
test-ui: VERBOSE?=0
6565
test-ui:
66-
# Check if RUST_DIR_ROOT is set
67-
if [ -z "$$RUST_DIR_ROOT" ]; then \
68-
echo "Error: RUST_DIR_ROOT is not set. Please set it to the absolute path to rust compiler checkout."; \
69-
exit 1; \
70-
fi
71-
bash tests/ui/run_ui_tests.sh "$$RUST_DIR_ROOT" "${VERBOSE}"
66+
bash tests/ui/run_ui_tests.sh $(if $(filter 1,$(VERBOSE)),--verbose) "$$RUST_DIR_ROOT"
7267

7368
.PHONY: dot svg png d2 clean-graphs check-graphviz
7469

src/printer.rs

Lines changed: 77 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -844,40 +844,72 @@ fn update_link_map<'tcx>(
844844
/// Returns the field index (source order) for a given offset and layout if
845845
/// the layout contains fields (shared between all variants), otherwise None.
846846
/// NB No search for fields within variants (needs recursive call).
847-
fn field_for_offset(l: LayoutShape, offset: usize) -> Option<usize> {
848-
// FieldIdx
849-
match l.fields {
847+
fn field_for_offset(l: &LayoutShape, offset: usize) -> Option<usize> {
848+
match &l.fields {
850849
FieldsShape::Primitive | FieldsShape::Union(_) | FieldsShape::Array { .. } => None,
850+
FieldsShape::Arbitrary { offsets } => offsets
851+
.iter()
852+
.enumerate()
853+
.find(|(_, o)| o.bytes() == offset)
854+
.map(|(i, _)| i),
855+
}
856+
}
857+
858+
/// Find the field whose byte range contains the given offset.
859+
/// Returns (field_index, field_start_byte_offset).
860+
fn field_containing_offset(l: &LayoutShape, offset: usize) -> Option<(usize, usize)> {
861+
match &l.fields {
851862
FieldsShape::Arbitrary { offsets } => {
852-
let fields: Vec<usize> = offsets.into_iter().map(|o| o.bytes()).collect();
853-
fields
854-
.into_iter()
863+
let mut indexed: Vec<(usize, usize)> = offsets
864+
.iter()
855865
.enumerate()
856-
.find(|(_, o)| *o == offset)
857-
.map(|(i, _)| i)
866+
.map(|(i, o)| (i, o.bytes()))
867+
.collect();
868+
indexed.sort_by_key(|&(_, o)| o);
869+
// The containing field is the one with the largest start offset <= target.
870+
indexed.into_iter().rev().find(|&(_, o)| o <= offset)
858871
}
872+
_ => None,
859873
}
860874
}
861875

862876
fn get_prov_ty(ty: stable_mir::ty::Ty, offset: &usize) -> Option<stable_mir::ty::Ty> {
863877
use stable_mir::ty::RigidTy;
864878
let ty_kind = ty.kind();
879+
debug_log_println!("get_prov_ty: {:?} offset={}", ty_kind, offset);
865880
// if ty is a pointer, box, or Ref, expect no offset and dereference
866-
if let Some(ty) = ty_kind.builtin_deref(true) {
867-
assert!(*offset == 0);
868-
return Some(ty.ty);
881+
if let Some(derefed) = ty_kind.builtin_deref(true) {
882+
if *offset != 0 {
883+
eprintln!(
884+
"get_prov_ty: unexpected non-zero offset {} for builtin_deref type {:?}",
885+
offset, ty_kind
886+
);
887+
return None;
888+
}
889+
debug_log_println!("get_prov_ty: resolved -> pointee {:?}", derefed.ty.kind());
890+
return Some(derefed.ty);
869891
}
870892

871893
// Otherwise the allocation is a reference within another kind of data.
872894
// Decompose this outer data type to determine the reference type
873-
let layout = ty
874-
.layout()
875-
.map(|l| l.shape())
876-
.expect("Unable to get layout for {ty_kind:?}");
877-
let ref_ty = match ty_kind
878-
.rigid()
879-
.expect("Non-rigid-ty allocation found! {ty_kind:?}")
880-
{
895+
let layout = match ty.layout().map(|l| l.shape()) {
896+
Ok(l) => l,
897+
Err(_) => {
898+
eprintln!("get_prov_ty: unable to get layout for {:?}", ty_kind);
899+
return None;
900+
}
901+
};
902+
let rigid = match ty_kind.rigid() {
903+
Some(r) => r,
904+
None => {
905+
eprintln!(
906+
"get_prov_ty: non-rigid type in allocation: {:?} (offset={})",
907+
ty_kind, offset
908+
);
909+
return None;
910+
}
911+
};
912+
let ref_ty = match rigid {
881913
// homogenous, so no choice. Could check alignment of the offset...
882914
RigidTy::Array(ty, _) | RigidTy::Slice(ty) => Some(*ty),
883915
// cases covered above
@@ -887,16 +919,24 @@ fn get_prov_ty(ty: stable_mir::ty::Ty, offset: &usize) -> Option<stable_mir::ty:
887919
RigidTy::Adt(def, _) if def.is_box() => {
888920
unreachable!("Covered by builtin_deref above")
889921
}
890-
// For other structs, consult layout to determine field type
922+
// For structs, find the field containing this offset and recurse.
923+
// The provenance offset may point into a nested struct field, so we
924+
// walk down through the field hierarchy until we reach the pointer.
891925
RigidTy::Adt(adt_def, args) if ty_kind.is_struct() => {
892-
let field_idx = field_for_offset(layout, *offset).unwrap();
926+
let (field_idx, field_start) = field_containing_offset(&layout, *offset)?;
893927
// NB struct, single variant
894-
let fields = adt_def.variants().pop().map(|v| v.fields()).unwrap();
895-
fields.get(field_idx).map(|f| f.ty_with_args(args))
928+
let fields = adt_def.variants().pop().map(|v| v.fields())?;
929+
let field_ty = fields.get(field_idx)?.ty_with_args(args);
930+
let relative_offset = *offset - field_start;
931+
debug_log_println!(
932+
"get_prov_ty: struct {:?} offset={} -> field {} (start={}) type {:?}, relative_offset={}",
933+
adt_def, offset, field_idx, field_start, field_ty.kind(), relative_offset
934+
);
935+
return get_prov_ty(field_ty, &relative_offset);
896936
}
897937
RigidTy::Adt(_adt_def, _args) if ty_kind.is_enum() => {
898938
// we have to figure out which variant we are dealing with (requires the data)
899-
match field_for_offset(layout, *offset) {
939+
match field_for_offset(&layout, *offset) {
900940
None =>
901941
// FIXME we'd have to figure out which variant we are dealing with (requires the data)
902942
{
@@ -909,9 +949,20 @@ fn get_prov_ty(ty: stable_mir::ty::Ty, offset: &usize) -> Option<stable_mir::ty:
909949
}
910950
}
911951
}
952+
// Same as structs: find containing field and recurse.
912953
RigidTy::Tuple(fields) => {
913-
let field_idx = field_for_offset(layout, *offset)?;
914-
fields.get(field_idx).copied()
954+
let (field_idx, field_start) = field_containing_offset(&layout, *offset)?;
955+
let field_ty = *fields.get(field_idx)?;
956+
let relative_offset = *offset - field_start;
957+
debug_log_println!(
958+
"get_prov_ty: tuple offset={} -> field {} (start={}) type {:?}, relative_offset={}",
959+
offset,
960+
field_idx,
961+
field_start,
962+
field_ty.kind(),
963+
relative_offset
964+
);
965+
return get_prov_ty(field_ty, &relative_offset);
915966
}
916967
RigidTy::FnPtr(_) => None,
917968
_unimplemented => {
@@ -972,21 +1023,11 @@ fn collect_alloc(
9721023
}
9731024
}
9741025
GlobalAlloc::Static(_) => {
975-
assert!(
976-
kind.clone().builtin_deref(true).is_some(),
977-
"Allocated pointer is not a built-in pointer type: {:?}",
978-
kind
979-
);
9801026
val_collector
9811027
.visited_allocs
9821028
.insert(val, (ty, global_alloc.clone()));
9831029
}
9841030
GlobalAlloc::VTable(_, _) => {
985-
assert!(
986-
kind.clone().builtin_deref(true).is_some(),
987-
"Allocated pointer is not a built-in pointer type: {:?}",
988-
kind
989-
);
9901031
val_collector
9911032
.visited_allocs
9921033
.insert(val, (ty, global_alloc.clone()));

tests/ui/failing.tsv

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,2 @@
1-
tests/ui/async-await/issue-60709.rs 101
2-
tests/ui/async-await/issues/issue-59972.rs 101
3-
tests/ui/box/thin_align.rs 101
4-
tests/ui/box/thin_drop.rs 101
5-
tests/ui/box/thin_new.rs 101
6-
tests/ui/box/thin_zst.rs 101
7-
tests/ui/cfg/cfg_attr.rs 101
8-
tests/ui/cfg/cfgs-on-items.rs 101
9-
tests/ui/consts/const-eval/const_fn_ptr.rs 101
10-
tests/ui/consts/const-int-arithmetic-overflow.rs 101
11-
tests/ui/consts/const-trait-to-trait.rs 101
12-
tests/ui/env-macro/env-env-overload.rs 101
13-
tests/ui/env-macro/env-env.rs 101
14-
tests/ui/fmt/fmt_debug/none.rs 101
15-
tests/ui/issues/issue-11205.rs 101
161
tests/ui/issues/issue-26641.rs 101
17-
tests/ui/label/label_break_value_desugared_break.rs 101
18-
tests/ui/macros/macro-meta-items.rs 101
19-
tests/ui/rfcs/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs 101
20-
tests/ui/test-attrs/test-panic-while-printing.rs 101
21-
tests/ui/traits/const-traits/const-drop.rs 101
22-
tests/ui/try-block/issue-45124.rs 101
23-
tests/ui/try-block/try-block-in-match.rs 101
24-
tests/ui/try-block/try-block-in-return.rs 101
25-
tests/ui/try-block/try-block.rs 101
2+
tests/ui/sanitizer/cfi/drop-in-place.rs 101

tests/ui/passing.tsv

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,8 @@ tests/ui/associated-types/issue-54467.rs
181181
tests/ui/associated-types/issue-55846.rs
182182
tests/ui/associated-types/object-method-numbering.rs
183183
tests/ui/async-await/context-is-sorta-unwindsafe.rs
184+
tests/ui/async-await/issue-60709.rs
185+
tests/ui/async-await/issues/issue-59972.rs
184186
tests/ui/attributes/tool_attributes.rs
185187
tests/ui/augmented-assignments-rpass.rs
186188
tests/ui/auto-instantiate.rs
@@ -350,6 +352,10 @@ tests/ui/box/into-boxed-slice.rs
350352
tests/ui/box/new-box-syntax.rs
351353
tests/ui/box/new-box.rs
352354
tests/ui/box/new.rs
355+
tests/ui/box/thin_align.rs
356+
tests/ui/box/thin_drop.rs
357+
tests/ui/box/thin_new.rs
358+
tests/ui/box/thin_zst.rs
353359
tests/ui/box/unit/expr-block-generic-unique1.rs
354360
tests/ui/box/unit/expr-block-generic-unique2.rs
355361
tests/ui/box/unit/expr-if-unique.rs
@@ -412,7 +418,9 @@ tests/ui/cfg/cfg-macros-notfoo.rs
412418
tests/ui/cfg/cfg-target-abi.rs
413419
tests/ui/cfg/cfg-target-compact.rs
414420
tests/ui/cfg/cfg-target-vendor.rs
421+
tests/ui/cfg/cfg_attr.rs
415422
tests/ui/cfg/cfg_stmt_expr.rs
423+
tests/ui/cfg/cfgs-on-items.rs
416424
tests/ui/cfg/conditional-compile.rs
417425
tests/ui/cfg/true-false.rs
418426
tests/ui/cfguard-run.rs
@@ -629,6 +637,7 @@ tests/ui/consts/const-enum-vec-index.rs
629637
tests/ui/consts/const-enum-vec-ptr.rs
630638
tests/ui/consts/const-enum-vector.rs
631639
tests/ui/consts/const-err-rpass.rs
640+
tests/ui/consts/const-eval/const_fn_ptr.rs
632641
tests/ui/consts/const-eval/enum_discr.rs
633642
tests/ui/consts/const-eval/float_methods.rs
634643
tests/ui/consts/const-eval/heap/alloc_intrinsic_nontransient.rs
@@ -654,6 +663,7 @@ tests/ui/consts/const-fn-type-name.rs
654663
tests/ui/consts/const-fn-val.rs
655664
tests/ui/consts/const-fn.rs
656665
tests/ui/consts/const-index-feature-gate.rs
666+
tests/ui/consts/const-int-arithmetic-overflow.rs
657667
tests/ui/consts/const-int-arithmetic.rs
658668
tests/ui/consts/const-int-conversion-rpass.rs
659669
tests/ui/consts/const-int-overflowing-rpass.rs
@@ -678,6 +688,7 @@ tests/ui/consts/const-repeated-values.rs
678688
tests/ui/consts/const-size_of-align_of.rs
679689
tests/ui/consts/const-size_of_val-align_of_val.rs
680690
tests/ui/consts/const-struct.rs
691+
tests/ui/consts/const-trait-to-trait.rs
681692
tests/ui/consts/const-tuple-struct.rs
682693
tests/ui/consts/const-typeid-of-rpass.rs
683694
tests/ui/consts/const-unit-struct.rs
@@ -959,6 +970,8 @@ tests/ui/enum/issue-19340-2.rs
959970
tests/ui/enum/issue-23304-1.rs
960971
tests/ui/enum/issue-23304-2.rs
961972
tests/ui/enum/issue-42747.rs
973+
tests/ui/env-macro/env-env-overload.rs
974+
tests/ui/env-macro/env-env.rs
962975
tests/ui/env-macro/option_env-not-defined.rs
963976
tests/ui/errors/remap-path-prefix-macro.rs
964977
tests/ui/explicit-i-suffix.rs
@@ -998,6 +1011,7 @@ tests/ui/float/classify-runtime-const.rs
9981011
tests/ui/float/conv-bits-runtime-const.rs
9991012
tests/ui/float/int-to-float-miscompile-issue-105626.rs
10001013
tests/ui/fmt/fmt_debug/full.rs
1014+
tests/ui/fmt/fmt_debug/none.rs
10011015
tests/ui/fmt/fmt_debug/shallow.rs
10021016
tests/ui/fmt/format-args-capture-macro-hygiene-pass.rs
10031017
tests/ui/fmt/format-args-capture.rs
@@ -1249,6 +1263,7 @@ tests/ui/issues/issue-10802.rs
12491263
tests/ui/issues/issue-10806.rs
12501264
tests/ui/issues/issue-11047.rs
12511265
tests/ui/issues/issue-11085.rs
1266+
tests/ui/issues/issue-11205.rs
12521267
tests/ui/issues/issue-11267.rs
12531268
tests/ui/issues/issue-11382.rs
12541269
tests/ui/issues/issue-11552.rs
@@ -1647,6 +1662,7 @@ tests/ui/iterators/iter-sum-overflow-debug.rs
16471662
tests/ui/iterators/iter-sum-overflow-ndebug.rs
16481663
tests/ui/iterators/iter-sum-overflow-overflow-checks.rs
16491664
tests/ui/iterators/skip-count-overflow.rs
1665+
tests/ui/label/label_break_value_desugared_break.rs
16501666
tests/ui/last-use-in-cap-clause.rs
16511667
tests/ui/last-use-is-capture.rs
16521668
tests/ui/late-bound-lifetimes/issue-36381.rs
@@ -1742,6 +1758,7 @@ tests/ui/macros/macro-lifetime-used-with-labels.rs
17421758
tests/ui/macros/macro-lifetime-used-with-static.rs
17431759
tests/ui/macros/macro-lifetime.rs
17441760
tests/ui/macros/macro-literal.rs
1761+
tests/ui/macros/macro-meta-items.rs
17451762
tests/ui/macros/macro-metavar-expr-concat/allowed-operations.rs
17461763
tests/ui/macros/macro-metavar-expr-concat/repetitions.rs
17471764
tests/ui/macros/macro-metavar-expr-concat/unicode-expansion.rs
@@ -2271,6 +2288,7 @@ tests/ui/rfcs/rfc-2008-non-exhaustive/structs_same_crate.rs
22712288
tests/ui/rfcs/rfc-2008-non-exhaustive/variants_same_crate.rs
22722289
tests/ui/rfcs/rfc-2027-dyn-compatible-for-dispatch/manual-self-impl-for-unsafe-obj.rs
22732290
tests/ui/rfcs/rfc-2091-track-caller/call-chain.rs
2291+
tests/ui/rfcs/rfc-2091-track-caller/caller-location-fnptr-rt-ctfe-equiv.rs
22742292
tests/ui/rfcs/rfc-2091-track-caller/caller-location-intrinsic.rs
22752293
tests/ui/rfcs/rfc-2091-track-caller/const-caller-location.rs
22762294
tests/ui/rfcs/rfc-2091-track-caller/intrinsic-wrapper.rs
@@ -2308,7 +2326,6 @@ tests/ui/runtime/stdout-before-main.rs
23082326
tests/ui/runtime/stdout-during-shutdown-unix.rs
23092327
tests/ui/runtime/stdout-during-shutdown-windows.rs
23102328
tests/ui/sanitizer/cfi/complex-receiver.rs
2311-
tests/ui/sanitizer/cfi/drop-in-place.rs
23122329
tests/ui/sanitizer/cfi/fn-ptr.rs
23132330
tests/ui/sanitizer/cfi/self-ref.rs
23142331
tests/ui/sanitizer/cfi/sized-associated-ty.rs
@@ -2527,6 +2544,7 @@ tests/ui/syntax-extension-minor.rs
25272544
tests/ui/tail-call-arg-leak.rs
25282545
tests/ui/tail-cps.rs
25292546
tests/ui/test-attrs/test-main-not-dead.rs
2547+
tests/ui/test-attrs/test-panic-while-printing.rs
25302548
tests/ui/test-attrs/test-runner-hides-main.rs
25312549
tests/ui/thread-local/tls.rs
25322550
tests/ui/threads-sendsync/child-outlives-parent.rs
@@ -2602,6 +2620,7 @@ tests/ui/traits/bug-7295.rs
26022620
tests/ui/traits/coercion-generic.rs
26032621
tests/ui/traits/coercion.rs
26042622
tests/ui/traits/conditional-dispatch.rs
2623+
tests/ui/traits/const-traits/const-drop.rs
26052624
tests/ui/traits/const-traits/specialization/const-default-const-specialized.rs
26062625
tests/ui/traits/const-traits/specialization/non-const-default-const-specialized.rs
26072626
tests/ui/traits/const-traits/trait-where-clause-run.rs
@@ -2713,6 +2732,10 @@ tests/ui/traits/with-bounds-default.rs
27132732
tests/ui/transmute-non-immediate-to-immediate.rs
27142733
tests/ui/transmute/transmute-zst-generics.rs
27152734
tests/ui/trivial_casts-rpass.rs
2735+
tests/ui/try-block/issue-45124.rs
2736+
tests/ui/try-block/try-block-in-match.rs
2737+
tests/ui/try-block/try-block-in-return.rs
2738+
tests/ui/try-block/try-block.rs
27162739
tests/ui/try-block/try-is-identifier-edition2015.rs
27172740
tests/ui/try-from-int-error-partial-eq.rs
27182741
tests/ui/try-operator-hygiene.rs

0 commit comments

Comments
 (0)