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
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
async-generator-issue-67158.stderr
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
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
clone-impl-async.stderr
clone-impl-static.rs
clone-impl-static.stderr
clone-impl.rs
clone-impl.stderr Tweak output for 'add line' suggestion 2023-04-12 22:50:10 +00:00
conditional-drop.rs
control-flow.rs
derived-drop-parent-expr.rs
discriminant.rs
drop-and-replace.rs
drop-control-flow.rs
drop-env.rs Rename drop_copy lint to dropping_copy_types 2023-05-21 13:37:32 +02:00
drop-track-addassign-yield.rs
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
drop-yield-twice.stderr
dropck-resume.rs
dropck-resume.stderr Do not set up wrong span for adjustments 2023-07-10 20:09:26 +00:00
dropck.rs
dropck.stderr Do not set up wrong span for adjustments 2023-07-10 20:09:26 +00:00
generator-region-requirements.migrate.stderr
generator-region-requirements.rs
generator-region-requirements.stderr
generator-resume-after-panic.rs
generator-with-nll.rs
generator-with-nll.stderr
generator-yielding-or-returning-itself.rs
generator-yielding-or-returning-itself.stderr Specify what 'this' actually is 2023-02-21 05:21:07 +00:00
issue-44197.rs
issue-45729-unsafe-in-generator.mir.stderr
issue-45729-unsafe-in-generator.rs
issue-45729-unsafe-in-generator.thir.stderr
issue-48048.rs
issue-48048.stderr
issue-52304.rs
issue-52398.rs
issue-52398.stderr
issue-53548-1.rs
issue-53548.rs
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
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
issue-61442-stmt-expr-with-drop.rs
issue-62506-two_awaits.rs
issue-64620-yield-array-element.rs
issue-64620-yield-array-element.stderr
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
issue-69039.rs
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
issue-88653.stderr
issue-91477.rs
issue-91477.stderr
issue-93161.rs Test the 3 generator handling versions for generator/async tests. 2023-01-27 18:58:13 +00:00
issue-102645.rs
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
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
match-bindings.rs
match-bindings.stderr
metadata-sufficient-for-layout.rs
metadata-sufficient-for-layout.stderr
nested_generators.rs
niche-in-generator.rs
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
panic-drops-resume.rs
panic-drops.rs
panic-safe.rs
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
partial-initialization-across-yield.stderr
pattern-borrow.rs
pattern-borrow.stderr
pin-box-generator.rs
reborrow-mut-upvar.rs
reborrow-mut-upvar.stderr
ref-escapes-but-not-over-yield.rs
ref-escapes-but-not-over-yield.stderr
ref-upvar-not-send.rs
ref-upvar-not-send.stderr
reinit-in-match-guard.rs
resume-after-return.rs
resume-arg-late-bound.rs
resume-arg-late-bound.stderr
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
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
sized-yield.rs
sized-yield.stderr
smoke-resume-args.rs
smoke.rs
static-generators.rs
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
too-live-local-in-immovable-gen.rs
too-live-local-in-immovable-gen.stderr
too-many-parameters.rs
too-many-parameters.stderr
type-mismatch-error.rs
type-mismatch-error.stderr
type-mismatch-signature-deduction.rs
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
unresolved-ct-var-drop-tracking.stderr Tweak await span 2023-04-27 17:18:11 +00:00
unresolved-ct-var.rs
unresolved-ct-var.stderr Tweak await span 2023-04-27 17:18:11 +00:00
xcrate-reachable.rs
xcrate.rs
yield-in-args-rev.rs
yield-in-args-rev.stderr
yield-in-args.rs
yield-in-args.stderr
yield-in-const.rs
yield-in-const.stderr
yield-in-function.rs
yield-in-function.stderr
yield-in-initializer.rs
yield-in-initializer.stderr
yield-in-static.rs
yield-in-static.stderr
yield-outside-generator-issue-78653.rs
yield-outside-generator-issue-78653.stderr
yield-subtype.rs
yield-subtype.stderr
yield-while-iterating.rs
yield-while-iterating.stderr
yield-while-local-borrowed.rs
yield-while-local-borrowed.stderr
yield-while-ref-reborrowed.rs
yield-while-ref-reborrowed.stderr
yielding-in-match-guards.rs