rust/tests/ui/generator
David Wood 037b27430b
abi: unsized field in union - assert to delay bug
Unions cannot have unsized fields, and as such, layout computation for
unions asserts that each union field is sized (as this would normally
have halted compilation earlier).

However, if a generator ends up with an unsized local - a circumstance
in which an error will always have been emitted earlier, for example, if
attempting to dereference a `&str` - then the generator transform will
produce a union with an unsized field.

Since #110107, later passes will be run, such as constant propagation,
and can attempt layout computation on the generator, which will result
in layout computation of `str` in the context of it being a field of a
union - and so the aforementioned assertion would cause an ICE.

It didn't seem appropriate to try and detect this case in the MIR body
and skip this specific pass; tainting the MIR body or delaying a bug
from the generator transform (or elsewhere) wouldn't prevent this either
(as neither would prevent the later pass from running); and tainting when
the deref of `&str` is reported, if that's possible, would unnecessarily
prevent potential other errors from being reported later in compilation,
and is very tailored to this specific case of getting a unsized type in
a generator.

Given that this circumstance can only happen when an error should have
already been reported, the correct fix appears to be just changing the
assert to a delayed bug. This will still assert if there is some
circumstance where this occurs and no error has been reported, but it
won't crash the compiler in this instance.

Signed-off-by: David Wood <david@davidtw.co>
2023-07-25 15:50:39 +01:00
..
auxiliary Move /src/test to /tests 2023-01-11 09:32:08 +00:00
print Bless tests 2023-04-05 15:59:29 +00:00
addassign-yield.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
async-generator-issue-67158.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
async-generator-issue-67158.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
auto-trait-regions.drop_tracking_mir.stderr Extend and use hir::Node::body_id 2023-04-19 19:13:45 +00:00
auto-trait-regions.drop_tracking.stderr Extend and use hir::Node::body_id 2023-04-19 19:13:45 +00:00
auto-trait-regions.no_drop_tracking.stderr Extend and use hir::Node::body_id 2023-04-19 19:13:45 +00:00
auto-trait-regions.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
borrow-in-tail-expr.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
borrowing.drop_tracking_mir.stderr Always require Drop for generators. 2023-01-27 18:58:23 +00:00
borrowing.drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
borrowing.no_drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
borrowing.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
clone-impl-async.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
clone-impl-async.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
clone-impl-static.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
clone-impl-static.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
clone-impl.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
clone-impl.stderr Tweak output for 'add line' suggestion 2023-04-12 22:50:10 +00:00
conditional-drop.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
control-flow.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
derived-drop-parent-expr.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
discriminant.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
drop-and-replace.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
drop-control-flow.rs Change src/test to tests in source files, fix tidy and tests 2023-01-11 09:32:13 +00:00
drop-env.rs Rename drop_copy lint to dropping_copy_types 2023-05-21 13:37:32 +02:00
drop-track-addassign-yield.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
drop-tracking-error-body.rs Handle error body when in generator layout 2023-05-13 16:45:19 +01:00
drop-tracking-error-body.stderr Handle error body when in generator layout 2023-05-13 16:45:19 +01:00
drop-tracking-parent-expression.drop_tracking_mir.stderr Bless tests. 2023-01-27 20:10:17 +00:00
drop-tracking-parent-expression.drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
drop-tracking-parent-expression.no_drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
drop-tracking-parent-expression.rs Bless tests. 2023-01-27 20:10:17 +00:00
drop-tracking-yielding-in-match-guards.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
drop-yield-twice.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
drop-yield-twice.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
dropck-resume.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
dropck-resume.stderr Do not set up wrong span for adjustments 2023-07-10 20:09:26 +00:00
dropck.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
dropck.stderr Do not set up wrong span for adjustments 2023-07-10 20:09:26 +00:00
generator-region-requirements.migrate.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-region-requirements.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-region-requirements.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-resume-after-panic.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-with-nll.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-with-nll.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-yielding-or-returning-itself.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
generator-yielding-or-returning-itself.stderr Specify what 'this' actually is 2023-02-21 05:21:07 +00:00
issue-44197.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-45729-unsafe-in-generator.mir.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-45729-unsafe-in-generator.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-45729-unsafe-in-generator.thir.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-48048.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-48048.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-52304.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-52398.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-52398.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-53548-1.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-53548.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-57017.no_drop_tracking.stderr Adjust tests for new drop and forget lints 2023-05-10 19:36:02 +02:00
issue-57017.rs Rename drop_ref lint to dropping_references 2023-05-21 14:16:41 +02:00
issue-57084.rs vars are ? 2023-04-25 19:53:09 +00:00
issue-57084.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-57478.no_drop_tracking.stderr Bless tests. 2023-01-27 20:10:17 +00:00
issue-57478.rs Bless tests. 2023-01-27 20:10:17 +00:00
issue-58888.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-61442-stmt-expr-with-drop.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-62506-two_awaits.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-64620-yield-array-element.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-64620-yield-array-element.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-68112.drop_tracking_mir.stderr Bless tests. 2023-01-27 20:10:17 +00:00
issue-68112.drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
issue-68112.no_drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
issue-68112.rs Bless tests. 2023-01-27 20:10:17 +00:00
issue-69017.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-69039.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-87142.rs Split out a separate feature gate for impl trait in associated types 2023-04-12 16:17:31 +00:00
issue-88653.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-88653.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-91477.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-91477.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-93161.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
issue-102645.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
issue-102645.stderr diagnostics: update test cases to refer to assoc fn with self as method 2023-02-22 08:40:47 -07:00
issue-105084.drop_tracking_mir.stderr Remove uses of box_syntax in rustc and tools 2023-03-12 13:19:46 +00:00
issue-105084.rs Remove uses of box_syntax in rustc and tools 2023-03-12 13:19:46 +00:00
issue-110929-generator-conflict-error-ice.rs Fix an ICE in conflict errors diagnostics 2023-04-28 17:37:56 +00:00
issue-110929-generator-conflict-error-ice.stderr Fix an ICE in conflict errors diagnostics 2023-04-28 17:37:56 +00:00
issue-113279.rs abi: unsized field in union - assert to delay bug 2023-07-25 15:50:39 +01:00
issue-113279.stderr abi: unsized field in union - assert to delay bug 2023-07-25 15:50:39 +01:00
iterator-count.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
layout-error.rs Add some extra information to opaque type cycle errors 2023-07-05 07:43:35 +00:00
layout-error.stderr Add some extra information to opaque type cycle errors 2023-07-05 07:43:35 +00:00
live-upvar-across-yield.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
match-bindings.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
match-bindings.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
metadata-sufficient-for-layout.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
metadata-sufficient-for-layout.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
nested_generators.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
niche-in-generator.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
non-static-is-unpin.rs Rename drop_copy lint to dropping_copy_types 2023-05-21 13:37:32 +02:00
not-send-sync.drop_tracking_mir.stderr Bless tests. 2023-01-27 20:10:17 +00:00
not-send-sync.drop_tracking.stderr Bless tests. 2023-01-27 20:10:17 +00:00
not-send-sync.no_drop_tracking.stderr Bless tests. 2023-01-27 20:10:17 +00:00
not-send-sync.rs Bless tests. 2023-01-27 20:10:17 +00:00
overlap-locals.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
panic-drops-resume.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
panic-drops.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
panic-safe.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
parent-expression.drop_tracking_mir.stderr Bless tests. 2023-01-27 20:10:17 +00:00
parent-expression.drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
parent-expression.no_drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
parent-expression.rs Bless tests. 2023-01-27 20:10:17 +00:00
partial-drop.drop_tracking.stderr Bless tests. 2023-01-27 20:10:17 +00:00
partial-drop.no_drop_tracking.stderr Bless tests. 2023-01-27 20:10:17 +00:00
partial-drop.rs Bless tests. 2023-01-27 20:10:17 +00:00
partial-initialization-across-yield.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
partial-initialization-across-yield.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
pattern-borrow.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
pattern-borrow.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
pin-box-generator.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
reborrow-mut-upvar.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
reborrow-mut-upvar.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ref-escapes-but-not-over-yield.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ref-escapes-but-not-over-yield.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ref-upvar-not-send.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
ref-upvar-not-send.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
reinit-in-match-guard.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
resume-after-return.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
resume-arg-late-bound.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
resume-arg-late-bound.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
resume-arg-size.rs Rename drop_copy lint to dropping_copy_types 2023-05-21 13:37:32 +02:00
resume-live-across-yield.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
retain-resume-ref.drop_tracking_mir.stderr Always require Drop for generators. 2023-01-27 18:58:23 +00:00
retain-resume-ref.drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
retain-resume-ref.no_drop_tracking.stderr Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
retain-resume-ref.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
size-moved-locals.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
sized-yield.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
sized-yield.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
smoke-resume-args.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
smoke.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
static-generators.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
static-mut-reference-across-yield.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
static-not-unpin.current.stderr Assemble Unpin candidates specially for generators in new solver 2023-04-14 03:13:56 +00:00
static-not-unpin.next.stderr Assemble Unpin candidates specially for generators in new solver 2023-04-14 03:13:56 +00:00
static-not-unpin.rs Assemble Unpin candidates specially for generators in new solver 2023-04-14 03:13:56 +00:00
static-reference-across-yield.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
too-live-local-in-immovable-gen.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
too-live-local-in-immovable-gen.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
too-many-parameters.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
too-many-parameters.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
type-mismatch-error.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
type-mismatch-error.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
type-mismatch-signature-deduction.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
type-mismatch-signature-deduction.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
unresolved-ct-var-drop-tracking.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
unresolved-ct-var-drop-tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
unresolved-ct-var.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
unresolved-ct-var.stderr Tweak await span 2023-04-27 17:18:11 +00:00
xcrate-reachable.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
xcrate.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-args-rev.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-args-rev.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-args.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-args.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-const.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-const.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-function.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-function.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-initializer.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-initializer.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-static.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-in-static.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-outside-generator-issue-78653.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-outside-generator-issue-78653.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-subtype.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-subtype.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-while-iterating.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-while-iterating.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-while-local-borrowed.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-while-local-borrowed.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-while-ref-reborrowed.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yield-while-ref-reborrowed.stderr Move /src/test to /tests 2023-01-11 09:32:08 +00:00
yielding-in-match-guards.rs Move /src/test to /tests 2023-01-11 09:32:08 +00:00