rust/tests/ui
..
abi
alloc-error
allocator
annotate-snippet
anon-params
argfile
argument-suggestions
array-slice-vec
asm
associated-consts
associated-inherent-types
associated-item
associated-type-bounds
associated-types
async-await
attributes
auto-traits
autoref-autoderef
auxiliary
bench
binding
binop
blind
block-result
borrowck
box
btreemap
builtin-superkinds
c-variadic
cast
cfg
check-cfg
closure-expected-type
closure_context
closures
cmse-nonsecure
codegen
codemap_tests
coercion
coherence
coinduction
command
compare-method
compiletest-self-test
conditional-compilation
confuse-field-and-method
const-generics
const-ptr
const_prop
consts
coroutine
crate-loading
cross
cross-crate
custom_test_frameworks
cycle-trait
debuginfo
definition-reachable
delegation
dep-graph
deployment-target
deprecation
deref-patterns
derived-errors
derives
deriving
dest-prop
destructuring-assignment
diagnostic-flags
diagnostic-width
diagnostic_namespace
did_you_mean
directory_ownership
disallowed-deconstructing
dollar-crate
drop
drop-bounds
dropck
dst
duplicate
dyn-drop
dyn-keyword
dyn-star
dynamically-sized-types
editions
empty
entry-point
enum
enum-discriminant
env-macro
error-codes
error-emitter
errors
explicit
explicit-tail-calls
expr
extern
extern-flag
feature-gates
fmt
fn
for
for-loop-while
foreign
fully-qualified-type
function-pointer
functional-struct-update
functions-closures
generic-associated-types
generic-const-items
generics
half-open-range-patterns
hashmap
hello_world
higher-ranked
hygiene
illegal-sized-bound
impl-header-lifetime-elision
impl-trait
implied-bounds
imports
include-macros
incoherent-inherent-impls
indexing
inference
infinite
inherent-impls-overlap-check
inline-const
instrument-coverage
instrument-xray
interior-mutability
internal
internal-lints
intrinsics
invalid
invalid-compile-flags
invalid-module-declaration
invalid-self-argument
io-checks
issues
iterators
json
keyword
kindck
label
lang-items
late-bound-lifetimes
layout
lazy-type-alias
lazy-type-alias-impl-trait
let-else
lexer
lifetimes
limits
linkage-attr
lint
liveness
loops
lowering
lto
lub-glb
macro_backtrace
macros
malformed
manual
marker_trait_attr
match
meta
methods
mir
mir-dataflow
mismatched_types
missing
missing-trait-bounds
missing_non_modrs_mod
modules
modules_and_files_visibility
moves
mut
namespace
native-library-link-flags
never_type
nll
no_std
non_modrs_mods
non_modrs_mods_and_inline_mods
not-panic
numbers-arithmetic
numeric
object-lifetime
object-safety
obsolete-in-place
offset-of
on-unimplemented
operator-recovery
or-patterns
overloaded
packed
panic-handler
panic-runtime
panics
parallel-rustc
parser
pattern
pin-macro
polymorphization
precondition-checks
print-fuel
print_type_sizes
privacy
proc-macro
process
process-termination
ptr_ops
pub
qualified
query-system
range
raw-ref-op
reachable
recursion
recursion_limit
regions
repeat-expr
repr
reserved
resolve
return
rfcs
rmeta
runtime
rust-2018
rust-2021
rust-2024
rustdoc
sanitizer
self
sepcomp
shadowed
shell-argfiles
simd
single-use-lifetime
sized
span
specialization
stability-attribute
stable-mir-print
stack-protector
static
statics
stats
std
stdlib-unit-tests
str
structs
structs-enums
suggestions
svh
symbol-mangling-version
symbol-names
sync
target-feature
test-attrs
thir-print
thread-local
threads-sendsync
tool-attributes
track-diagnostics
trait-bounds
traits
transmutability
transmute
treat-err-as-bug
trivial-bounds
try-block
try-trait
tuple
type
type-alias
type-alias-enum-variants
type-alias-impl-trait
type-inference
typeck
typeof
ufcs
unboxed-closures
underscore-imports
underscore-lifetime
uniform-paths
uninhabited
union
unknown-unstable-lints
unpretty
unresolved
unsafe
unsized
unsized-locals
unused-crate-deps
unwind-abis
use
variance
variants
version
warnings
wasm
wf
where-clauses
while
xcrate
zero-sized
.gitattributes
alias-uninit-value.rs
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
backtrace-apple-no-dsymutil.rs
backtrace.rs
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
by-move-pattern-binding.rs
by-move-pattern-binding.stderr
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
check-static-immutable-mut-slices.rs
check-static-immutable-mut-slices.stderr
check-static-recursion-foreign.rs
check-static-values-constraints.rs
check-static-values-constraints.stderr
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
compile_error_macro.rs
compile_error_macro.stderr
complex.rs
conflicting-repr-hints.rs
conflicting-repr-hints.stderr
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
dont-suggest-private-trait-method.rs
dont-suggest-private-trait-method.stderr
double-ref.rs
double-type-import.rs
double-type-import.stderr
dupe-first-attr.rs
duplicate_entry_error.rs
duplicate_entry_error.stderr
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
empty_global_asm.rs
env-args-reverse-iterator.rs
env-funky-keys.rs
env-null-vars.rs
env-vars.rs
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
exec-env.rs
explain.rs
explain.stdout
explicit-i-suffix.rs
explore-issue-38412.rs
explore-issue-38412.stderr
expr-block-fn.rs
expr-block-generic.rs
expr-block.rs
expr-copy.rs
expr-if-generic.rs
expr-if-panic-all.rs
expr-scope.rs
ext-expand-inner-exprs.rs
ext-nonexistent.rs
ext-nonexistent.stderr
fact.rs
fail-simple.rs
fail-simple.stderr
ffi_const.rs
ffi_const.stderr
ffi_const2.rs
ffi_const2.stderr
ffi_pure.rs
ffi_pure.stderr
filter-block-view-items.rs
fn-in-pat.rs
fn-in-pat.stderr
foreign-fn-return-lifetime.rs
foreign-fn-return-lifetime.stderr
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
impossible_range.fixed
impossible_range.rs
impossible_range.stderr
inc-range-pat.rs
infer-fn-tail-expr.rs
inherit-env.rs
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
intrinsics-always-extern.rs
intrinsics-always-extern.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
lambda-infer-unresolved.rs
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
lint-group-denied-lint-allowed.rs
lint-group-forbid-always-trumps-cli.rs
lint-group-forbid-always-trumps-cli.stderr
lint-unknown-lints-at-crate-level.rs
list.rs
log-err-phi.rs
log-knows-the-names-of-variants.rs
log-poly.rs
logging-only-prints-once.rs
loud_ui.rs
main-wrong-location.rs
main-wrong-location.stderr
main-wrong-type.rs
main-wrong-type.stderr
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
module-macro_use-arguments.rs
module-macro_use-arguments.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-patterns-in-args-2.rs
no-patterns-in-args-2.stderr
no-patterns-in-args-macro.rs
no-patterns-in-args-macro.stderr
no-patterns-in-args.rs
no-patterns-in-args.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-fuel-0.rs
optimization-fuel-0.stderr
optimization-fuel-1.rs
optimization-fuel-1.stderr
optimization-remark.rs
order-dependent-cast-inference.rs
order-dependent-cast-inference.stderr
orphan-check-diagnostics.rs
orphan-check-diagnostics.stderr
osx-frameworks.rs
osx-frameworks.stderr
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
range_inclusive.rs
raw-str.rs
README.md
realloc-16687.rs
reassign-ref-mut.rs
reassign-ref-mut.stderr
reexport-test-harness-main.rs
reify-intrinsic.rs
reify-intrinsic.stderr
removing-extern-crate.fixed
removing-extern-crate.rs
removing-extern-crate.stderr
resource-assign-is-not-copy.rs
resource-destruct.rs
ret-bang.rs
ret-non-nil.rs
ret-non-nil.stderr
return-disjoint-regions.rs
return-disjoint-regions.stderr
return-nil.rs
rustc-error.rs
rustc-error.stderr
rustc-rust-log.rs
seq-args.rs
seq-args.stderr
shadow-bool.rs
shadowed-use-visibility.rs
short-error-format.rs
short-error-format.stderr
simple_global_asm.rs
sized-borrowed-pointer.rs
sized-cycle-note.rs
sized-cycle-note.stderr
sized-owned-pointer.rs
sse2.rs
stable-addr-of.rs
std-backtrace.rs
std-uncopyable-atomics.rs
std-uncopyable-atomics.stderr
stdio-is-blocking.rs
stmt_expr_attrs_no_feature.rs
stmt_expr_attrs_no_feature.stderr
string-box-error.rs
struct-ctor-mangling.rs
suggest-null-ptr.fixed
suggest-null-ptr.rs
suggest-null-ptr.stderr
super-at-top-level.rs
super-at-top-level.stderr
super-fast-paren-parsing.rs
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
tool_lints-fail.rs
tool_lints-fail.stderr
tool_lints-rpass.rs
tool_lints.rs
tool_lints.stderr
tool_lints_2018_preview.rs
trailing-comma.rs
trait-impl-bound-suggestions.fixed
trait-impl-bound-suggestions.rs
trait-impl-bound-suggestions.stderr
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-lint-tool-name.rs
unknown-lint-tool-name.stderr
unknown-llvm-arg.rs
unknown-llvm-arg.stderr
unknown-tool-name.rs
unknown-tool-name.stderr
unnamed_argument_mode.rs
unop-move-semantics.rs
unop-move-semantics.stderr
unop-neg-bool.rs
unop-neg-bool.stderr
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
walk-struct-literal-with.rs
walk-struct-literal-with.stderr
weak-new-uninhabited-issue-48493.rs
weird-exit-code.rs
weird-exprs.rs
windows-subsystem-invalid.rs
windows-subsystem-invalid.stderr
write-fmt-errors.rs
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>.