rust/tests/ui
Michael Goulet d72d44d8ed
Rollup merge of #129629 - compiler-errors:rtn-in-path, r=jackh726
Implement Return Type Notation (RTN)'s path form in where clauses

Implement return type notation (RTN) in path position for where clauses. We already had RTN in associated type position ([e.g.](https://play.rust-lang.org/?version=nightly&mode=debug&edition=2021&gist=627a4fb8e2cb334863fbd08ed3722c09)), but per [the RFC](https://rust-lang.github.io/rfcs/3654-return-type-notation.html#where-rtn-can-be-used-for-now):

> As a standalone type, RTN can only be used as the Self type of a where-clause [...]

Specifically, in order to enable code like:

```rust
trait Foo {
    fn bar() -> impl Sized;
}

fn is_send(_: impl Send) {}

fn test<T>()
where
    T: Foo,
    T::bar(..): Send,
{
    is_send(T::bar());
}
```

* In the resolver, when we see a `TyKind::Path` whose final segment is `GenericArgs::ParenthesizedElided` (i.e. `(..)`), resolve that path in the *value* namespace, since we're looking for a method.
* When lowering where clauses in HIR lowering, we first try to intercept an RTN self type via `lower_ty_maybe_return_type_notation`. If we find an RTN type, we lower it manually in a way that respects its higher-ranked-ness (see below) and resolves to the corresponding RPITIT. Anywhere else, we'll emit the same "return type notation not allowed in this position yet" error we do when writing RTN in every other position.
* In `resolve_bound_vars`, we add some special treatment for RTN types in where clauses. Specifically, we need to add new lifetime variables to our binders for the early- and late-bound vars we encounter on the method. This implements the higher-ranked desugaring [laid out in the RFC](https://rust-lang.github.io/rfcs/3654-return-type-notation.html#converting-to-higher-ranked-trait-bounds).

This PR also adds a bunch of tests, mostly negative ones (testing error messages).

In a follow-up PR, I'm going to mark RTN as no longer incomplete, since this PR basically finishes the impl surface that we should initially stabilize, and the RFC was accepted.

cc [RFC 3654](https://github.com/rust-lang/rfcs/pull/3654) and https://github.com/rust-lang/rust/issues/109417
2024-09-21 15:18:56 -04:00
..
abi Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
alloc-error
allocator
annotate-snippet
anon-params More accurate span for anonymous argument suggestion 2024-07-18 00:19:27 +00:00
argfile
argument-suggestions Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
array-slice-vec Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
asm Update the minimum external LLVM to 18 2024-09-18 13:53:31 -07:00
associated-consts Relate receiver invariantly in method probe for Mode::Path 2024-09-16 10:55:07 -04:00
associated-inherent-types Get rid of predicates_defined_on 2024-08-24 18:25:41 -04:00
associated-item
associated-type-bounds More tests and tweak comments 2024-09-21 10:10:40 -04:00
associated-types Revert 'Stabilize -Znext-solver=coherence' 2024-09-11 17:57:04 -04:00
async-await Auto merge of #130631 - GuillaumeGomez:rollup-jpgy1iv, r=GuillaumeGomez 2024-09-20 19:51:45 +00:00
attributes remove #[cmse_nonsecure_entry] 2024-09-21 13:05:21 +02:00
auto-traits Revert 'Stabilize -Znext-solver=coherence' 2024-09-11 17:57:04 -04:00
autoref-autoderef
auxiliary
backtrace the output in stderr expects panic-unwind 2024-07-30 08:16:47 +02:00
bench
binding Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
binop Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
blind Accurate use rename suggestion span 2024-07-18 00:00:04 +00:00
block-result
borrowck Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
box
btreemap Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
builtin-superkinds
c-variadic Use ordinal number in argument error 2024-07-14 13:50:09 +09:00
cast Arbitrary self types v2: pointers feature gate. 2024-08-27 17:32:35 +00:00
cfg Fix feature name in test 2024-09-20 09:18:47 +00:00
check-cfg Improve handling of raw-idents in check-cfg 2024-09-18 11:07:32 +02:00
closure_context
closure-expected-type
closures Don't suggest adding return type for closures with default return type 2024-08-28 12:54:39 +08:00
cmse-nonsecure disallow cmse ABIs on unsupported platforms 2024-09-21 13:05:23 +02:00
codegen Add a bunch of tests for #107975 2024-07-19 23:27:42 +03:00
codemap_tests Update tests 2024-08-10 12:07:17 +02:00
coercion Relate receiver invariantly in method probe for Mode::Path 2024-09-16 10:55:07 -04:00
coherence Rollup merge of #130311 - heiseish:issue-70849-fix, r=fmease 2024-09-14 20:22:41 +10:00
coinduction
command
compare-method show unit output when there is only output diff in diagnostics 2024-07-06 21:00:30 +08:00
compiletest-self-test Update expectations 2024-08-11 09:58:11 +01:00
conditional-compilation Return earlier in some cases in collect_token. 2024-08-23 14:40:08 +10:00
confuse-field-and-method
const_prop
const-generics Auto merge of #127546 - workingjubilee:5-level-paging-exists, r=saethlin 2024-09-21 16:20:10 +00:00
const-ptr on a signed deref check, mention the right pointer in the error 2024-08-01 14:25:19 +02:00
consts Don't emit spurious error for pattern matched array with erroneous len const 2024-09-20 20:26:20 -04:00
coroutine Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
coverage-attr Make parse error suggestions verbose and fix spans 2024-07-12 03:02:57 +00:00
crate-loading
cross
cross-crate
custom_test_frameworks
cycle-trait
debuginfo TL note: current means target 2024-09-20 10:02:14 -07:00
definition-reachable
delegation Auto merge of #126161 - Bryanskiy:delegation-generics-4, r=petrochenkov 2024-09-07 18:12:05 +00:00
dep-graph
deployment-target Avoid a couple of unnecessary EarlyDiagCtxt uses 2024-06-22 17:06:47 +00:00
deprecation Deprecate no-op codegen option -Cinline-threshold=... 2024-06-14 20:25:17 +02:00
deref-patterns
derived-errors
derives Rollup merge of #127907 - RalfJung:byte_slice_in_packed_struct_with_derive, r=nnethercote 2024-08-05 05:40:19 +02:00
deriving derive(SmartPointer): assume pointee from the single generic and better error messages 2024-08-29 01:39:52 +08:00
dest-prop
destructuring-assignment
diagnostic_namespace Add test 2024-08-09 22:02:23 -04:00
diagnostic-flags
diagnostic-width
did_you_mean Make parse error suggestions verbose and fix spans 2024-07-12 03:02:57 +00:00
directory_ownership
disallowed-deconstructing
dollar-crate
drop Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
drop-bounds
dropck Rollup merge of #128438 - Bryanskiy:empty-array-dropck, r=lcnr 2024-07-31 23:20:12 +02:00
dst Detect * operator on !Sized expression 2024-08-08 17:35:40 +00:00
duplicate Explicitly mark a hack as a HACK and elaborate its comment 2024-09-18 19:36:44 +02:00
dyn-drop
dyn-keyword Rollup merge of #127692 - veera-sivarajan:bugfix-125139, r=estebank 2024-09-03 19:13:23 +02:00
dyn-star
dynamically-sized-types
editions Point out exactly what obligation will fail 2024-06-13 21:47:43 -04:00
empty Suggest the struct variant pattern syntax on usage of unit variant pattern for a struct variant 2024-08-28 22:55:57 +09:00
entry-point
enum More accurate suggestions when writing wrong style of enum variant literal 2024-07-18 18:20:35 +00:00
enum-discriminant Update tests 2024-08-10 12:07:17 +02:00
env-macro
error-codes Introduce distinct error codes for precise capturing 2024-09-16 10:56:22 -04:00
error-emitter
errors rewrite and rename issue-107094 to rmake 2024-07-22 10:12:00 -04:00
explicit
explicit-tail-calls doc fixups from review 2024-07-07 18:16:38 +02:00
expr More accurate suggestions when writing wrong style of enum variant literal 2024-07-18 18:20:35 +00:00
extern TL note: current means target 2024-09-20 10:02:14 -07: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 #130526 - eholk:pin-reborrow, r=compiler-errors 2024-09-20 19:46:38 +02:00
ffi-attrs
float move a test to a better location 2024-09-12 08:08:38 +02:00
fmt fmt-debug option 2024-08-28 23:32:40 +01:00
fn Enforce supertrait outlives obligations hold when confirming impl 2024-08-05 09:55:14 -04:00
fn-main
for
for-loop-while Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
foreign Don't ICE on Fn trait error for foreign fn 2024-08-16 14:10:06 -04:00
fuel
fully-qualified-type
function-pointer
functional-struct-update Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
functions-closures
generic-associated-types Pretty-print own args of existential projections 2024-08-22 06:22:36 +02:00
generic-const-items Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
generics elided_named_lifetimes: bless & add tests 2024-08-31 15:35:42 +03:00
half-open-range-patterns Add suggestions for expressions in patterns 2024-09-18 20:38:43 +02:00
hashmap
hello_world
higher-ranked Revert 'Stabilize -Znext-solver=coherence' 2024-09-11 17:57:04 -04:00
hygiene Bless tests 2024-08-02 11:34:54 +00:00
illegal-sized-bound
impl-header-lifetime-elision
impl-trait Rollup merge of #130440 - compiler-errors:rpitit-opaque-hidden, r=jieyouxu 2024-09-17 17:28:34 +02:00
implied-bounds Adjust tests 2024-09-05 06:37:38 -04:00
imports skip updating when external binding is existed 2024-08-20 20:34:13 +08:00
include-macros
incoherent-inherent-impls Fix remaining cases 2024-06-21 19:00:18 -04:00
indexing
inference Relate receiver invariantly in method probe for Mode::Path 2024-09-16 10:55:07 -04:00
infinite Automatically taint InferCtxt when errors are emitted 2024-06-26 16:01:45 +00:00
inherent-impls-overlap-check
inline-const stabilize const_mut_refs 2024-09-15 09:51:32 +02:00
instrument-coverage Update the minimum external LLVM to 18 2024-09-18 13:53:31 -07:00
instrument-xray
interior-mutability
internal stabilize const_fn_floating_point_arithmetic 2024-08-22 08:25:54 +02:00
internal-lints
intrinsics interpret: add missing alignment check in raw_eq 2024-08-27 19:29:52 +02:00
invalid
invalid-compile-flags Fix #128930: Print documentation of CLI options missing their arg 2024-08-11 09:10:30 +01:00
invalid-module-declaration
invalid-self-argument
io-checks Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
issues Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
iterators Gate the type length limit check behind a nightly flag 2024-07-12 21:16:09 -04:00
json On short error format, append primary span label to message 2024-08-06 04:08:10 +00:00
keyword Structured suggestion for extern crate foo when foo isn't resolved in import 2024-07-29 23:49:51 +00:00
kindck Harmonize use of leaf and root obligation in trait error reporting 2024-06-12 20:57:23 -04:00
label Make parse error suggestions verbose and fix spans 2024-07-12 03:02:57 +00:00
lang-items Let InstCombine remove Clone shims inside Clone shims 2024-07-25 15:14:42 -04:00
late-bound-lifetimes Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
layout TL note: current means target 2024-09-20 10:02:14 -07:00
lazy-type-alias LTA: Diag: Detect bivariant ty params that are only used recursively 2024-07-19 18:53:40 +02:00
lazy-type-alias-impl-trait
let-else Make ; suggestions inline 2024-07-12 03:22:32 +00:00
lexer Reserve prefix lifetimes too 2024-09-06 10:32:48 -04:00
lifetimes Re-enable ConstArgKind::Path lowering by default 2024-09-12 13:56:01 -04:00
limits TL note: current means target 2024-09-20 10:02:14 -07:00
linkage-attr Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
lint Auto merge of #130599 - jieyouxu:snake_case_binary_cleanup, r=petrochenkov 2024-09-21 11:16:38 +00:00
liveness Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
loops Fix ... in multline code-skips in suggestions 2024-06-20 04:25:17 +00:00
lowering
lto Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
lub-glb
macro_backtrace
macros Add known-bug and update comments to describe correct behavior in light of bug 2024-09-18 15:13:07 -07:00
malformed Be more accurate about calculating display_col from a BytePos 2024-07-18 20:08:38 +00:00
manual
marker_trait_attr
match Match ergonomics 2024: test type inference 2024-07-05 11:17:49 -04:00
meta
methods Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
mir Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
mir-dataflow
mismatched_types Fix circular fn_sig queries to return the correct number of arguments for methods 2024-09-17 20:54:04 -04:00
missing
missing_non_modrs_mod
missing-trait-bounds
modules
modules_and_files_visibility
moves Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
mut Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
namespace Tweak output of import suggestions 2024-06-13 20:22:21 +00:00
native-library-link-flags Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
never_type stabilize const_mut_refs 2024-09-15 09:51:32 +02:00
nll Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
no_std
non_modrs_mods
non_modrs_mods_and_inline_mods
not-panic
numbers-arithmetic Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
numeric Tweak "field not found" suggestion when giving struct literal for tuple struct type 2024-07-18 18:20:35 +00:00
object-lifetime Hack around a conflict with clippy::needless_lifetimes 2024-09-06 17:06:35 +03:00
object-safety Rollup merge of #127692 - veera-sivarajan:bugfix-125139, r=estebank 2024-09-03 19:13:23 +02:00
obsolete-in-place
offset-of Fix Parser::break_up_float's right span 2024-09-14 12:41:25 +02:00
on-unimplemented Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
operator-recovery Make parse error suggestions verbose and fix spans 2024-07-12 03:02:57 +00:00
or-patterns Reword the "unreachable pattern" explanations 2024-08-19 21:39:57 +02:00
overloaded
packed stabilize raw_ref_op 2024-08-18 19:46:53 +02:00
panic-handler Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
panic-runtime
panics Bless tests 2024-08-02 11:34:54 +00:00
parallel-rustc
parser Add suggestions for expressions in patterns 2024-09-18 20:38:43 +02:00
patchable-function-entry Updated diagnostic messages 2024-06-27 22:24:36 +02:00
pattern Add a machine-applicable suggestion to "unreachable pattern" 2024-09-13 21:01:29 +02:00
pin-macro
polymorphization Don't inline tainted MIR bodies 2024-08-08 20:53:25 -04:00
precondition-checks
print_type_sizes
privacy Bless tests due to new method suggestions. 2024-09-07 21:06:49 +07:00
proc-macro Avoid double-handling of attributes in collect_tokens. 2024-08-24 06:57:47 +10:00
process Bless tests 2024-08-02 11:34:54 +00:00
process-termination
ptr_ops
pub Bless test fallout 2024-08-03 07:57:31 -04:00
qualified
query-system
range Make parse error suggestions verbose and fix spans 2024-07-12 03:02:57 +00:00
raw-ref-op stabilize raw_ref_op 2024-08-18 19:46:53 +02:00
reachable Add a machine-applicable suggestion to "unreachable pattern" 2024-09-13 21:01:29 +02:00
recursion Gate the type length limit check behind a nightly flag 2024-07-12 21:16:09 -04:00
recursion_limit
regions Point at explicit 'static obligations on a trait 2024-08-21 16:40:15 +00:00
repeat-expr Account for let foo = expr; to suggest const foo: Ty = expr; 2024-07-11 20:39:24 +00:00
repr Ban non-array SIMD 2024-09-09 19:39:43 -07:00
reserved
resolve Don't call fn_arg_names for non-fn in resolver 2024-09-07 07:38:22 -04:00
return Fixing span manipulation and indentation of the suggestion introduced by #126187 2024-08-25 20:30:06 +08:00
rfcs Never patterns constitute a read for unsafety 2024-09-18 19:17:38 -04:00
rmeta
runtime
rust-2018 diagnostics: do not warn when a lifetime bound infers itself 2024-08-09 16:16:16 -07:00
rust-2021
rust-2024 Store raw ident span for raw lifetime 2024-09-17 16:43:18 -04:00
rustc-env
rustdoc Be more accurate about calculating display_col from a BytePos 2024-07-18 20:08:38 +00:00
sanitizer Rollup merge of #129179 - compiler-errors:cfi-erase-transparent, r=davidtwco 2024-08-21 18:15:02 +02:00
self Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
sepcomp
shadowed
shell-argfiles
simd Update the minimum external LLVM to 18 2024-09-18 13:53:31 -07:00
single-use-lifetime
sized Detect * operator on !Sized expression 2024-08-08 17:35:40 +00:00
span Ban non-array SIMD 2024-09-09 19:39:43 -07:00
specialization Re-enable ConstArgKind::Path lowering by default 2024-09-12 13:56:01 -04:00
stability-attribute Migrate tests to use -Znext-solver 2024-06-30 17:08:45 +00:00
stable-mir-print Set up false edges in lower_match_tree 2024-07-29 09:50:07 +02:00
stack-protector
static Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
statics Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
stats ignore/fix layout-sensitive tests 2024-08-31 23:56:45 +02:00
std More robust extension checking 2024-09-03 14:36:21 +02:00
stdlib-unit-tests
str Be more accurate about calculating display_col from a BytePos 2024-07-18 20:08:38 +00:00
structs Test more cases of WF-checking for fields 2024-08-05 17:56:50 -07:00
structs-enums Get rid of niche selection's dependence on fields's order 2024-09-18 17:31:56 +08:00
suggestions Implement RTN in resolve_bound_vars and HIR ty lowering 2024-09-20 22:18:57 -04:00
svh
symbol-mangling-version
symbol-names Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
sync
target-feature Revert "Auto merge of #127537 - veluca93:struct_tf, r=BoxyUwU" 2024-09-01 16:35:53 +02:00
test-attrs Update name of Windows abort constant to match platform documentation 2024-07-15 22:21:41 +00:00
thir-print report pat no field error no recoverd struct variant 2024-07-11 00:18:47 +08:00
thread-local Auto merge of #124895 - obeis:static-mut-hidden-ref, r=compiler-errors 2024-09-20 17:25:34 +00:00
threads-sendsync format code in tests/ui/threads-sendsync 2024-08-24 05:32:52 +02:00
tool-attributes Fix diagnostic and add a test for it 2024-07-10 18:56:06 -04:00
track-diagnostics Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
trait-bounds Fix malformed suggestion for repeated maybe unsized bounds 2024-07-14 17:46:25 +05:30
traits Auto merge of #130631 - GuillaumeGomez:rollup-jpgy1iv, r=GuillaumeGomez 2024-09-20 19:51:45 +00:00
transmutability TL note: current means target 2024-09-20 10:02:14 -07:00
transmute Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
treat-err-as-bug Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
trivial-bounds Improve the impl and diag output of lint type_alias_bounds 2024-07-23 01:48:03 +02:00
try-block Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
try-trait Fixing span manipulation and indentation of the suggestion introduced by #126187 2024-08-25 20:30:06 +08:00
tuple Use ordinal number in argument error 2024-07-14 13:50:09 +09:00
type Add tracking issue to core-pattern-type 2024-08-07 20:43:05 -04:00
type-alias Suggest full trait ref (with placeholders) on unresolved assoc tys 2024-07-23 01:26:25 +02:00
type-alias-enum-variants Suggest the struct variant pattern syntax on usage of unit variant pattern for a struct variant 2024-08-28 22:55:57 +09:00
type-alias-impl-trait Revert 'Stabilize -Znext-solver=coherence' 2024-09-11 17:57:04 -04:00
type-inference make invalid_type_param_default lint show up in cargo future-compat reports 2024-07-15 22:05:45 +02:00
typeck Rollup merge of #130275 - compiler-errors:extern-crate, r=lcnr 2024-09-17 17:28:33 +02:00
typeof Account for let foo = expr; to suggest const foo: Ty = expr; 2024-07-11 20:39:24 +00:00
ufcs Bless tests due to new method suggestions. 2024-09-07 21:06:49 +07:00
unboxed-closures Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
underscore-imports Structured suggestion for extern crate foo when foo isn't resolved in import 2024-07-29 23:49:51 +00:00
underscore-lifetime
uniform-paths
uninhabited Add a machine-applicable suggestion to "unreachable pattern" 2024-09-13 21:01:29 +02:00
union Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03:00
unknown-unstable-lints
unop Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
unpretty stabilize raw_ref_op 2024-08-18 19:46:53 +02:00
unresolved Structured suggestion for extern crate foo when foo isn't resolved in import 2024-07-29 23:49:51 +00:00
unsafe Check params for unsafety in THIR 2024-09-18 16:45:48 -04:00
unsized Detect * operator on !Sized expression 2024-08-08 17:35:40 +00:00
unsized-locals
unused-crate-deps
unwind-abis Remove c_unwind from tests and fix tests 2024-06-19 13:54:55 +01:00
use
variance Print the generic parameter along with the variance in dumps. 2024-08-23 23:00:45 +00:00
variants Accurate use rename suggestion span 2024-07-18 00:00:04 +00:00
version
warnings
wasm
wf Fix ICE caused by missing span in a region error 2024-09-09 12:27:36 +05:30
where-clauses Taint infcx when reporting errors 2024-06-19 04:41:56 +00:00
while
windows-subsystem rewrite test-harness to rmake 2024-07-02 11:37:59 -04: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 Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
assign-imm-local-twice.stderr Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
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 Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
augmented-assignments.stderr Peel off explicit (or implicit) deref before suggesting clone on move error in borrowck 2024-07-26 14:41:56 -04:00
auto-instantiate.rs
auto-ref-slice-plus-ref.rs
auto-ref-slice-plus-ref.stderr
autoderef-full-lval.rs
autoderef-full-lval.stderr Change E0369 diagnostic give note information for foreign items. 2024-06-25 10:00:30 +08:00
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 More accurate mutability suggestion 2024-07-04 05:36:34 +00:00
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 Better span for "make binding mutable" suggestion 2024-07-04 02:02:21 +00:00
complex.rs
conservative_impl_trait.rs
conservative_impl_trait.stderr
constructor-lifetime-args.rs
constructor-lifetime-args.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
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.rs
custom_attribute.stderr
custom-attribute-multisegment.rs
custom-attribute-multisegment.stderr
custom-test-frameworks-simple.rs
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 Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
duplicate_entry_error.stderr Rename std::panic::PanicInfo to PanicHookInfo. 2024-06-11 15:47:00 +02:00
duplicate-label-E0381-issue-129274.rs Deduplicate Spans in Uninitialized Check 2024-08-22 09:36:14 -07:00
duplicate-label-E0381-issue-129274.stderr Deduplicate Spans in Uninitialized Check 2024-08-22 09:36:14 -07: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 Revert 'Stabilize -Znext-solver=coherence' 2024-09-11 17:57:04 -04:00
impl-unused-tps.stderr Revert 'Stabilize -Znext-solver=coherence' 2024-09-11 17:57:04 -04:00
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 Update tests for hidden references to mutable static 2024-09-13 14:10:56 +03: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 Support ?Trait bounds in supertraits and dyn Trait under a feature gate 2024-07-25 20:53:33 +03:00
method-output-diff-issue-127263.rs show unit output when there is only output diff in diagnostics 2024-07-06 21:00:30 +08:00
method-output-diff-issue-127263.stderr show unit output when there is only output diff in diagnostics 2024-07-06 21:00:30 +08:00
minus-string.rs
minus-string.stderr Change E0369 diagnostic give note information for foreign items. 2024-06-25 10:00:30 +08:00
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
msvc-opt-minsize.rs rewrite test-harness to rmake 2024-07-02 11:37:59 -04:00
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_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
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
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 Use ordinal number in argument error 2024-07-14 13:50:09 +09:00
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_implementation-closures.rs
panic-while-printing.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-calling-conventions.rs Migrate run-make/print-calling-conventions to ui-test 2024-08-03 20:09:42 -04:00
print-calling-conventions.stdout add C-cmse-nonsecure-entry ABI 2024-09-21 13:04:14 +02:00
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 Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
shadow-bool.rs
shadowed-use-visibility.rs
short-error-format.rs
short-error-format.stderr On short error format, append primary span label to message 2024-08-06 04:08:10 +00:00
sized-borrowed-pointer.rs
sized-cycle-note.rs
sized-cycle-note.stderr
sized-owned-pointer.rs
sse2.rs sudo CI=green && Review changes <3 2024-06-25 18:06:22 +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_length_limit.polonius.stderr
type_length_limit.rs Gate the type length limit check behind a nightly flag 2024-07-12 21:16:09 -04:00
type_length_limit.stderr Re-implement a type-size based limit 2024-07-02 15:48:48 -04:00
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
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 Always use a colon in //@ normalize-*: headers 2024-07-11 12:23:44 +10:00
unknown-llvm-arg.stderr
unnamed_argument_mode.rs
unreachable-code-1.rs
unreachable-code.rs
unsigned-literal-negation.rs
unsigned-literal-negation.stderr Tweak -1 as usize suggestion 2024-07-05 00:52:01 +00:00
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 Show used attribute's kind for user when find it isn't applied to a static variable. 2024-06-29 19:39:09 +08:00
using-target-feature-unstable.rs
usize-generic-argument-parent.rs
usize-generic-argument-parent.stderr
utf8_idents.rs
utf8-bom.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
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>.