rust/tests/ui
许杰友 Jieyou Xu (Joe) 0e46111660
Rollup merge of #126493 - jswrenn:fix-126460, r=compiler-errors
safe transmute: support non-ZST, variantful, uninhabited enums

Previously, `Tree::from_enum`'s implementation branched into three disjoint cases:

 1. enums that uninhabited
 2. enums for which all but one variant is uninhabited
 3. enums with multiple variants

This branching (incorrectly) did not differentiate between variantful and variantless uninhabited enums. In both cases, we assumed (and asserted) that uninhabited enums are zero-sized types. This assumption is false for enums like:

    enum Uninhabited { A(!, u128) }

...which, currently, has the same size as `u128`. This faulty assumption manifested as the ICE reported in #126460.

In this PR, we revise the first case of `Tree::from_enum` to consider only the narrow category of "enums that are uninhabited ZSTs". These enums, whose layouts are described with `Variants::Single { index }`, are special in their layouts otherwise resemble the `!` type and cannot be descended into like typical enums. This first case captures uninhabited enums like:

    enum Uninhabited { A(!, !), B(!) }

The second case is revised to consider the broader category of "enums that defer their layout to one of their variants"; i.e., enums whose layouts are described with `Variants::Single { index }` and that do have a variant at `index`. This second case captures uninhabited enums that are not ZSTs, like:

    enum Uninhabited { A(!, u128) }

...which represent their variants with `Variants::Single`.

Finally, the third case is revised to cover the broader category of "enums with multiple variants", which captures uninhabited enums like:

    enum Uninhabited { A(u8, !), B(!, u32) }

...which represent their variants with `Variants::Multiple`.

This PR also adds a comment requested by ````@RalfJung```` in his review of #126358 to `compiler/rustc_const_eval/src/interpret/discriminant.rs`.

Fixes #126460

