]> git.lizzy.rs Git - rust.git/commit
Change untagged_unions to not allow union fields with drop
authorUlrik Sverdrup <bluss@users.noreply.github.com>
Wed, 19 Dec 2018 19:58:20 +0000 (20:58 +0100)
committerOliver Scherer <github35764891676564198441@oli-obk.de>
Fri, 11 Oct 2019 08:43:54 +0000 (10:43 +0200)
commit2f0c821be9ba9cdf52a45c327b7d3f2831626225
treec3bbbab51b2b312f35c5fd60694b0e7b4336e4c3
parent84ca0a1cb47f71a43ee16da2f6bc173577b35cb9
Change untagged_unions to not allow union fields with drop

Union fields may now never have a type with attached destructor.
This for example allows unions to use arbitrary field types only by
wrapping
them in ManuallyDrop.

The stable rule remains, that union fields must be Copy. We use the new
rule for the `untagged_union` feature.

See RFC 2514.

Note for ui tests:
We can't test move out through Box's deref-move since we can't
have a Box in a union anymore.
17 files changed:
src/librustc/Cargo.toml
src/librustc/ty/util.rs
src/librustc_typeck/check/mod.rs
src/librustc_typeck/error_codes.rs
src/test/run-pass/union/union-manuallydrop.rs [new file with mode: 0644]
src/test/ui/feature-gates/feature-gate-associated_type_bounds.rs
src/test/ui/rfc-2093-infer-outlives/explicit-union.stderr
src/test/ui/rfc-2093-infer-outlives/nested-union.stderr
src/test/ui/union/union-borrow-move-parent-sibling.stderr
src/test/ui/union/union-derive-clone.rs
src/test/ui/union/union-derive-clone.stderr
src/test/ui/union/union-unsafe.rs
src/test/ui/union/union-unsafe.stderr
src/test/ui/union/union-with-drop-fields-lint.rs [deleted file]
src/test/ui/union/union-with-drop-fields-lint.stderr [deleted file]
src/test/ui/union/union-with-drop-fields.rs [new file with mode: 0644]
src/test/ui/union/union-with-drop-fields.stderr [new file with mode: 0644]