rust/tests/ui
bors eb9da7bfa3 Auto merge of #111473 - compiler-errors:opaques, r=lcnr
Handle opaques in the new solver (take 2?)

Implement a new strategy for handling opaques in the new solver.

First, queries now carry both their defining anchor and the opaques that were defined in the inference context at the time of canonicalization. These are both used to pre-populate the inference context used by the canonical query.

Second, use the normalizes-to goal to handle opaque types in the new solver. This means that opaques are handled like projection aliases, but with their own rules:
* Can only define opaques if they're "defining uses" (i.e. have unique params in all their substs).
* Can only define opaques that are from the anchor.
* Opaque type definitions are modulo regions. So that means `Opaque<'?0r> = HiddenTy1` and `Opaque<?'1r> = HiddenTy2` equate `HiddenTy1` and `HiddenTy2` instead of defining them as different opaque type keys.
2023-05-25 08:41:54 +00:00
..
abi
alloc-error
allocator
annotate-snippet
anon-params
argument-suggestions
array-slice-vec
asm
associated-consts
associated-inherent-types Add tests for pretty-printing inherent projections 2023-05-24 01:17:38 +02:00
associated-item
associated-type-bounds
associated-types
async-await Don't ICE on RPITIT when promoting trait preds to associated type bounds 2023-05-23 03:43:09 +00:00
attributes
auto-traits
autoref-autoderef
auxiliary
bench
binding
binop
blind
block-result
borrowck
box
btreemap
builtin-superkinds
c-variadic
cast
cfg
chalkify
check-cfg
closure_context
closure-expected-type
closures
cmse-nonsecure
codegen
codemap_tests
coercion
coherence
coinduction
command
compare-method
compiletest-self-test
conditional-compilation
confuse-field-and-method
const_prop
const-generics
const-ptr
consts
crate-loading
cross
cross-crate
custom_test_frameworks
cycle-trait
debuginfo
definition-reachable
dep-graph
deployment-target
deprecation
deref-patterns
derived-errors
derives
deriving
dest-prop
destructuring-assignment
diagnostic-flags
diagnostic-width
did_you_mean
directory_ownership
disallowed-deconstructing
discrim
dollar-crate
drop
drop-bounds
dropck
dst
duplicate
dyn-drop
dyn-keyword
dyn-star Strongly prefer alias and param-env bounds 2023-05-25 03:35:14 +00:00
dynamically-sized-types
editions
empty
entry-point
enum
enum-discriminant
error-codes
errors
explicit
expr
extenv
extern
extern-flag
feature-gates
fmt
fn
for
for-loop-while
foreign
fully-qualified-type
function-pointer
functional-struct-update
functions-closures
generator
generic-associated-types
generics
half-open-range-patterns
hashmap
hello_world
higher-rank-trait-bounds
hr-subtype
hygiene
illegal-sized-bound
impl-header-lifetime-elision
impl-trait
implied-bounds
imports fix(resolve): not defined extern crate shadow_name 2023-05-23 13:14:34 +08:00
include-macros
incoherent-inherent-impls
inference
infinite
inherent-impls-overlap-check
inline-const
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-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_non_modrs_mod
missing-trait-bounds
modules
modules_and_files_visibility
moves
mut
namespace
native-library-link-flags
never_type Emit diagnostic for privately uninhabited uncovered witnesses. 2023-05-24 19:16:07 +00:00
nll
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
packed-struct
panic-handler
panic-runtime
panics
parser
pattern
pin-macro
polymorphization
print_type_sizes
print-fuel
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
rfc-0107-bind-by-move-pattern-guards
rfc-1445-restrict-constants-in-patterns
rfc-1717-dllimport
rfc-1937-termination-trait
rfc-2005-default-binding-mode
rfc-2008-non-exhaustive
rfc-2027-object-safe-for-dispatch
rfc-2091-track-caller
rfc-2093-infer-outlives
rfc-2126-crate-paths
rfc-2126-extern-absolute-paths
rfc-2294-if-let-guard Run AST validation on match guards correctly 2023-05-22 14:52:52 +01:00
rfc-2306
rfc-2361-dbg-macro
rfc-2397-do-not-recommend
rfc-2457
rfc-2497-if-let-chains Run AST validation on match guards correctly 2023-05-22 14:52:52 +01:00
rfc-2565-param-attrs
rfc-2627-raw-dylib
rfc-2632-const-trait-impl
rfcs
rmeta
runtime
rust-2018
rust-2021
rustdoc
sanitize
self Don't ICE if method receiver fails to unify with arbitrary_self_types 2023-05-23 03:23:52 +00:00
sepcomp
shadowed
simd
single-use-lifetime
sized
span
specialization
stability-attribute
stack-protector
static
statics
stats
std
stdlib-unit-tests
str
structs
structs-enums
suggestions
svh
symbol-names
sync
target-feature
test-attrs libtest: Improve error when missing -Zunstable-options 2023-05-24 11:18:20 -05:00
thir-print
thread-local
threads-sendsync
tool-attributes
track-diagnostics
trait-bounds
traits Strongly prefer alias and param-env bounds 2023-05-25 03:35:14 +00:00
transmutability
transmute
treat-err-as-bug
trivial-bounds
try-block
try-trait
tuple
type
type-alias
type-alias-enum-variants
type-alias-impl-trait Check opaques for mismatch during writeback 2023-05-22 23:33:34 +00:00
type-inference
typeck
typeof
ufcs
unboxed-closures
underscore-imports
underscore-lifetime
uniform-paths
uninhabited Emit diagnostic for privately uninhabited uncovered witnesses. 2023-05-24 19:16:07 +00:00
union
unknown-unstable-lints
unpretty
unresolved
unsafe
unsized
unsized-locals Always require closure parameters to be Sized 2023-05-23 12:46:25 -04:00
unused-crate-deps
unwind-abis
use
variance
variants
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
commandline-argfile-badutf8.args
commandline-argfile-badutf8.rs
commandline-argfile-badutf8.stderr
commandline-argfile-missing.rs
commandline-argfile-missing.stderr
commandline-argfile.args
commandline-argfile.rs
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.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
does-nothing.rs
does-nothing.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_global_asm.rs
empty-allocation-non-null.rs
empty-allocation-rvalue-non-null.rs
empty-type-parameter-list.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
extern-mod-syntax.rs
extoption_env-no-args.rs
extoption_env-no-args.stderr
extoption_env-not-defined.rs
extoption_env-not-string-literal.rs
extoption_env-not-string-literal.stderr
extoption_env-too-many-args.rs
extoption_env-too-many-args.stderr
fact.rs
fail-simple.rs
fail-simple.stderr
ffi_const2.rs
ffi_const2.stderr
ffi_const.rs
ffi_const.stderr
ffi_pure.rs
ffi_pure.stderr
ffi_returns_twice.rs
ffi_returns_twice.stderr
filter-block-view-items.rs
fn-in-pat.rs
fn-in-pat.stderr
foreign-fn-return-lifetime.fixed
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
higher-lifetime-bounds.rs
higher-lifetime-bounds.stderr
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
index_message.rs
index_message.stderr
index-bot.rs
index-bot.stderr
index-help.rs
index-help.stderr
indexing-requires-a-uint.rs
indexing-requires-a-uint.stderr
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-2804.rs
issue-11881.rs
issue-13560.rs
issue-15924.rs
issue-16822.rs
issue-18502.rs
issue-24106.rs
issue-76387-llvm-miscompile.rs
issue-94866.rs
issue-94866.stderr
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
macro-quote-test.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_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-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
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_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-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
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_2018_preview.rs
tool_lints-fail.rs
tool_lints-fail.stderr
tool_lints-rpass.rs
tool_lints.rs
tool_lints.stderr
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
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
type_length_limit.stderr
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-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_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
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