r? ````@compiler-errors````
2024-06-19 01:51:39 +01:00
..
abi NVPTX: Avoid PassMode::Direct for C ABI 2024-05-31 22:45:27 +02:00
alloc-error
allocator
annotate-snippet
anon-params
argfile compiletest: add enable-by-default check-cfg 2024-05-04 11:30:38 +02:00
argument-suggestions
array-slice-vec
asm Add f16 and f128 inline ASM support for x86 and x86-64 2024-06-13 16:12:23 +01:00
associated-consts Use subtyping instead of equality, since method resolution also uses subtyping 2024-06-17 10:57:52 +00:00
associated-inherent-types Rollup merge of #125978 - fmease:cleanup-hir-ty-lowering-consolidate-assoc-item-access-checking, r=davidtwco 2024-06-12 03:57:19 -07:00
associated-item
associated-type-bounds E0229: Suggest Moving Type Constraints to Type Parameter Declaration 2024-06-12 19:32:31 -04:00
associated-types Rollup merge of #126404 - compiler-errors:alias-relate-terms, r=lcnr 2024-06-15 19:51:35 +02:00
async-await Rollup merge of #125078 - linyihai:issue-124496, r=compiler-errors 2024-06-19 01:51:38 +01:00
attributes Add double unsafe test 2024-06-06 20:27:25 -05:00
auto-traits Harmonize use of leaf and root obligation in trait error reporting 2024-06-12 20:57:23 -04:00
autoref-autoderef
auxiliary Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
backtrace Make more of the test suite run on Mac Catalyst 2024-05-28 12:31:33 +02:00
bench
binding Stabilize exclusive_range 2024-05-02 19:42:31 -04:00
binop Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
blind
block-result
borrowck Convert a span_bug to a span_delayed_bug. 2024-06-17 15:21:07 +10:00
box
btreemap
builtin-superkinds
c-variadic
cast FIx ICE while casting a type with error 2024-05-11 08:24:26 +05:30
cfg Fix typo in deprecation lint message 2024-05-21 20:16:39 +00:00
check-cfg Rollup merge of #125869 - alexcrichton:add-p1-to-wasi-targets, r=wesleywiser 2024-06-12 14:26:24 -04:00
closure-expected-type
closure_context
closures Make suggestion to change Fn to FnMut work with methods well 2024-06-10 16:28:05 +05:30
cmse-nonsecure
codegen Don't eagerly monomorphize drop for types that are impossible to instantiate 2024-05-24 21:53:39 -04:00
codemap_tests tests: remove some trailing ws 2024-04-27 10:54:31 +03:00
coercion Remove windows-specific copy of test 2024-06-17 10:57:52 +00:00
coherence better error message for normalizes-to ambiguities 2024-06-12 19:03:37 -04:00
coinduction
command
compare-method
compiletest-self-test
conditional-compilation Fix parse error message for meta items 2024-05-10 09:16:27 +02:00
confuse-field-and-method
const-generics Use subtyping instead of equality, since method resolution also uses subtyping 2024-06-17 10:57:52 +00:00
const-ptr offset, offset_from: allow zero-byte offset on arbitrary pointers 2024-05-13 07:59:16 +02:00
const_prop Allow type_of to return partially non-error types if the type was already tainted 2024-05-28 11:55:20 +00:00
consts Rollup merge of #125258 - compiler-errors:static-if-no-lt, r=nnethercote 2024-06-17 04:53:54 +01:00
coroutine Rollup merge of #125078 - linyihai:issue-124496, r=compiler-errors 2024-06-19 01:51:38 +01:00
coverage-attr Add a more thorough test of incorrect/unusal #[coverage(..)] syntax 2024-06-18 21:07:37 +10:00
crate-loading
cross
cross-crate Closures are recursively reachable 2024-06-04 22:50:35 +02:00
custom_test_frameworks
cycle-trait
debuginfo Repair several riscv64gc-unknown-linux-gnu codegen tests 2024-06-05 09:39:14 -07:00
definition-reachable
delegation Rollup merge of #124135 - petrochenkov:deleglob, r=fmease 2024-06-19 01:51:36 +01:00
dep-graph
deployment-target Make more of the test suite run on Mac Catalyst 2024-05-28 12:31:33 +02:00
deprecation Fix parse error message for meta items 2024-05-10 09:16:27 +02:00
deref-patterns
derived-errors
derives Rollup merge of #125572 - mu001999-contrib:dead/enhance, r=pnkfelix 2024-06-07 20:14:28 +02:00
deriving
dest-prop
destructuring-assignment
diagnostic-flags
diagnostic-width
diagnostic_namespace Walk into alias-eq nested goals even if normalization fails 2024-06-12 19:03:37 -04:00
did_you_mean Rollup merge of #126127 - Alexendoo:other-trait-diag, r=pnkfelix 2024-06-16 03:41:57 -04:00
directory_ownership
disallowed-deconstructing
dollar-crate
drop tail expression behind terminating scope 2024-06-18 04:14:43 +08:00
drop-bounds
dropck
dst
duplicate
dyn-drop
dyn-keyword
dyn-star Fix test problems discovered by the revision check 2024-05-09 14:47:09 +10:00
dynamically-sized-types
editions Point out exactly what obligation will fail 2024-06-13 21:47:43 -04:00
empty
entry-point
enum
enum-discriminant
env-macro
error-codes Rename HIR TypeBinding to AssocItemConstraint and related cleanup 2024-05-30 22:52:33 +02:00
error-emitter tests: remove some trailing ws 2024-04-27 10:54:31 +03:00
errors rewrite and rename issue-37893 to rmake 2024-05-29 11:38:47 -04:00
explicit
explicit-tail-calls
expr Use parenthetical notation for Fn traits 2024-05-29 22:26:54 +00:00
extern Use parenthetical notation for Fn traits 2024-05-29 22:26:54 +00:00
extern-flag Rollup merge of #125913 - fmease:early-lints-spruce-up-some-diags, r=Nadrieril 2024-06-11 09:14:34 +01:00
feature-gates Rollup merge of #125293 - dingxiangfei2009:tail-expr-temp-lifetime, r=estebank,davidtwco 2024-06-19 01:51:38 +01:00
ffi-attrs Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
fmt
fn Auto merge of #125778 - estebank:issue-67100, r=compiler-errors 2024-06-03 08:14:03 +00:00
fn-main Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
for Report better WF obligation leaf obligations in new solver 2024-05-16 21:08:42 -04:00
for-loop-while Remove note about iteration count in coerce 2024-04-30 12:46:59 +05:30
foreign Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
fuel Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
fully-qualified-type
function-pointer
functional-struct-update
functions-closures
generic-associated-types Rollup merge of #124884 - bvanjoi:fix-124785, r=estebank 2024-06-14 08:35:48 +02:00
generic-const-items Handle trait/impl GAC mismatches when inferring missing/placeholder types 2024-05-24 00:42:32 +02:00
generics Update Tests 2024-06-05 20:08:00 -04:00
half-open-range-patterns Stabilize exclusive_range 2024-05-02 19:42:31 -04:00
hashmap
hello_world
higher-ranked Also passthrough for projection clauses 2024-06-12 19:10:02 -04:00
hygiene Tweak output of import suggestions 2024-06-13 20:22:21 +00:00
illegal-sized-bound
impl-header-lifetime-elision And more general error 2024-05-24 11:20:33 -04:00
impl-trait Delay a bug and mark precise_capturing as not incomplete 2024-06-17 22:35:25 -04:00
implied-bounds
imports mark undetermined if target binding in current ns is not got 2024-06-17 11:29:43 +08:00
include-macros
incoherent-inherent-impls
indexing check index value <= 0xFFFF_FF00 2024-06-01 09:40:46 +08:00
inference Use subtyping instead of equality, since method resolution also uses subtyping 2024-06-17 10:57:52 +00:00
infinite
inherent-impls-overlap-check
inline-const Add regression test 2024-06-07 08:33:58 +00:00
instrument-coverage coverage: Add debugging flag -Zcoverage-options=no-mir-spans 2024-06-17 21:16:15 +10:00
instrument-xray
interior-mutability
internal
internal-lints
intrinsics Auto merge of #125778 - estebank:issue-67100, r=compiler-errors 2024-06-03 08:14:03 +00:00
invalid
invalid-compile-flags
invalid-module-declaration
invalid-self-argument
io-checks compiletest: Don't pass --out-dir if the compile flags include -o 2024-06-07 15:55:36 +10:00
issues Make parse_seq_to_before_tokens take expected/nonexpected tokens, use in parse_precise_capturing_syntax 2024-06-17 22:35:25 -04:00
iterators Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
json
keyword
kindck Harmonize use of leaf and root obligation in trait error reporting 2024-06-12 20:57:23 -04:00
label
lang-items
late-bound-lifetimes
layout Allow type_of to return partially non-error types if the type was already tainted 2024-05-28 11:55:20 +00:00
lazy-type-alias Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
lazy-type-alias-impl-trait
let-else
lexer
lifetimes tail expression behind terminating scope 2024-06-18 04:14:43 +08:00
limits
linkage-attr Allow static mut definitions with #[linkage] 2024-06-03 10:45:16 +00:00
lint Create tests/ui/coverage-attr/ 2024-06-18 20:30:25 +10:00
liveness
loops For OutsideLoop we should not suggest add 'block label in if block, or we wiil get another err: block label not supported here. 2024-05-22 19:47:32 +08:00
lowering Change wording 2024-04-29 14:53:38 +02:00
lto
lub-glb
macro_backtrace
macros Add a new concat metavar expr 2024-06-13 22:12:26 -03:00
malformed Auto merge of #124187 - compiler-errors:self-ctor, r=petrochenkov 2024-05-25 01:17:55 +00:00
manual Make more of the test suite run on Mac Catalyst 2024-05-28 12:31:33 +02:00
marker_trait_attr
match Rollup merge of #125168 - Jules-Bertholet:match-ergonomics-2024-align-with-rfc, r=Nadrieril 2024-06-06 04:17:26 +02:00
meta Handle a few more simple tests 2024-05-20 11:13:10 -04:00
methods Method resolution constrains hidden types instead of rejecting method candidates 2024-06-13 10:41:53 +00:00
mir Auto merge of #126319 - workingjubilee:rollup-lendnud, r=workingjubilee 2024-06-12 11:10:50 +00:00
mir-dataflow
mismatched_types Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
missing
missing-trait-bounds
missing_non_modrs_mod
modules
modules_and_files_visibility
moves
mut
namespace Tweak output of import suggestions 2024-06-13 20:22:21 +00:00
native-library-link-flags
never_type Rollup merge of #126127 - Alexendoo:other-trait-diag, r=pnkfelix 2024-06-16 03:41:57 -04:00
nll tail expression behind terminating scope 2024-06-18 04:14:43 +08:00
no_std
non_modrs_mods
non_modrs_mods_and_inline_mods
not-panic
numbers-arithmetic Rollup merge of #126127 - Alexendoo:other-trait-diag, r=pnkfelix 2024-06-16 03:41:57 -04:00
numeric
object-lifetime
object-safety Make WHERE_CLAUSES_OBJECT_SAFETY a regular object safety violation 2024-06-03 09:49:04 -04:00
obsolete-in-place
offset-of offset_of: allow (unstably) taking the offset of slice tail fields 2024-06-08 18:17:55 +02:00
on-unimplemented Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
operator-recovery
or-patterns
overloaded
packed
panic-handler Rename std::panic::PanicInfo to PanicHookInfo. 2024-06-11 15:47:00 +02:00
panic-runtime Enable a few tests on macOS 2024-05-28 12:31:12 +02:00
panics
parallel-rustc
parser Rework precise capturing syntax 2024-06-17 22:35:25 -04:00
pattern Replace some Option<Diag> with Result<(), Diag> 2024-06-13 06:16:12 +00:00
pin-macro
polymorphization Mark all missing generic args as errors 2024-06-03 13:16:56 +00:00
precondition-checks
print_type_sizes
privacy Do not ICE in privacy when type inference fails. 2024-06-17 10:09:27 +00:00
proc-macro Remove superfluous escaping from byte, byte str, and c str literals 2024-06-13 09:49:15 -07:00
process Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
process-termination
ptr_ops
pub Rollup merge of #125913 - fmease:early-lints-spruce-up-some-diags, r=Nadrieril 2024-06-11 09:14:34 +01:00
qualified
query-system
range Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
raw-ref-op turn pointer_structural_match into a hard error 2024-05-03 15:56:59 +02:00
reachable
recursion
recursion_limit
regions Detect pub structs never constructed and unused associated constants in traits 2024-06-05 23:20:09 +08:00
repeat-expr
repr Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
reserved
resolve Tweak output of import suggestions 2024-06-13 20:22:21 +00:00
return For E0277 suggest adding Result return type for function which using QuesionMark ? in the body. 2024-06-12 11:33:22 +08:00
rfcs Tweak output of import suggestions 2024-06-13 20:22:21 +00:00
rmeta
runtime Disable stack overflow handler tests on iOS-like platforms 2024-05-28 12:31:12 +02:00
rust-2018 Tweak output of import suggestions 2024-06-13 20:22:21 +00:00
rust-2021 Detect unused structs which implement private traits 2024-05-23 09:07:59 +08:00
rust-2024 Add TODO comment to unsafe env modification 2024-06-12 17:51:18 +02:00
rustc-env note value of RUST_MIN_STACK and explain unsetting 2024-05-19 20:09:03 -07:00
rustdoc
sanitizer Undo accidental change to tests/ui/sanitizer/thread.rs 2024-05-20 11:13:33 -04:00
self Require any function with a tait in its signature to actually constrain a hidden type 2024-06-12 08:53:59 +00:00
sepcomp
shadowed
shell-argfiles compiletest: add enable-by-default check-cfg 2024-05-04 11:30:38 +02:00
simd Rollup merge of #125311 - calebzulawski:repr-packed-simd-intrinsics, r=workingjubilee 2024-06-02 05:06:47 -07:00
single-use-lifetime
sized hir pretty: fix block indent 2024-05-20 20:30:44 +02:00
span Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
specialization Only compute specializes query if specialization is enabled in the crate of the specialized impl 2024-06-07 15:58:50 -04:00
stability-attribute
stable-mir-print
stack-protector
static check_expr_struct_fields: taint context with errors if struct definition is malformed 2024-06-05 21:54:22 +02:00
statics Add regression test 2024-06-17 10:55:42 +00:00
stats Auto merge of #124401 - oli-obk:some_hir_cleanups, r=cjgillot 2024-05-04 00:32:27 +00:00
std Move various stdlib tests to library/std/tests 2024-04-28 16:10:12 -04:00
stdlib-unit-tests Move various stdlib tests to library/std/tests 2024-04-28 16:10:12 -04:00
str tests: remove some trailing ws 2024-04-27 10:54:31 +03:00
structs Handle normalization failure in struct_tail_erasing_lifetimes 2024-05-01 09:29:33 +05:30
structs-enums Detect pub structs never constructed and unused associated constants in traits 2024-06-05 23:20:09 +08:00
suggestions Use subtyping instead of equality, since method resolution also uses subtyping 2024-06-17 10:57:52 +00:00
svh
symbol-mangling-version
symbol-names Enable v0 mangling tests and add checks for f16/f128 2024-05-14 06:16:48 -04:00
sync Add manual Sync impl for ReentrantLockGuard 2024-05-24 17:44:37 -07:00
target-feature Fix test problems discovered by the revision check 2024-05-09 14:47:09 +10:00
test-attrs
thir-print
thread-local
threads-sendsync delete UI tests that only check internal implementation details of thread-locals 2024-05-23 13:44:56 +02:00
tool-attributes Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
track-diagnostics
trait-bounds
traits Rollup merge of #126127 - Alexendoo:other-trait-diag, r=pnkfelix 2024-06-16 03:41:57 -04:00
transmutability safe transmute: support non-ZST, variantful, uninhabited enums 2024-06-14 21:11:08 +00:00
transmute
treat-err-as-bug
trivial-bounds
try-block
try-trait Rollup merge of #126127 - Alexendoo:other-trait-diag, r=pnkfelix 2024-06-16 03:41:57 -04:00
tuple
type Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
type-alias
type-alias-enum-variants
type-alias-impl-trait Rollup merge of #126127 - Alexendoo:other-trait-diag, r=pnkfelix 2024-06-16 03:41:57 -04:00
type-inference
typeck Rollup merge of #126127 - Alexendoo:other-trait-diag, r=pnkfelix 2024-06-16 03:41:57 -04:00
typeof
ufcs Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
unboxed-closures Use parenthetical notation for Fn traits 2024-05-29 22:26:54 +00:00
underscore-imports
underscore-lifetime
uniform-paths
uninhabited
union
unknown-unstable-lints
unop Move 100 entries from tests/ui into subdirs 2024-05-20 19:55:59 -07:00
unpretty Revert "Create const block DefIds in typeck instead of ast lowering" 2024-06-07 08:33:58 +00:00
unresolved
unsafe Use parenthetical notation for Fn traits 2024-05-29 22:26:54 +00:00
unsized [ACP 362] genericize ptr::from_raw_parts 2024-05-29 09:34:16 -07:00
unsized-locals
unused-crate-deps Spruce up the diagnostics of some early lints 2024-06-03 07:25:32 +02:00
unwind-abis
use Make early lints translatable 2024-05-21 20:16:39 +00:00
variance tests: remove some trailing ws 2024-04-27 10:54:31 +03:00
variants
version Fix test problems discovered by the revision check 2024-05-09 14:47:09 +10:00
warnings
wasm
wf Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
where-clauses Make WHERE_CLAUSES_OBJECT_SAFETY a regular object safety violation 2024-06-03 09:49:04 -04:00
while
windows-subsystem Move run-make windows_subsystem tests to ui tests 2024-05-29 13:04:28 +00:00
zero-sized
.gitattributes
alias-uninit-value.rs
allow-non-lint-warnings.rs Make run-make/allow-non-lint-warnings-cmdline into a ui test 2024-06-13 12:55:55 +02:00
anonymous-higher-ranked-lifetime.rs
anonymous-higher-ranked-lifetime.stderr
artificial-block.rs
as-precedence.rs
assign-assign.rs
assign-imm-local-twice.rs
assign-imm-local-twice.stderr
assoc-lang-items.rs
assoc-lang-items.stderr
assoc-oddities-3.rs
associated-path-shl.rs
associated-path-shl.stderr
atomic-from-mut-not-available.rs
atomic-from-mut-not-available.stderr
attempted-access-non-fatal.rs
attempted-access-non-fatal.stderr
attr-bad-crate-attr.rs
attr-bad-crate-attr.stderr
attr-shebang.rs
attr-start.rs
attr-usage-inline.rs
attr-usage-inline.stderr
attrs-resolution-errors.rs
attrs-resolution-errors.stderr
attrs-resolution.rs
augmented-assignments-feature-gate-cross.rs
augmented-assignments-rpass.rs
augmented-assignments.rs
augmented-assignments.stderr
auto-instantiate.rs
auto-ref-slice-plus-ref.rs
auto-ref-slice-plus-ref.stderr
autoderef-full-lval.rs
autoderef-full-lval.stderr
bare-fn-implements-fn-mut.rs
bare-static-string.rs
big-literals.rs
bind-by-move.rs
bitwise.rs
bogus-tag.rs
bogus-tag.stderr
borrow-by-val-method-receiver.rs
bounds-lifetime.rs
bounds-lifetime.stderr
break-diverging-value.rs
break-diverging-value.stderr
builtin-clone-unwind.rs
can-copy-pod.rs
cancel-clean-via-immediate-rvalue-ref.rs
cannot-mutate-captured-non-mut-var.rs
cannot-mutate-captured-non-mut-var.stderr
capture1.rs
capture1.stderr
catch-unwind-bang.rs
cenum_impl_drop_cast.rs
cenum_impl_drop_cast.stderr
cfguard-run.rs
char.rs
class-cast-to-trait.rs
class-cast-to-trait.stderr
class-method-missing.rs
class-method-missing.stderr
cleanup-rvalue-for-scope.rs
cleanup-rvalue-scopes-cf.rs
cleanup-rvalue-scopes-cf.stderr
cleanup-rvalue-scopes.rs
cleanup-rvalue-temp-during-incomplete-alloc.rs
cleanup-shortcircuit.rs
close-over-big-then-small-data.rs
command-line-diagnostics.rs
command-line-diagnostics.stderr
complex.rs
conservative_impl_trait.rs
conservative_impl_trait.stderr
constructor-lifetime-args.rs
constructor-lifetime-args.stderr
copy-a-resource.rs
copy-a-resource.stderr
crate-leading-sep.rs
crate-method-reexport-grrrrrrr.rs
crate-name-attr-used.rs
crate-name-mismatch.rs
crate-name-mismatch.stderr
custom-attribute-multisegment.rs
custom-attribute-multisegment.stderr
custom-test-frameworks-simple.rs
custom_attribute.rs
custom_attribute.stderr
deduplicate-diagnostics.deduplicate.stderr
deduplicate-diagnostics.duplicate.stderr
deduplicate-diagnostics.rs
deep.rs
default-method-parsing.rs
default-method-simple.rs
defaults-well-formedness.rs
deprecation-in-force-unstable.rs
deref-non-pointer.rs
deref-non-pointer.stderr
deref-rc.rs
deref.rs
derive-uninhabited-enum-38885.rs
derive-uninhabited-enum-38885.stderr
destructure-trait-ref.rs
destructure-trait-ref.stderr
diverging-fallback-method-chain.rs
diverging-fallback-option.rs
diverging-fn-tail-35849.rs
diverging-fn-tail-35849.stderr
double-ref.rs
double-type-import.rs
double-type-import.stderr
dupe-first-attr.rs
duplicate_entry_error.rs Rename std::panic::PanicInfo to PanicHookInfo. 2024-06-11 15:47:00 +02:00
duplicate_entry_error.stderr Rename std::panic::PanicInfo to PanicHookInfo. 2024-06-11 15:47:00 +02:00
early-ret-binop-add.rs
elide-errors-on-mismatched-tuple.rs
elide-errors-on-mismatched-tuple.stderr
elided-test.rs
elided-test.stderr
else-if.rs
empty-allocation-non-null.rs
empty-allocation-rvalue-non-null.rs
empty-type-parameter-list.rs
empty-type-parameter-list.stderr
error-festival.rs
error-festival.stderr
error-should-say-copy-not-pod.rs
error-should-say-copy-not-pod.stderr
exclusive-drop-and-copy.rs
exclusive-drop-and-copy.stderr
explain.rs
explain.stdout
explicit-i-suffix.rs
explore-issue-38412.rs
explore-issue-38412.stderr
ext-expand-inner-exprs.rs
ext-nonexistent.rs
ext-nonexistent.stderr
fact.rs
fail-simple.rs
fail-simple.stderr
filter-block-view-items.rs
format-no-std.rs
fun-indirect-call.rs
future-incompatible-lint-group.rs
future-incompatible-lint-group.stderr
global-scope.rs
hello.rs
illegal-ufcs-drop.fixed
illegal-ufcs-drop.rs
illegal-ufcs-drop.stderr
impl-inherent-non-conflict.rs
impl-not-adjacent-to-type.rs
impl-privacy-xc-1.rs
impl-unused-rps-in-assoc-type.rs
impl-unused-rps-in-assoc-type.stderr
impl-unused-tps-inherent.rs
impl-unused-tps-inherent.stderr
impl-unused-tps.rs
impl-unused-tps.stderr
implicit-method-bind.rs
implicit-method-bind.stderr
inline-disallow-on-variant.rs
inline-disallow-on-variant.stderr
inlined-main.rs
inner-attrs-on-impl.rs
inner-module.rs
inner-static-type-parameter.rs
inner-static-type-parameter.stderr
inner-static.rs
integral-indexing.rs
integral-indexing.stderr
integral-variable-unification-error.rs
integral-variable-unification-error.stderr
invalid_crate_type_syntax.rs
invalid_crate_type_syntax.stderr
invalid_dispatch_from_dyn_impls.rs
invalid_dispatch_from_dyn_impls.stderr
issue-11881.rs
issue-13560.rs
issue-15924.rs
issue-16822.rs
issue-18502.rs
issue-24106.rs
issue-76387-llvm-miscompile.rs
issues-71798.rs
issues-71798.stderr
item-name-overload.rs
kinds-in-metadata.rs
kinds-of-primitive-impl.rs
kinds-of-primitive-impl.stderr
last-use-in-block.rs
last-use-in-cap-clause.rs
last-use-is-capture.rs
lazy-and-or.rs
lexical-scopes.rs
lexical-scopes.stderr
lexical-scoping.rs
link-section.rs Make more of the test suite run on Mac Catalyst 2024-05-28 12:31:33 +02:00
list.rs
log-err-phi.rs
log-knows-the-names-of-variants.rs
log-poly.rs
logging-only-prints-once.rs
loud_ui.rs
max-min-classes.rs
maximal_mir_to_hir_coverage.rs
maybe-bounds.rs
maybe-bounds.stderr
minus-string.rs
minus-string.stderr
missing_debug_impls.rs
missing_debug_impls.stderr
mod-subitem-as-enum-variant.rs
mod-subitem-as-enum-variant.stderr
monomorphize-abi-alignment.rs
msvc-data-only.rs
multibyte.rs
multiline-comment.rs
mut-function-arguments.rs
mutual-recursion-group.rs
myriad-closures.rs
nested-block-comment.rs
nested-cfg-attrs.rs
nested-cfg-attrs.stderr
nested-class.rs
nested-ty-params.rs
nested-ty-params.stderr
new-impl-syntax.rs
new-import-syntax.rs
new-style-constants.rs
new-unicode-escapes.rs
newlambdas.rs
newtype-polymorphic.rs
newtype.rs
no-capture-arc.rs
no-capture-arc.stderr
no-core-1.rs
no-core-2.rs
no-link-unknown-crate.rs
no-link-unknown-crate.stderr
no-reuse-move-arc.rs
no-reuse-move-arc.stderr
no-send-res-ports.rs
no-send-res-ports.stderr
no-warn-on-field-replace-issue-34101.rs
no_crate_type.rs
no_crate_type.stderr
no_send-enum.rs
no_send-enum.stderr
no_send-rc.rs
no_send-rc.stderr
no_share-enum.rs
no_share-enum.stderr
no_share-struct.rs
no_share-struct.stderr
noexporttypeexe.rs
noexporttypeexe.stderr
non-constant-expr-for-arr-len.rs
non-constant-expr-for-arr-len.stderr
non-copyable-void.rs
non-copyable-void.stderr
non-fmt-panic.fixed
non-fmt-panic.rs
non-fmt-panic.stderr
noncopyable-class.rs
noncopyable-class.stderr
nonscalar-cast.fixed
nonscalar-cast.rs
nonscalar-cast.stderr
not-clone-closure.rs
not-clone-closure.stderr
not-copy-closure.rs
not-copy-closure.stderr
not-enough-arguments.rs
not-enough-arguments.stderr
nul-characters.rs
nullable-pointer-iotareduction.rs
nullable-pointer-size.rs
object-pointer-types.rs
object-pointer-types.stderr
objects-coerce-freeze-borrored.rs
occurs-check-2.rs
occurs-check-2.stderr
occurs-check-3.rs
occurs-check-3.stderr
occurs-check.rs
occurs-check.stderr
once-cant-call-twice-on-heap.rs
once-cant-call-twice-on-heap.stderr
oom_unwind.rs
op-assign-builtins-by-ref.rs
opeq.rs
opt-in-copy.rs
opt-in-copy.stderr
optimization-remark.rs
out-pointer-aliasing.rs
output-slot-variants.rs
over-constrained-vregs.rs
panic-while-printing.rs
panic_implementation-closures.rs
paren-span.rs
paren-span.stderr
partialeq_help.rs
partialeq_help.stderr
path-lookahead.fixed
path-lookahead.rs
path-lookahead.stderr
path.rs
paths-containing-nul.rs
phantom-auto-trait.rs
phantom-auto-trait.stderr
point-to-type-err-cause-on-impl-trait-return-2.rs
point-to-type-err-cause-on-impl-trait-return-2.stderr
pptypedef.rs
pptypedef.stderr
primitive-binop-lhs-mut.rs
print-stdout-eprint-stderr.rs
project-cache-issue-31849.rs
ptr-coercion-rpass.rs
ptr-coercion.rs
ptr-coercion.stderr
query-visibility.rs
raw-str.rs
README.md
realloc-16687.rs
reassign-ref-mut.rs
reassign-ref-mut.stderr
reexport-test-harness-main.rs
removing-extern-crate.fixed
removing-extern-crate.rs
removing-extern-crate.stderr
resource-assign-is-not-copy.rs
resource-destruct.rs
rustc-error.rs
rustc-error.stderr
seq-args.rs
seq-args.stderr
shadow-bool.rs
shadowed-use-visibility.rs
short-error-format.rs
short-error-format.stderr
sized-borrowed-pointer.rs
sized-cycle-note.rs
sized-cycle-note.stderr
sized-owned-pointer.rs
sse2.rs compiletest: add enable-by-default check-cfg 2024-05-04 11:30:38 +02:00
stable-addr-of.rs
std-uncopyable-atomics.rs
std-uncopyable-atomics.stderr
stdio-is-blocking.rs
string-box-error.rs
struct-ctor-mangling.rs
super-at-top-level.rs
super-at-top-level.stderr
super.rs
svh-add-nothing.rs
swap-1.rs
swap-overlapping.rs
switched-expectations.rs
switched-expectations.stderr
syntax-extension-minor.rs
tag-type-args.rs
tag-type-args.stderr
tag-variant-cast-non-nullary.fixed
tag-variant-cast-non-nullary.rs
tag-variant-cast-non-nullary.stderr
tail-call-arg-leak.rs
tail-cps.rs
tail-typeck.rs
tail-typeck.stderr
trailing-comma.rs
trait-method-number-parameters.rs
trait-method-number-parameters.stderr
transmute-equal-assoc-types.rs
transmute-non-immediate-to-immediate.rs
trivial_casts-rpass.rs
trivial_casts-rpass.stderr
try-from-int-error-partial-eq.rs
try-operator-hygiene.rs
try-operator.rs
tydesc-name.rs
type-id-higher-rank-2.rs
type-namespace.rs
type-param-constraints.rs
type-param.rs
type-ptr.rs
type-use-i1-versus-i8.rs
type_length_limit.polonius.stderr
type_length_limit.rs
type_length_limit.stderr
typeid-intrinsic.rs
typestate-multi-decl.rs
unconstrained-none.rs
unconstrained-none.stderr
unconstrained-ref.rs
unconstrained-ref.stderr
underscore-ident-matcher.rs
underscore-ident-matcher.stderr
underscore-lifetimes.rs
underscore-method-after-integer.rs
unevaluated_fixed_size_array_len.rs
unevaluated_fixed_size_array_len.stderr
uninit-empty-types.rs
unit.rs
unknown-language-item.rs
unknown-language-item.stderr
unknown-llvm-arg.rs
unknown-llvm-arg.stderr
unnamed_argument_mode.rs
unreachable-code-1.rs
unreachable-code.rs
unsigned-literal-negation.rs
unsigned-literal-negation.stderr
unused-move-capture.rs
unused-move.rs
unwind-no-uwtable.rs
use-import-export.rs
use-keyword-2.rs
use-module-level-int-consts.rs
use-nested-groups.rs
used.rs
used.stderr
using-target-feature-unstable.rs
usize-generic-argument-parent.rs
usize-generic-argument-parent.stderr
utf8-bom.rs
utf8_idents.rs
wait-forked-but-failed-child.rs Handle a few more simple tests 2024-05-20 11:13:10 -04:00
walk-struct-literal-with.rs
walk-struct-literal-with.stderr
weak-new-uninhabited-issue-48493.rs
weird-exit-code.rs
weird-exprs.rs
write-fmt-errors.rs io::Write::write_fmt: panic if the formatter fails when the stream does not fail 2024-05-11 15:13:18 +02:00
writing-to-immutable-vec.rs
writing-to-immutable-vec.stderr
wrong-hashset-issue-42918.rs

UI Tests

This folder contains rustc's UI tests.

Test Directives (Headers)

Typically, a UI test will have some test directives / headers which are special comments that tell compiletest how to build and intepret a test.

As part of an on-going effort to rewrite compiletest (see https://github.com/rust-lang/compiler-team/issues/536), a major change proposal to change legacy compiletest-style headers // <directive> to ui_test-style headers //@ <directive> was accepted (see https://github.com/rust-lang/compiler-team/issues/512.

An example directive is ignore-test. In legacy compiletest style, the header would be written as

// ignore-test

but in ui_test style, the header would be written as

//@ ignore-test

compiletest is changed to accept only //@ directives for UI tests (currently), and will reject and report an error if it encounters any comments // <content> that may be parsed as an legacy compiletest-style test header. To fix this, you should migrate to the ui_test-style header //@ <content>.