diff options
| author | bors <bors@rust-lang.org> | 2017-06-29 15:04:31 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-06-29 15:04:31 +0000 |
| commit | 686ec28ceaedb2a26423d48b90da210d491915cc (patch) | |
| tree | c6010b7391aba410170fad64d310b1dc3eee2f13 /src/libsyntax | |
| parent | d0e0f53376766308850d3f79ec6ed0b12dc10e49 (diff) | |
| parent | 94862c601be15a8edd93539244177f5a9145374d (diff) | |
| download | rust-686ec28ceaedb2a26423d48b90da210d491915cc.tar.gz rust-686ec28ceaedb2a26423d48b90da210d491915cc.zip | |
Auto merge of #42527 - qnighy:unsized-tuple-coercions, r=arielb1
Unsized tuple coercions Part of #18469. Fixes #32702. #37685 and #34451 might also be related. This PR does the following: - Introduce explicit `Sized` constraints on tuple initializers, similar to that of record-struct initializers. Not much relevant to the main contribution but I noticed this when making tests for unsized tuple coercions. - Implement `(.., T): Unsize<(.., U)>` where `T: Unsize<U>`. - Assume `(.., T)` is MaybeUnsizedUnivariant. - Modify `src/librustc/ty/util.rs` and `src/librustc_trans/glue.rs` so that tuples and structs are uniformly traversed when translating.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/feature_gate.rs | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 74bf19b841e..df8ee189d21 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -357,6 +357,9 @@ declare_features! ( // Allows a test to fail without failing the whole suite (active, allow_fail, "1.19.0", Some(42219)), + + // Allows unsized tuple coercion. + (active, unsized_tuple_coercion, "1.20.0", Some(42877)), ); declare_features! ( @@ -1041,6 +1044,9 @@ pub const EXPLAIN_VIS_MATCHER: &'static str = pub const EXPLAIN_PLACEMENT_IN: &'static str = "placement-in expression syntax is experimental and subject to change."; +pub const EXPLAIN_UNSIZED_TUPLE_COERCION: &'static str = + "Unsized tuple coercion is not stable enough for use and is subject to change"; + struct PostExpansionVisitor<'a> { context: &'a Context<'a>, } |
