diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2014-07-07 16:35:15 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2014-07-17 14:05:36 -0700 |
| commit | de70d76373e05fcf0f421cedb185b08de10a714c (patch) | |
| tree | ccfdaa415ce2bb947f40746a3b06a8980ab6cd16 /src/libsyntax/ext/deriving/generic | |
| parent | ca24abd4d2d02dd96ef323074c9a21d44b3fd202 (diff) | |
| download | rust-de70d76373e05fcf0f421cedb185b08de10a714c.tar.gz rust-de70d76373e05fcf0f421cedb185b08de10a714c.zip | |
librustc: Remove cross-borrowing of `Box<T>` to `&T` from the language,
except where trait objects are involved.
Part of issue #15349, though I'm leaving it open for trait objects.
Cross borrowing for trait objects remains because it is needed until we
have DST.
This will break code like:
fn foo(x: &int) { ... }
let a = box 3i;
foo(a);
Change this code to:
fn foo(x: &int) { ... }
let a = box 3i;
foo(&*a);
[breaking-change]
Diffstat (limited to 'src/libsyntax/ext/deriving/generic')
| -rw-r--r-- | src/libsyntax/ext/deriving/generic/mod.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libsyntax/ext/deriving/generic/mod.rs b/src/libsyntax/ext/deriving/generic/mod.rs index 46efdccadec..f1c1784146a 100644 --- a/src/libsyntax/ext/deriving/generic/mod.rs +++ b/src/libsyntax/ext/deriving/generic/mod.rs @@ -954,7 +954,9 @@ impl<'a> MethodDef<'a> { // expressions for referencing every field of every // Self arg, assuming all are instances of VariantK. // Build up code associated with such a case. - let substructure = EnumMatching(index, variant, field_tuples); + let substructure = EnumMatching(index, + &*variant, + field_tuples); let arm_expr = self.call_substructure_method( cx, trait_, type_ident, self_args, nonself_args, &substructure); |
