From 5c11392b14c3ed55b8166d3b790eeeb470764630 Mon Sep 17 00:00:00 2001 From: Scott McMurray Date: Sat, 1 Dec 2018 16:33:05 -0800 Subject: [PATCH 01/46] Redo the docs for Vec::set_len Inspired by the recent conversation on IRLO. --- src/liballoc/vec.rs | 80 ++++++++++++++++++++++++++++++--------------- 1 file changed, 53 insertions(+), 27 deletions(-) diff --git a/src/liballoc/vec.rs b/src/liballoc/vec.rs index f7a0bbdceafc9..4ff38247dae24 100644 --- a/src/liballoc/vec.rs +++ b/src/liballoc/vec.rs @@ -748,28 +748,64 @@ impl Vec { self } - /// Sets the length of a vector. + /// Forces the length of a vector to a particular value. /// - /// This will explicitly set the size of the vector, without actually - /// modifying its buffers, so it is up to the caller to ensure that the - /// vector is actually the specified size. + /// This is a low-level operation that maintains none of the normal + /// invariants of the type. Normally changing the length of a `Vec` + /// is done using one of the safe operations instead, such as + /// [`truncate`], [`resize`], [`extend`], or [`clear`]. /// - /// # Examples + /// [`truncate`]: #method.truncate + /// [`resize`]: #method.resize + /// [`extend`]: #method.extend-1 + /// [`clear`]: #method.clear /// - /// ``` - /// use std::ptr; + /// # Safety /// - /// let mut vec = vec!['r', 'u', 's', 't']; + /// - `new_len` must be less than or equal to `capacity()`. + /// - All elements between past the previous end up to the `new_len` + /// must be initialized. /// - /// unsafe { - /// ptr::drop_in_place(&mut vec[3]); - /// vec.set_len(3); + /// # Examples + /// + /// This method can be useful for situations in which the `Vec` is + /// serving as a buffer for other code, particularly over FFI: + /// + /// ```no_run + /// # #![allow(dead_code)] + /// # // This is just a minimal skeleton for the doc example; + /// # // don't use this as a starting point for a real library. + /// # pub struct StreamWrapper { strm: *mut std::ffi::c_void } + /// # const Z_OK: i32 = 0; + /// # extern "C" { + /// # fn deflateGetDictionary( + /// # strm: *mut std::ffi::c_void, + /// # dictionary: *mut u8, + /// # dictLength: *mut usize, + /// # ) -> i32; + /// # } + /// # impl StreamWrapper { + /// pub fn get_dictionary(&self) -> Option> { + /// // Per the docs, "32768 bytes is always enough". + /// let mut dict = Vec::with_capacity(32_768); + /// let mut dict_length = 0; + /// unsafe { + /// // Make the FFI call... + /// let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length); + /// if r == Z_OK { + /// // ...and update the length to what was initialized. + /// dict.set_len(dict_length); + /// Some(dict) + /// } else { + /// None + /// } + /// } /// } - /// assert_eq!(vec, ['r', 'u', 's']); + /// # } /// ``` /// - /// In this example, there is a memory leak since the memory locations - /// owned by the inner vectors were not freed prior to the `set_len` call: + /// While the following example is sound, there is a memory leak since + /// the inner vectors were not freed prior to the `set_len` call: /// /// ``` /// let mut vec = vec![vec![1, 0, 0], @@ -780,21 +816,11 @@ impl Vec { /// } /// ``` /// - /// In this example, the vector gets expanded from zero to four items - /// without any memory allocations occurring, resulting in vector - /// values of unallocated memory: - /// - /// ``` - /// let mut vec: Vec = Vec::new(); - /// - /// unsafe { - /// vec.set_len(4); - /// } - /// ``` + /// (Instead, one would normally use [`clear`] in this situation.) #[inline] #[stable(feature = "rust1", since = "1.0.0")] - pub unsafe fn set_len(&mut self, len: usize) { - self.len = len; + pub unsafe fn set_len(&mut self, new_len: usize) { + self.len = new_len; } /// Removes an element from the vector and returns it. From ac642aba074969860f9fb53fb9e2d52f0e0203cb Mon Sep 17 00:00:00 2001 From: Scott McMurray Date: Tue, 11 Dec 2018 22:17:35 -0800 Subject: [PATCH 02/46] Update the comment some more following CR feedback --- src/liballoc/vec.rs | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/liballoc/vec.rs b/src/liballoc/vec.rs index 4ff38247dae24..b987b94500fc4 100644 --- a/src/liballoc/vec.rs +++ b/src/liballoc/vec.rs @@ -748,10 +748,10 @@ impl Vec { self } - /// Forces the length of a vector to a particular value. + /// Forces the length of the vector to `new_len`. /// /// This is a low-level operation that maintains none of the normal - /// invariants of the type. Normally changing the length of a `Vec` + /// invariants of the type. Normally changing the length of a vector /// is done using one of the safe operations instead, such as /// [`truncate`], [`resize`], [`extend`], or [`clear`]. /// @@ -762,14 +762,15 @@ impl Vec { /// /// # Safety /// - /// - `new_len` must be less than or equal to `capacity()`. - /// - All elements between past the previous end up to the `new_len` - /// must be initialized. + /// - `new_len` must be less than or equal to [`capacity()`]. + /// - The elements at `old_len..new_len` must be initialized. + /// + /// [`capacity()`]: #method.capacity /// /// # Examples /// - /// This method can be useful for situations in which the `Vec` is - /// serving as a buffer for other code, particularly over FFI: + /// This method can be useful for situations in which the vector + /// is serving as a buffer for other code, particularly over FFI: /// /// ```no_run /// # #![allow(dead_code)] @@ -786,7 +787,7 @@ impl Vec { /// # } /// # impl StreamWrapper { /// pub fn get_dictionary(&self) -> Option> { - /// // Per the docs, "32768 bytes is always enough". + /// // Per the FFI method's docs, "32768 bytes is always enough". /// let mut dict = Vec::with_capacity(32_768); /// let mut dict_length = 0; /// unsafe { @@ -816,7 +817,8 @@ impl Vec { /// } /// ``` /// - /// (Instead, one would normally use [`clear`] in this situation.) + /// Normally, here, one would use [`clear`] instead to correctly drop + /// the contents and thus not leak memory. #[inline] #[stable(feature = "rust1", since = "1.0.0")] pub unsafe fn set_len(&mut self, new_len: usize) { From 0eacf2cb240606343284a2d38b0f54b6028b134d Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Fri, 21 Dec 2018 15:08:33 +0100 Subject: [PATCH 03/46] Sidestep ICE in `FieldPlacement::count` by not calling it when count will not fit in host's usize. --- src/librustc/ty/layout.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/librustc/ty/layout.rs b/src/librustc/ty/layout.rs index f4506c8e81976..2bc352d1d9923 100644 --- a/src/librustc/ty/layout.rs +++ b/src/librustc/ty/layout.rs @@ -1852,7 +1852,11 @@ impl<'a, 'tcx> LayoutCx<'tcx, TyCtxt<'a, 'tcx, 'tcx>> { return Ok(None); } } - if let FieldPlacement::Array { .. } = layout.fields { + if let FieldPlacement::Array { count: original_64_bit_count, .. } = layout.fields { + // rust-lang/rust#57038: avoid ICE within FieldPlacement::count when count too big + if original_64_bit_count > usize::max_value() as u64 { + return Err(LayoutError::SizeOverflow(layout.ty)); + } if layout.fields.count() > 0 { return self.find_niche(layout.field(self, 0)?); } else { From 61fb909559bc61e2179f3ea7b62b60e2e7df3ac0 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Wed, 2 Jan 2019 21:05:37 -0800 Subject: [PATCH 04/46] Update src/liballoc/vec.rs Add @centril's comment Co-Authored-By: scottmcm --- src/liballoc/vec.rs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/liballoc/vec.rs b/src/liballoc/vec.rs index b987b94500fc4..30bcc034221d3 100644 --- a/src/liballoc/vec.rs +++ b/src/liballoc/vec.rs @@ -790,6 +790,10 @@ impl Vec { /// // Per the FFI method's docs, "32768 bytes is always enough". /// let mut dict = Vec::with_capacity(32_768); /// let mut dict_length = 0; + /// // SAFETY: When `deflateGetDictionary` returns `Z_OK`, it holds that: + /// // 1. `dict_length` elements were initialized. + /// // 2. `dict_length` <= the capacity (32_768) + /// // which makes `set_len` safe to call. /// unsafe { /// // Make the FFI call... /// let r = deflateGetDictionary(self.strm, dict.as_mut_ptr(), &mut dict_length); From 40658fdadec9eb4e8fbefe07feace9633057e648 Mon Sep 17 00:00:00 2001 From: Joseph Lyons Date: Thu, 3 Jan 2019 00:20:31 -0500 Subject: [PATCH 05/46] Fixed the link to the ? operator --- src/libstd/io/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 040669b7302f1..bb5a909b3e95f 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -252,7 +252,7 @@ //! [`println!`]: ../macro.println.html //! [`Lines`]: struct.Lines.html //! [`io::Result`]: type.Result.html -//! [`?` operator]: ../../book/first-edition/syntax-index.html +//! [`?` operator]: ../../book/appendix-02-operators.html //! [`Read::read`]: trait.Read.html#tymethod.read //! [`Result`]: ../result/enum.Result.html //! [`.unwrap()`]: ../result/enum.Result.html#method.unwrap From 42e65c164d0ee00bd3bb3716b5aa50d490006632 Mon Sep 17 00:00:00 2001 From: Petr Hosek Date: Sat, 5 Jan 2019 19:11:27 -0800 Subject: [PATCH 06/46] Use CMAKE_{C,CXX}_COMPILER_LAUNCHER for ccache CMake 3.4 and newer which is the required minimum version for LLVM supports CMAKE_{C,CXX}_COMPILER_LAUNCHER for settting the compiler launcher such as ccache which doesn't require shifting arguments. --- src/bootstrap/native.rs | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/bootstrap/native.rs b/src/bootstrap/native.rs index c548d7f6948dc..83212b131c8eb 100644 --- a/src/bootstrap/native.rs +++ b/src/bootstrap/native.rs @@ -347,15 +347,13 @@ fn configure_cmake(builder: &Builder, if builder.config.llvm_clang_cl.is_some() && target.contains("i686") { cfg.env("SCCACHE_EXTRA_ARGS", "-m32"); } - - // If ccache is configured we inform the build a little differently how - // to invoke ccache while also invoking our compilers. - } else if let Some(ref ccache) = builder.config.ccache { - cfg.define("CMAKE_C_COMPILER", ccache) - .define("CMAKE_C_COMPILER_ARG1", sanitize_cc(cc)) - .define("CMAKE_CXX_COMPILER", ccache) - .define("CMAKE_CXX_COMPILER_ARG1", sanitize_cc(cxx)); } else { + // If ccache is configured we inform the build a little differently how + // to invoke ccache while also invoking our compilers. + if let Some(ref ccache) = builder.config.ccache { + cfg.define("CMAKE_C_COMPILER_LAUNCHER", ccache) + .define("CMAKE_CXX_COMPILER_LAUNCHER", ccache); + } cfg.define("CMAKE_C_COMPILER", sanitize_cc(cc)) .define("CMAKE_CXX_COMPILER", sanitize_cc(cxx)); } From 239ac2b9903594c8fe5f8fc40b2863510bf7fa01 Mon Sep 17 00:00:00 2001 From: Trevor Spiteri Date: Mon, 7 Jan 2019 14:03:29 +0100 Subject: [PATCH 07/46] Source Serif Pro regular and bold 2.007, and italic 1.007 Use fonts from the Roman 2.007 and Italic 1.007 version at: https://github.com/adobe-fonts/source-serif-pro/releases/tag/2.007R-ro%2F1.007R-it The following files are used from the distribution: * WOFF/TTF/SourceSerifPro-Regular.ttf.woff * WOFF/TTF/SourceSerifPro-Bold.ttf.woff * WOFF/TTF/SourceSerifPro-It.ttf.woff These replace the older Source Serif Pro regular and bold fonts, and the Heuristica italic font. --- src/librustdoc/html/static/COPYRIGHT.txt | 18 +--- .../html/static/Heuristica-Italic.woff | Bin 119956 -> 0 bytes .../html/static/Heuristica-LICENSE.txt | 101 ------------------ .../html/static/SourceSerifPro-Bold.ttf.woff | Bin 0 -> 93380 bytes .../html/static/SourceSerifPro-Bold.woff | Bin 48720 -> 0 bytes .../html/static/SourceSerifPro-It.ttf.woff | Bin 0 -> 36332 bytes .../static/SourceSerifPro-Regular.ttf.woff | Bin 0 -> 88724 bytes .../html/static/SourceSerifPro-Regular.woff | Bin 49960 -> 0 bytes 8 files changed, 2 insertions(+), 117 deletions(-) delete mode 100644 src/librustdoc/html/static/Heuristica-Italic.woff delete mode 100644 src/librustdoc/html/static/Heuristica-LICENSE.txt create mode 100644 src/librustdoc/html/static/SourceSerifPro-Bold.ttf.woff delete mode 100644 src/librustdoc/html/static/SourceSerifPro-Bold.woff create mode 100644 src/librustdoc/html/static/SourceSerifPro-It.ttf.woff create mode 100644 src/librustdoc/html/static/SourceSerifPro-Regular.ttf.woff delete mode 100644 src/librustdoc/html/static/SourceSerifPro-Regular.woff diff --git a/src/librustdoc/html/static/COPYRIGHT.txt b/src/librustdoc/html/static/COPYRIGHT.txt index c69861aa70a23..af77776cca431 100644 --- a/src/librustdoc/html/static/COPYRIGHT.txt +++ b/src/librustdoc/html/static/COPYRIGHT.txt @@ -12,21 +12,6 @@ included, and carry their own copyright notices and license terms: Licensed under the SIL Open Font License, Version 1.1. See FiraSans-LICENSE.txt. -* Heuristica (Heuristica-Italic.woff): - - Copyright 1989, 1991 Adobe Systems Incorporated. All rights reserved. - Utopia is either a registered trademark or trademark of Adobe Systems - Incorporated in the United States and/or other countries. Used under - license. - - Copyright 2006 Han The Thanh, Vntopia font family, http://vntex.sf.net - - Copyright (c) 2008-2012, Andrey V. Panov (panov@canopus.iacp.dvo.ru), - with Reserved Font Name Heuristica. - - Licensed under the SIL Open Font License, Version 1.1. - See Heuristica-LICENSE.txt. - * rustdoc.css, main.js, and playpen.js: Copyright 2015 The Rust Developers. @@ -47,7 +32,8 @@ included, and carry their own copyright notices and license terms: Licensed under the SIL Open Font License, Version 1.1. See SourceCodePro-LICENSE.txt. -* Source Serif Pro (SourceSerifPro-Regular.woff, SourceSerifPro-Bold.woff): +* Source Serif Pro (SourceSerifPro-Regular.ttf.woff, + SourceSerifPro-Bold.ttf.woff, SourceSerifPro-It.ttf.woff): Copyright 2014 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of diff --git a/src/librustdoc/html/static/Heuristica-Italic.woff b/src/librustdoc/html/static/Heuristica-Italic.woff deleted file mode 100644 index b0cebf01de49b61c0f1ec5cb47f2687c64e918c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 119956 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�*_BmXVd#S5mW8HYZxRlrC2S%~o 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 diff --git a/src/librustdoc/html/static/Heuristica-LICENSE.txt b/src/librustdoc/html/static/Heuristica-LICENSE.txt deleted file mode 100644 index dd85e40e64548..0000000000000 --- a/src/librustdoc/html/static/Heuristica-LICENSE.txt +++ /dev/null @@ -1,101 +0,0 @@ -Copyright 1989, 1991 Adobe Systems Incorporated. All rights reserved. -Utopia is either a registered trademark or trademark of Adobe Systems -Incorporated in the United States and/or other countries. Used under -license. - -Copyright 2006 Han The Thanh, Vntopia font family, http://vntex.sf.net - -Copyright (c) 2008-2012, Andrey V. Panov (panov@canopus.iacp.dvo.ru), -with Reserved Font Name Heuristica. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. -This license is copied below, and is also available with a FAQ at: -http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/src/librustdoc/html/static/SourceSerifPro-Bold.ttf.woff b/src/librustdoc/html/static/SourceSerifPro-Bold.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..e283dae58de6b38fd88280bc95fbb8ec99bab9a8 GIT binary patch literal 93380 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 z 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 nJH*H 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 literal 0 HcmV?d00001 diff --git a/src/librustdoc/html/static/SourceSerifPro-Bold.woff b/src/librustdoc/html/static/SourceSerifPro-Bold.woff deleted file mode 100644 index ac1b1b3a0bb7a673d52495743d8f86fd55188b44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48720 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

9E8XSY2)E(Vq?32Bxtg&VLnC zLbQ9O`V{KlN407-%5AWUvWt^9#f!)Nt6U8!>6(}HfJKs9+b2*4c~Aj8$P52pY*=_E z+kn#R<1hK*e(A{lED8!L-ClpF*lTzSY@BDzOSh4(P2*` z2gXWHTDs(AHAiEjf-I>QNv35DC3LW)JO7F6#R^k4HIY&m4^a&DP_P05Wvap#oSD27 zzH0qR6*>x@aRjv``nQwd#cK zk$Ik&?x&P@XbcPAj)YQ9hV2BO)JbyN>^I^#XXezmdb{6xU6oK`H7TvDAoY~ zbti-NwEo}9J2WVAeK{&S+Aw5|Ftu;31XrG*YHw;R=VshMY<&H)}nc5ZeK3WixDXL1m=q1466DRic6uL$V8#$v++_i$T zHjI^}rRN{qsQuPPn*zJ_2<0M%tW@-%croRpG$$kc!bTyBxriD``px6z{=7B4U6I+K z)sW=2APrV%@*aVw9|+49ou~52j2b`?Zw)w5sf3LQvpGMmkR_tgMq z*3;x_+yoLU6)D(#-jSm9T>*qvTUptd zhRW?Gq!vv^O=5YbK$R)nGI7IPdZl&vvYs}V3R7@N+>G0W3CgJIa8s$AbX)c2a57p5 zkAo-5Y|W2wu!_;fd?e+%dVTe|h<=%$_wOn1C7Mi@ zeNjPe1%dt3Ht97;ii(lNT5;v0?dLHU8ISxJw@oeoIrjP9ZVPQ*wnO{J78|O3=cg}3 zqu!XHwAz6EH?hbMFk^w?@pp)2Q`CPDdOoN8CF5jck0_~Zy5J~LEj)+{SX{&e=#yHP z;^K3yM~TCxXD#J4b=^(V%jV+oN!Db; z8^bM{1n&(wm_%oxQ$g=H(Uu5g4eH4+?x9kQsaw`XL2Dqj5ofJSq}%CZb8XnR)Bx7u zSF<#rLDVfI#+%OH&Zvj12Qhvdbj;~LIv+s|!BqXLpzv^-s{B1R-fr=MRxpsEy*pOb z_z=E6yd4X7V9VUxa$GXCS@3=$t5alA|j6rqe1@v4W} zd4mVT+y6?*&&VOJSJbNy46VKan!!EFIcBl5;W65DacQ|3H#f`Qqq4OKtU?t@y$h|) z&)e@EMF}Rt#a%CsNZLg(kg?6PGot)wwD;u>dL}I5YA0j`ZXnq_g=!(L?kHGKM!1yK z(KY?DbpJk+Ft0a65Xo!lg33VaHkPb4pd z3=J9C>pnrA^FRvHIA#4BO}?zLgf98nHE042_f)kO$yvkzat=34kh`x>x0_ZaEQ|f2 z;m(*xDA)ApX!uo-nNr3?8u zJwBI@7wzNcVC^v$CUzn9BT>V_H^9V=wnOe*38)X%aa%>f43au}@MUa^Xs)Td?TON~OO z-?(bSMHLb7nzp2zqD2W+z^VkVRdxBrY6AUnC%P4CV@T{#+!7XfX1W#er44R-u8NmB zE}NLlz?fA8T25?rx`#ejBxp;D$Azfyx2DJr_6ggo$QNW8pd`weJj0c_M3l2T~3y*Fmbx*$!%neKbCw&NV z3MIBan+hx7RNr{&ORxFBoXcqe*U3*u>Ca~zXOUxqYBxzb+yv!2*BTWRhNik2RXe!L zx%Hw&1+@5U%$)zc48{6g@$!1}^9qor^%-MG$B!dz^BLxf<)KGOIhxWyQ6Jtn@;AT) z3~qIVyW9M?j!TdcE%*hu)>SGdB#FypUAMhQ*m#M@rz!j}U+0&YZUCI-m0PBUZ-<$? zo!>=_-*!NUOT#0EC0qT5c9DgFeOR(eN{X%K9Y#w)I&9`r$amT*bs+6x0_U<;;RwtJj1Y~NzGec=CnotFUzQh`;;f$-zZxc3R*L!|%Qq^txMqg`I zcig%<)#jv#(97=CjNn1@UWM7mlT1XN7{;@PAPeNvxPka(N+bI(QzDXIW8$Us2{7pW zUU^5@A(cafb*q1Q9}K>to!(K@z7@Q}*D9RVJ?GCNAg@|y%pZp~`6o@ZKm{np4A!BC ztX`b3vAAt-WAR~nZhOBXLcsJ+_EL(hR%mFnJEY=u_`FN}aKEB^UeD*U*l-K*w9*H@RGrAo40joG3eU9u`_L_B)H#lamV@!7KkAtWDzZ>OgnZnBqp z26C=}y5$kdsy0TJaUuEvg6!;0{>F~(wht8-JdAZ{AfbZ&mQ;zmccN;-^P|CQ(X-DS z>svg`b1Nmx=a$8ZizrUQ3rvxZuprw znOhsFzT16{-iX88y_c#@8N=<-h`Cc(M7SeYE*`5 z?`zCmo4p;3yNb?#?O&k+!t&fwtlozw6{!!V;KYGE8X1-v^agq@JzQITKzHG=q%}XF zxdsB9Ib6rpD((YamBt6Le&doY%`wFusliizLYjZOLQpdvkDk$9)mF@r_8kpnll26+aY0GnMEtp22|pZ(%})k^lI+t$+T!9*=}Ws}U(Qt*~aP6|_On(O0eC}|l+ z0M9Z13gzB0ww-!yWoZ^Ns7Z+hGfY`fJhVE;p0ykXr83v8hY-Pc;KnMd)E=?T%y^ni zKE|;LyHfV$OnL4nOtPP5+zoa$D4|DDg2y&twQ!q?-i4~O8Up@p_pzfY zzTI+q6L&B=t?qFx+G)4kC6bWAN-No})uKHhqxNRpViIwDVPjaqfOvQOLaxfE3Qr{Fs5sK52IT3LP=SfXuRpyEm=D%n&CkE%2e|t!V;l= z+2UBRgftP7pHRClsc91lgv9Nrs)TtOKkA<|N_5haYMz#6FMJ;6#Zt1jWBax;_1Z*7 zVFo-IuH=W85sFKo?izJRVFNoAS2|^jPl_%J-D`RvVtZQ)wz>*+4B9aLYTPNyM7N`3 zLHO0)bN2djkpQPGC&NtWnS>yZPWZfYR98%hp~NFYx1xZ6-s<=d0_EF!+!f!MGL5zi z!~Mt6t4R;pf>d*OZPrE)I&1PMWtNuyvE9qVuc6(OS@!FV@HZ*titVRi2V<5Q8E5aE zN;oSDaFEAUdADxb~@SE0bVr&do|vu z?|05eSROrSVlaZ;hE-3<8(H9Hfg#-ew8@ufeY;~p7S6hRr&sXZLnB9MpY!Ww*4842 zYm!A)a+C;td*wrHOHsKlI2z!$;p;xumtmhd)*GO#oX_7!*q$FQ7uY-PY+uj2*ayy8CLr zu{A;PUcQb`Aif7afER4$Xk)F)(jqX*4(Wn${J!EdhoT!9PTk=Oeoolg!~}c6xH;_rCmaw099e!0I4drJO5bGTBib zp{4s?`2dzT>J!%yo!;^Py~boez2m0QWz~5vBRUMQ`@A_8>P=aEgiM`htT{&(4VOVM zFk==xKb;%8AsURpEzSVSr9J5EF)>=9fC`wSlQZK-B>VMF(|s{}E8 zs;Z9%9Radmgde7&F&f$5*-27S?q=vYtlf5VU-(*&eswAgxw~dOvZ3A%?go2V0Z}i5 zZxSx3qTk<+pK6t6+5e{PPT7Bdxzm`P`D>!f*_||i=21k=x*vwErVz_zqG`~}zD%LZ z-H_$2WxW2FZv0-hV$yW$>090T=wflrf5@HCwsDYc?{=-o!`tLCi<%57!*O66IFH8% z)uCO}HPN5r@?Cwo*&&AWF|)X}%l6`i1pW;f=5OZx(Y77X<#E-bd+nJUk@M-b+7a`8 zb(vM`Nj=!vW8sm)S=Dt965VsZt#^I(b@{Jj+ZyLxr@^Hsi4E;y)5J%><9XHTV)Hvf z&2I7yEmX~?rg{2dy}>CoL)AO%9npmsW~gO+9#P2(u!{Vr8Pj5GKRk3cQ>mkm6b3{{T-wu)lboXZ`2t@bi=wUsOxt@}&0FVP8eEC!JbDs(&_V zt4_IWu97!ix41l#SluyRG-dpg1zLwl#ta^525E4|3QmV#0giurCA>$zUvn*tNy2ar zuA({GXM&x1xfP!GD*piBAOg1RRGlVPq6Ij04Qe!`h}Mp9<1&DLM1?6=qULscsvfty zwgPGV!?}FmlEdepfB2F>J_lpnx;(?ZihhpC3}fGQ>hZDRtbbY`R@0btG%28C+umps z+fme@Qgn*(@eim6cyfn&fYhdJ06p+-GM-kqPve?{s?=vP;TF45+*tPn9b4rDmU5M< zYq^PdXOxOcT!M@@S85b=wjZP;C8NG8Dr&XqZJ|mf6`egc8frDh9d5Ih*X9j9J<-(t zbntW{C};D#%`UUnl#2w?yeZ#5BlQlrM4icGF?cd=pEZ_pU_O~yo1=-Z>>-OF@IMnmS{U{}smeSCjib};bE+qkyjA#_H=uzM6pD6lw^-Meea*CN6 z&8nGFzY)Ecdz3!`&Wx~%qnsm)m~p(+$x4!9m)3=`w9aVc-BmYlFzVC%2`S?&7A5oH z!=_BJ=*&nMfACCnBRo?=q#q3YU7~fm=#$)W{(1N%VU={z-(osl%FxZ3c<<~TexVo@ zA{MtNT?-0g(Z-Jp5g}f%o26WQxVK=BIU7+@;|0%teC4ydwcqe;Mb~&0RWrBd+1uB7 zHm*BHp9DUC9_Hg9^Ko$hLidCL{9Oc2dauA=24CLGJ}QtsEW``sRL z%x>4_vY=db%@0zDe%Wcu#d7|I?GM z?tSQmQ$FvnJ7f4hIu86i7zf=;Il*DOa6jN5>wkHD?imzD|C^lSa-8&8A~;@UR6h_X zB?KW+3i!+Twfu}LUJi#UahEGz35CmX+Up~`{4n|vhv4}kj_aHt&mUUej<)dM1fNdf zKekju`44+8daA!fo954*>A{?I*_+>dnUot$JCV13=2;gE$ItlA%{PDNjQH>cXPrsw z+P9+QjR!eM|BUgI=pPqd{RQ0Zt%B(rANTr}x%nSk9v zQd*8W<|Xd2|6+ zIW>Tu3d>vt(sQUF4=%XQz)z|Mq&fZAsjMFWUGfu<1uxr2c>r_;{w$Ku`1+U7Plzta zGF`y#16}YFq6@N27i5Vp*MN-gAu?V+#pfT9&ms9U$l@L%i|c(JTD}<2slevtpdukXinJ+iFh{*wPG+^6`bEIp#9jtW+H&g7BZyZN8~ z+DCQB%4cf;f}gET!qYFn&;EesEb@!pXY1F0x)!@V@N_=}&F~Am|E4p-51>zUwln>X z&Or}=U6~}2`YN0J1WwX`_+f_AV|7LYO>i=*OSpuY78B#XIQ^C5+%UU?S#t2C8x&>81)5w*-*h24zOOz%O6C)247;N+Z&c`7a+L62LTufF0AmXVNK+X?67I0gSMX6 zkS!6o*_C|H2zv*tA-iDYa2~qjO`l|&-1M>^s=`HsArkHKSHj6?G#M@jdQA?KPG@$Q zQ}9oxgHOGIGQC*w*Bm-mJQ9h!bPnEVq;HMxNI9GK`X>**W$V_r9Gvufq)a8^man>6 z!ca63i6o*!LW|+yUV?|Sx%*^1%wjyuuEfI=Kye55x#d&x#w&Jlj#+hlzEGW8Y>a`I&8L31J8P zTkOW(*Syncw*blPrbpLBx=SHcD4$9Qu2?)9aKFZ#flMOm780p^h-3Y2{s?^oVg>=w zm0i_Y#g3^q41}!!t!N_@)+d_uzsAMr@+M5AkEMU;P<9X3Nn)TXZC1<=6jt-VXrMTJZFO6rS1GTg<>JyUoki)aX9WMub z1NAsuwZYZgci-R+IUh3iGtY@%Cyq8sem)< zPxR+RTOchaL*7V#&jw#2;5Hcp+5SvrRCMM7u~ydGUr2_;Fw0Hx$N0OrK=7;B09sqCW5q~3(#wRb`QRzM7hWQ_pbBN!!aR0*Q z_iaJGWvIJab{07irU~3PF5c$4NTnBCm?zA0uBM>v*~1< zHZx6@nTR0qwV3i-8lOc)Mo{-NG)Au-SZ}sMfr1VhE>&*?NrJ=kRofqt# zt5i1ihVZG#mAT#^sVznq;+TcA15!W2;iF^e9#o77p>nDN#MxfB^^c%UD$kDEdvO!IB^(YoNXs~UOmLj_A4_*bnq(%)P)&}x)UpryWTs02 zvEA^XR#sn2K9H>Gvj}<7tn}HHDOL(&@{zMN| z;(-bq;ZExHBeJN(Ixw}`*cH=x8>_?_e_ng2A;q_nh?Vzi@@1ztP!oL+tKu!K=yHQQ z7OW;c`GpH7rr&*Xk-57PoKTx*2BHI4QDj#{pQ3}u0B;S zBzNV*Wp}?D-D3_!qMNFfvR%-EyysK?*3Q9A=TF7j=iPsF^s+s@T9eIK4h7oBZr^dy zr>>c-?s@a34Hs|87b5A@5S6~3M8WAh2XJWVV8{{x#R zep}eY`1Hdc4Szd$NKx)@Pg%9d)<3PMKB98XVQ*m!2%qjy33l8EaUgJlQ%@)qCR;-> zbM)y$>yD@}yQI z%K9H*yAyHz<~t*9GT7Z_v)g7c*zl{}&?(N-F6N!gaMGvB=rpTGV^`z^)hDx{IgRW5Mm*nyFIOs_cq?;7k z{NO~Dlvh;daU!WyLQKuh914%>kM1POe2!6M{S-=Us6P`E)HznF&oXI zblevRWCK=LIOP=c#d_33dg-8h&;}S=69QW58sSbuxQ><{u22Her^hLjl+)>O&!Kv^ ze1le(bhC{BX|qBD+4PX=4Yp$c7L8!Fc?`&tss;x)7o|#l$L!=bjn->+`m|cDSu54D z=~!Sc9oCw3{Ifx)*$~VIEX`7)VKFxHt%1S1!{CY+5z1$hx$IOzl4~}6fagO%KU}jh z$!a!C6`a*Fv4%d~od|NF#_4t=xSM)XtdVTG8=l7BU4aaPdq4d*Q-l2A``^EL>(*h! zy+rFY0Ee?037i#N@1Ceo*E8XuZ5WNpUTh8AA+nR3X=fDqFe;W+YPVKkjnrr0mf&x+ zg`Kmz_RU6{X#p8yPOnyLbQq+JloDbNm+gmN;NPv`Cx(V*9Kp1Z^2Tz!rkcwXdNkH2 z7IB>!jBioX0yjAZaR^>=$HAh!wC++`yt-C&pt92Ov61Mp8*4+X(n4MtZU1jE7>a}g zCZ~Ay+;(%kGBLVsdVW`8^5_IQUMv?ScVQsqK#TT;mN42HpFOatw0pV)(!_;;Ruv6C z*+Rscvcl>sR__FGC!479-rf3-eMuuVI)A1^*+se!APsYx2fnp{v)F=|61R5172$H| zTT#xX$LE;Plj!LYBRIWdWit*s@Bu<>mSvvqXJ4;wLRwQc@nk4!^h%LY z8ca#WEi)6_^2uOKOxJ_KV$2mpk4FO*!R@sLs)-cZ;RjSX-4;jO9SgimXeI~7YNd3| z>Fy1O@*$heA9Drr)Rv(8(I%K5K0&s@^rOV|qg*B-$z>ACX?{{yXRa)X(9@C#wxUYc z^d2+%tSAx^;>lf7JLS>(v!k#cph z*{kR?aBudnE6>0ul#*xkO5N2ObR&Mowr%toZTyT|w{E?y`-~>KhkJ;}6?u5=3!6ZW zu6?NvpuNZ!kNdV69E#jW;JX4_A9T>)UuOw)QEs}I{+aA;6v@gBPr}qwjZLq5f1xiHqXVR`{84$lf3F%i z;v_!AeTm<*?z*G&(U0gI@Le}`I%V`wl9tGH(0*eD|jQewdZBk&qDJJuie7xz7M>ivkP5cPr$+tqLp+_sx^v*rs}33`T)r+Z9-{^AvZ2dk$bb6j%&k zUnj7g3aq&t;vQPQ6X#P^-+h$(2!ZWZV2S0EXaT*G;-y2+_o#9RMbVuUFAN4jG8#kg zrg&j6-}0+y1A%Ss!r;C`pRe`19zIpN+ z+f>i{HQGdA+Z9-H`Tg7p^cjkmj(kqZ`?;?Z*iHr3Tz-{%h&zwsMfvWX+(!s(w*pHb z4lVF^QM@d_f#L=ApeX-tiWdfp18j`Ho8pDReB6Ja4FtBi3xoR(k?+ncFhATk%fEx- zMSdQ@7Wwy4yf9b@zFQ&pZB<}txNn~P#x~XSmeD2x+pfTp+y}T5{9jSLFjx#=Unj7g z3arWf2lo)Vkm5!8?z_2<5ZG=77Dewxm*U>D=vG=^0G}@=pWjP#2)j-C)x5lLnnR3N}w`H5fes!Q*m^ zxvV1;@LPHeJ>Fa#p_ET_*`)g5%&h@~k@|90nES1oE5Vv&NO!_e1y>8<213*hhLjFp zF6Ep&4Qp>Ek;NLhrra&>`oh73zNspR&ESF&(#Y!r_OQe1cUvrO(Hu&Zn!c(e`t!ZP zMn-#GrgobdJ!iIAf~9z>6g2tcd3SEKkRQu?vT1$PfG*L6B3i6JMHur&pjU!KG}w>U zRH(NcVB@1HF|t0NRFyZ8PjpWj>v)GY+U9yU?GM$)QlU!Htr6|cFwbjETB+U6HKXWf z#qyr5nUSJs^CjF4hd&$xl`=FsRHJ_Id(ka`J1g)2#$C9AYfEX)*ioTjA;q0r>A0jm zB9$(QN~_w1w{fp<-HKM>84~nxwt&qR^jb5~aP*ezdh#`Y14muWfVUttZa47{8cmi^ zF+ScD!cl!9?aGdp3Zr?C&HhF`Ag;56&>Q1!JL!j)BtEK_lJ55|Mz}ZOfZQ8Ugzk~26GP4wyAg1fk1gQJ-NAuUv#^oDYGvdj`uhHqNP~c zvo$?j@^2dU*y;N6gQ%*x31~OS;rN~Ut3qWMhZsIuk4xiKQ8_^t4}_ zN+P|!MBM9(B{iF)x}Y~a>oMs9{M>Bgv)MfV^?JV$bh({QpG(l|jEVil z=S|V5;rkNtg#{Eu=MdZlxM@;fJPzZVs$k#O0=~=>*b0GngHri=PMtgMolQ zfIJRuj}+}~i?O$lST~KtyoU6qjYGcb#@e!}zK<1XcQ437nA^h9?6!@? z8aUfvbI8;)vuJr`isjOX$r_+yQ zYPTCh)mXKOJ_{uKfD}u7UJq~3#hCj)7xwoJ{u%JU2R+FBE$|rL^V;Uv=qfaZ6Y+nPT ztD9i%I9cL%6AtbHin>|%X!)>V?b6Dw?Z*ML@?CDFyRw%oOYjV?Wp(yI`HY(8PWiZ1 zbjx*{Lzz!zYHv55-+2G<*qK1`dqX=73b{M~coF_E_Az<<+!tW{zgfP?-TmD!ke?!a z#h$;D=_}Iru+H7Ub*(0Te!4;{?{TagRhDZ)EZJvgGLTo!=fTmk8Df__D~pJ7X=Qs! zY6&-Gp%HePi?T(GJm(^J;L+AsND0mkg^{TGtgJV*qok^YRQHAvf9Ty$Gv6%C4y=VE+z^_G-{icZC0l$emw(sGnB;_j9e@IrSTv*wOG*&K5k6~rL1U-D6%1Kf= zat!ym%#m}gauGVO* z6tcQL9E}>UjJvZVg~E8=<8-I=og)g*_QJUR#DjA&U(#3U9(Hd7e7lsqUAJ4Nk1TW3 zj;^Z?yH|^x_z|HVu!pokU&z%Hvelo&oXI~JOFKkwK+yW551C}PB)I|L#|(@oODqFf zBCp6knG-yUfYNt2!S*8t*j}w}nL0bLo_6bByAt{3-qhxacstlII3vzhP>ODyn26PU zJq?pf2t)!o{-CQjP#$pD=UN7R&gHY2Bjfp&)v}>!@VIS08$F{N-N(J6=_MVd@UjTS zo2f#rnN^W>Jv(e(Q01{zC(W}Jt5>XbDPJqLoYV939=pM1MW1&EGP%!5`uzurpYnV4 zCj6Toz|9@}{{io5n!|@-Q{94fjJ0wNMwagytaf}NXAbOHZ$;Ft!(iH_k#r*!@>vx5PR4tf&on#17bW5v-0#W$sHOg)mCo~qo!Kd$e5 z9|b^x=|A;|AxeLX&%kf_NPi>^`z?`09{4Oc+6#B}@$EhEd$f16g;>2)ALyRZtB1p0 z_)P8c0A1?9?E@G?Cp(SQJFgn z8wBmvd2kT)=iCB=?U|c}zlJmJ#H|^BiJa&d8E=irAJ)!Vrj@-)v>_k1ZaYCwK*2kc z*`e!FlP)i`+G=thD_ge8!=c7z8cB_k&TZX z*GH*e?F9U_U_4fc*XVi&Upe(@>f{J+dYZbv(MI6defN=bTy-t-ef&IuH(wA~p3xi) zEN`Z{eG&_5-br$&6~eQ5rmgb|{&B7&$Vw=J#6O`q5g(OjId>aHcJ!Lj;fG@$kHs4D z<~*L$#)+D$FKDsbyva$&AD=E_{LjoGPj+vwm_tUX>3kh?_=qRx4OuN7Pt1GzIdG22 zq}OJ*1bzQ<`Z@4i65WW#`3GPQ(QZAa7q2vXX+0*#YOiQmpj#1)6P3PdN&nGwrIN<~ z!o3+$%=CuYD|)n%FZA{n@{OvH?v2HpX+cOgGVuaoJ*e~ zC)DE{by{&MSmkH8QX7Y*dIephvBF~(-9M$ev9BU$DD%Tim0zf`b2u!>c*E{g7f<}f6D7k1#GRNH|4j5 zl`kg}iKy~br?(Z0^?ADAjVD~rRhQdd%wNUjJJ9#Q9_v5?r@9^V>zF!qRdE3;%CxR7 zF6fpHFoF_*U+IjGI~~*=@@bwKfa;YsG#%)^DYzmL$drQ?nc^~n$t61^{^$26PAe6DbM zq=!c@=xoW#NG?8HjcFJ67;g%=bk3-+m*>&9Fe}&K5AN+(BQ|0EUX<#-Wi{51p#b0T zDMx6Q6?amIDwlkj0_>v>#pjWB~tEp1GXSlCCooc&x z3}71q&H$g}ujTOBXe%pA*6cyIu6yoBm?(t zQ*3894Z*!iOMJr;O=OtKxA4&n*lb`_kh5=0)DKvGiPr+n zC%b2%uuZ956tKo1WMBRmndkt#M#)45Dsp)qru2Y=mNM3q>$u-zuW}whjg^?<*t<+Q zg49m1EIiCh>ct0h!kaFfN(K&?0TVg_cNT#+Unj-A;CsL^F;A3Vkrom*V~C-f`+F3>r7uxU?#R-oFK)+|fJ5SW-Y zz+R@$LH#>VMc$Dnwrz;%0w(;R9$5BUN;*eiLiR+plKj5&z(o6;wYp^6bxeEHo7#&LS>56u-j}Y2{Qh*Mq3c|S(rMzSEWf(^ zKHdlPZF8Gf?FqEfieerD7CZ%!9EgOcfD^Xd5_OI(q@v9Mx6{UvK6Yrsnq)3HR)7>q z*);Gjqm$&l2KY|RD1;XOVvK~s^NB{&l<+$xt3z+ny39QnUt!W(T%e&;R}3bt*{s)U zt!JV4&Mt;yflSyRcLx(Xt3JGAtbIj$_e9Md3nG*a`x5S8QfD=|%LAJ#H@Df|msils zAm=6E>L>6@APB8YCAxdifwNC!vO$uarW1>^g6JgK=wc<_H`ZBQCM0z{U}!O;7O(^+ ziMGPoKHT#ky&S0p{e`%w3z+-bJCCFrG5Zg`9Xj&}diwUHb>B8eqLpn3{3Ck^>2cC+4>|77Lk`fqndc>U#*o|ihN1AZNAv$R_9Vb@6<7Z5Kc}R*=g*&8 z^XHz?jAo>fW-RL%S(aqU7qYO|#=<8ULjW5GY*>dQUT0arm?gv<8+L6M5Z1LRV?u2T zV?zSe5{^(CiYsj40=9x7t_>TA#U>=HKl}QaLzb3ArLW(=^}1i5uixu_@AYcL)h1uUpo{x>Mq}vAMF^2C$%hQ07Bx*xF(lOj>B_4O7706j8#5G z!}vjN^M>fXNcoNgu>2>{&pXs^1O9tuW*57Ah{IwXIzHdG&{z3X?1H=!=s4O#Jur+5 z-pV$RUB=NT{A?9qH22K|li)A_D-LtmWsqNt!~QLWT`Kr!ek;(=I7~ml6gbQd4r8J) z%g}iaGf??J?7)X8%-xmW!+W_9=lQ%@I~)E~?Bn_D_+mp?3uQvaU^*Rac+}sccl#5;V1hj8 z-fHMcQttU|%Bd~wNvQK%IF6nd9u{=)_X=)nK92q!FM^UuHG6($i>hTiNLqcYJ0>4M zi!_Zx)y#XwZD2#}i)xtboGQ1_!-QtHd7$FHWZdu8aArALl@gLc(l zo?i*dqm@jAp;?G})R$A}7RdFxYWmcXBTFI6(CqyBiT~2N2dFv&dYV>KONSq>Y5Hop z5~GIlQh-g76eQJ0BMdGzjozgra$*AAKk@X_6UUCxei#%^p*PX*YJL@%&3_C=nxo)A z-@EIs^3lnor+)P-;LFsn=vI3?DP+0i0|Hnz$7pOGLX!FJ5LktSHdhYHhMxO`2g*Qqpc^p<;E} zEx-jeM4_9#cD*wiG~@?kR=?L|Ytqy|DLoQyL%+cxoItO`xW5fX`s>0D+FplX{NE2P zYvNL@Nar20QHNmD>(%d|`_;;iCg>Xe1>S%@g4M5PU&kH#e$AD9jW<)J>Bc;sX8gIH zhD0l~wjr!2x!5Pd7&CV7UK!Q*6iN|MSCg0ZAhHw`yuq=$E8w)dTO4v$>h3~V6c0#} z;)^tyt-9bpHHF&y;|MBX_Tv|00fT0p%hWSy4R=otsz>Ee%#qC(JiCn-8SIuON|){s zZ7@ul=?-_9w?~xrp_k0w8dW7mj4j+Gi|nzH-TNptP-cQc@r~L3z_jFcB9Vzwjs64^ zvrP=-0ffI5>t56uT^5h8QSXW^i8_*P?Vfn|5c+u%giLpCI2-BfZkMu`7RV7v{d?-O zbT*p{#PW-@!I+#1+Q}z!2Ma^d=twc_RI=`&1-_2O$>eBPEBj*ikyX5S66RMyxRLKU z`uGXU{Fk=P>F~zOvM#U#Alfd3Rn@^~gzlO)^AOwT&Qa16t84ot#D*=A?gYJkk(_6c zjpo`_jAeu;rGzWluJ{GaKbCt^M6?M@iuLEz18ATQNCxN~a=(>y+c zh{S<_mXeXtTD$cs4KWE?PpK|dkqKVaT?t}w);)eT^%XW^kXFj2Lpo1~?8`-*P0qkI zfi*o{Ys-=R#n<+4+8i62Dn=H_eSP7Dv7~R{@-e^5+cDDS$%dU+ie$qhSC4P~?xx(8 zYfEc-TOG1=-8O#+_`vrnW9S3?6>#8W$7&F2yO8tXgsziWFH;esM9q+Kks7&(a|8;y zm4$Wmj#)~s*s00&I-}OnjFG6*Xhe+C5lbQ&x3={d!d_QOHh%4YZ`C&I{HsewZ+=Bz zX{60%ShXW!l}uW4Z&|?8H2c4@e%61hJ_a7dL!uGdy{c==>6jQ1fs*?W9(rfpJy)Ij z=0VZ;zxSZqC)DTghx{Ia9LSFtQr5V7J?UP3Lw{>Xgr@EV4|=m1`bg<^6wu+vA3^^y zbN2I|1?X{geRDR8w=(C8ViF$~x`j)H*%zc)=Jlg_!Nt=6T~i@*Q!`pj-RmKKWdpIf z>mo!(&o*!Brc1yQBnon&yYXH#SWBcrNlZG`6TbGa(~%m?W(QLaXSm&`o^W2|xih#R z?ai#Zer)XeRT*!3LGVt`*|Qtv@pYRr$+2Q6R2)lYHmw_%H=eywYwumYzGLC$(L`co z%fj3xEBfu)8@cUwoZ4>Y=aXs4@{8ys(OH?xH61_XWOZ!`0!f}I&KKK}Y zVOZ(=&y(j-r~7vGa->67cb?p*zNx-@JL&Jv${nH!@U_)#%~J$ls%mRa)|RTpP=Y*F zTl4z94e@!CQ0B%_u?#@?Eg&E5d=UcSn%*Qk1+!Vnb)$HiX|VHK?aUZe$tG0-pQS|4 zcH=)nXvv^ovWMIN8Cu&ne68Y4Ndb3OlG4K$r&dfUgB$wHct_M(8%`6G$uZzLqccWQ|%m^vbrQp z^tuAn4BA8_kuyYQFmbCBvayjOu2h^ZW)xZ~%w7`%NC``^&VJOzZ0y-J&V?tnV(Pj@ z!+X+Qo%j9K(tVptrOo@6j_=#NVCF>)dREtz-Z8LfXIj*1z72#Y*WF*}8|$9hJ36{| zs++tG8kg>5OH-z^I}60+Uv-p*ge$M&6F3K}l)~43M2)zKml%PrUrjtjPtszt9(9A% z6T>G`YV4D=dK!(S&w`wkT5md+M!r1qrO&|>7Otv%iMOL^ZU_4DJhr(G%)3XifKE0IgF`p(nz@UQvCH*%MS=!w=(i^z4J3hB8O5BGslP>nsZq z{+MXwI3WK5!n@9yY6UuXR!wD7=*%Z+G@_oKQ?{mB*+{`)Xq6C1Ie2@Z53A1v$|1A{ z%Ju{Z)RSmbJr)=Yp~Ye^5eWnZ+U^P3cGWs+Sw0d6tEQmV`x;Er=1Mc z#}APmV4be@qJg%P5k*i*7C{6NOZZ{+Y^_Ad!h7?V*_0anWWMsD+8Seor9eyNk&=v| zXi&V#FfT}RUq*qU&b%8;WPpR@h_#g1fdHfb>YkrFq8xX>+Gl%iYnPbdn z*K7Dad=JsAydaH<_z}|@G1{XZMqAO=BKe~p2FNyHKRS)|)Sj^bZE+gXGAW4lbdZkj zc36|<^P`ryz$UiTAbp=tjgw_zJXL-B@==Kx&sE>iLLmyz{?@J~$>fr**6Mqp5s19A z6b>HZ@}_c1+)aHh89`p*wbYVYYMJe?K$mHPN|fdWBfvdny9!8$eT^->gdc*afW>)ZrQ zQ&PlQvYlxCah5cPGLZMu%4fKQV;oo24 zX*fl(vyh>-`@r&(Z84T5pswY*Q+@pSoH}c&ax)BfMMk|G)`Q-nRi3BL8ZPft)94jP zEg3;UljhX78QuI0TWWPCGoOwppp7fV<)hR4w2$EtT!VFU0b zF{%S_fp4-otSHfSadX?mF!6yJ6uEQL1QBqFmm{0ALDfvQp{&O2O@}%QF<(Rq%8t0S ze!`t@b-3I5q5(Jl*aecFH+69#yCLq#=2AJAJ!n&(n!2{hrO4il;?Us)_r3H}O#Jo{ zdcY{ThVQ~@I3>qCMAj=GS+WQb&OG|)qlbc@e;)iCZ%}`&{u;T}z36syySkU~jp#n% zC42_P_=WAs{4q8hxJO28A=w*jvN?^3F8s5WrfA6CmTi|VA^Rzi4|ZU+ z1@32*_(#P$;%Aik7bQMT;oC;PFT<@UhyNt#ag*?>!1f@wKwOr_wbbHbIEAjpUqGB$ zc!kI1@dC6N{{iBHwYW|^g*M{j5NEH&&6nSNcw;z^cH*}o&MLgd<7{{Y-G*O=IQQ4$ zNP>iZCH@rRoVB=%u@Ciwe5uFYT3il?(Pj~5CHB{F>;@b@qDP8dHMk8GFN#19>#-sb zZBue?@g>#>8$e2Hp5uR-j#K@ax<|YSh^_5jsl^n@Xv`k`p+~l-f|IWsh@N2O1>7TS z5xvmkWIxtPoSjjw&Peqrsis}cN<6`j0k`;4HaQ#(ntW!x)}8DM;PcIHM^o72i5pGk zV2i&!>NnE!3oj}{`Sds}yvWP_ecUQs0d39p$Mu}{IudmSpy5rK)}Z7`1s3Ag6_J!f z_M{5iXxi`Lp9nXIJH96E)V*PsPqMVi*WjOw+Ja`g&n|7JX&(Z-mjhlC_iflh(~1p4 zI?*0Td!&Hg7I19}<0FNXM{aVsy!I77lKvpz-ciFXa+_DNuJM!5%OQ*8b%pQsh)X0u zY!2E+!xZ-hoDv>|@k;h-iM-5~X9qbED9HQw?+@KkyaT7UZx8+p)ibYLf`2Uhvv}G3 z@OR&Rx9`A$1Ng^l)+h%LQuryH7k&U^H7Mk$Pe_T%69U)#AO>0z-)|urr>CGtELB}k z+NoskEfTN!Dkml)1={E3K+@YR*{sftrkE#Tm(AkLU|hs`x2MGuOgbI80k^jqLd{NN z`v5J=v%(L=37|=&EH2tdjb*9cVdkPvg-!_`a#(v|SsEOt*9$Z1$pa>f#RUcEYV)@H zTHH3fjeOu|B~P>66KS#;GDXSVZ1;tX4nrI9Z(8{Vo)R8_`B^>RV?2kbNXi2!qrQ!g zGoO@|%|Ndn5ZmX0JBo_xYhrs1t}Gmdxox9xMm`2@VdkoqX?lr?-h_nHmi}~lz?{ZX zq8FF_*`m)J>nudgzGBwT^4f~u5Dtr1{+YabNM7c?bh_U}^6J5Fcv2m1lag%@ncN*I zw#QRBjz@sTe9XtEu9jDwFAaBegd_Pp9?3=`nM@>-rRko;uL~0}*8cx=N-n3sgI{k` z!l_hPX`{9$=)R$C=KCn`jbh&Kb5Ko@W&4ycqHog$K!r~ zwECua7U5qAKZWu1=kPS1e-#?SdwKTnaeVj}kbNx1(9k#KZz>0{4`}aKR4$U~ENZEb zT%wx^Gtl-ms&awW)&P0j>5#(_O1t?RFH6eqM8Yj6^A>-~=S>AH<^X#$y!Yehg{!&V zA;H_i>qoR|?Pu6U0*$?qXedK=U?58#uixi`2S4A{nJQA)C!*vTaG=e~b8?4s$@-D;#eP8 z)=>B(>hFYdV-EsT(AOm`#+t#0J3@cql#C!Q6RnwNblNt@7k$N z0CSWpbN?KC&J(r~$o%G^UO8%RGI^|CZzN=HFWQDPIi02ri!P_^5Vw=O?}WT>0BX+4 z+XA`M@{%RGz>WR5-sz3bNV_ivb3Pyk%<@R6t9QRQ8xNVKo?t9&h&w$+;r{?$Gk&$>Gh_g#=Jy zEl^bfAP&~SXJ7m)9N}N#yN|xxzrx|GzxQ5dEdY8UWm#bl2i=KW-txUQtJ-m#Kfm?Y z&Mim&`x|^@e9QSczRCCp&L_^mjDP6-((%mr6X#23ZN@*s?td`jA3L8r|7ylRasJl% zcQgL9#_KcZ7q`AQ6sZwy&DBWfI$L4VOP5)I13C+*YM7-j(rEIi4NA{D$1mLHvdpVk zJfu}D3|_d~=M*iy)>$5=i4p=sPt_)#&(k7ElNF8I-+uEv_TTBWn6{(v;&JQ7oQ4c(7it+diFY2WkAE*evvoEuil0rE$Nd)?qO(ZK6)n zq)>f7*6Ob4e|Nv_)E^q1JGbxL9?wCZCGyf~vGz0O7lnaNau8T16C5FmUbm+P3!TX3 zo@{8&L-qJq>O@~;OF!Gd;t#+5 zJz3tlJsi26vll&=z|m@!LVGeIfw}{zx(7AyD>6fos=Nr}Wdswdb(%$!bvV&#qF2Cj z5o;U*l^~4(A{jqiX*DHMi!A+(4vM_RB$f-fM#0>8HOMsfLR&qZVu3~R19Gk~VEaU2 zGFygV9e{WoFX2gW7O@=&g8GW&@YOWanrBneVw%CDA?7=B!Sy^0=FBfwvA==&RX&GO z6Y+qUh={W;{H#cT|2$lXAFz{J-vmM@J-7>;CubE(#}wL-2c(ynXaTI{B&0!{PQqzu zc!4K$$-;{z#RG{PZIlleO_Le@2GI?}ouq}zk&@KKh9=`&M=QjL8XMq%K$rv(c+kOQ z14CrtN?<3ou^#vdiF1LViAWF~U+Bq%MolS9I5Ic!eUQs-_!)o!_S`RcDYKa)0mOMJ zEvZe?ZVOVAnIWjwA>%wcMOpIZ)<``sc4t5JeT?>Lr?4B=lU>sZ6D}P#;>>QM; z1GEwP11yAzAK5&&jS-~~2+f2I!LW>v% zb3d68Q8;q!i_2k}5~g*lg!rCi z+;Sj6>tLRQ0mNEoA=$F5(hE>YSve?^l&Bk%HKbwzhVJOB>v@O?^|d-0^p9wE18-Wq6Ioa@ zLC%3DCvTdGP)Z8&Y}8EI%cT6u-9vr}Tet<)Ig80Or7}Un0;YpdVr9aO4$bzQ0nLIa922n~y11R0}2g^T9#k|K^Iv_4NeRp5g^s}SQi)-Xfr|`O>$O~&JhC& zQ{agPO%i*fo~OCCXN=59`XO@nD%9&LalvCVw$C?kk95Z@msn-RuC5t?vW9;IQ_CcS*X2|If6+$z($8yGCYl%ys)mz4PO4|D}3?bNvBb3eUP@5FHQrs3FyLJt78Sj!yBl^P=19j^DP_Nq5{Q znkOLIQNzw?+&wz)bw+AJ?o5KwMfDNR30hb(uS0vq1@MW*gNg?dWrxkX{ggd?-;vZxRAbso2G~Z=^4P5 zI_{ixUb zW}&%Vhrlj6Z4^9qJ3SEeNQ|Am?Mt8aJc#tnkFXv`&XJQk3uohGPUy^>xl=gGdF(uN z9yw1i>NpduUpN|L54&=#YbVBU<#e6I39y>sJpJ@}ZQ``~T!eqh8I@FX{-*I;WADoB z^l);C?}6c+|uH&c5Q?Gd~ z$7%{aRYQUyPO3|GJcqU^^bL4+RnE7aZ=G+j8Uv?yI7xe^n2m7$0*JSrr~LUf_CCC! zW=(BE#@NTFU~5d+Qa;A-Fqg8HA7f9VoG{fnpF795uw3&nlAXdm!R!M*uUN-9ORt#n z5~~I4Lc7}^CCv$s6V~aaq4gi&;^SP*yvW-MoO%X19yn|M*JeC~SDWd^SS!GDftmmL z7*Ni=50K-&)53{0qdMOcCkk4pjGc1&tSQNIw_*Rg9~5`$|Ge+qac=Wxj9nsqg^|Y+ z7Xd3h)WSfNG^q5WSR;KCMuQ|+GEd=RW%Qs;55EWO8%cw5uR)=8NfvmtSH329D^tL} z7aDm8-3T*lrY(q6)`{>t<qv+uKOAo_f89QXUd(-e+%+Xeii=D1Jl4 z?~?tfFkVDHK(&SZX~J{#b7lN;!MR5`i7WxvBJo5U`62IDShrFwxN`jlvjO{Dt0u(~ ztCBT}nr_wEfTb3?Vq1;XsX0-h;$x@HT!cXtKM`l4890ST>%d4Jv;LBkB(v1xP9zlB zS0x@kOGh&4+TOIZ#gtJXoCM8xWfoj>E(kbEt$rjwW!jC2enMn!EH!E5fVh;To>>>X zx4>BZf6j4T&j(c|-OiihLnj<#K3kD8PhPXaZpN(3E%=DkOS7Y8JZp(@SkA=QIpH2A z+|o<*6uV^H3oXm~U{Q`39p7Zplx=Chi=>;HcPFf|;#?V-thy<8#w=&VDCS%V$6FpJ zJ`i$6i;NzYW5SdsrXyQ5yxm$`&Ii2PqH|#?O;jR6l3eh&NjY~F7R~Bd=~mDCB3-^y z{hA&;Fx=>Z2p@XTkJ+eX1XVd(Cr>$e>XtAm0)c(^Eod@ z#&^?(|D`y)tjSX4NUMEbdTp@>_q5jWggoAFfhu1dqbi-C=JxR!<1^sOODhLgbY2Gr zjj72$Rud}|>0Z^6Dfc0Q!mdT@QLOg%?58Fwh}S)wyMJT!tse%4XJ&A>J+O_z+*B;e z;nqjOMh>s%4Q-;a>a!~iTP7=nCXSmuSv@kEwyx@6Wt)Q=-54&jh4rd>yyqMn!B)nu zYfs;&>~HnnIoM;ByzKI=4q}_S`~!0$WGSMZe(pLyvR#Pu7q(9jue$19AU(i>cj#JH z${G3nnfPP;u&(RbPA$Bdu2)x|*z`VDKA$T~l><`txQU6X!mPB)TtIfcFx^qX+S;>+ z+(S3J4STBUYf^I$k=<3soo-oa7wzqy_G(XPl^ON~ zJ1p*sdy)d$*HOndUv})Jan^AT-R_)qN#zi(dLxu48{x;xy+t(Z^G(O&`A48TX z=4h+#Z<19-YHe&dGtYjCvSX_HaC;k(-g#zj=S{quy3@0a!c^(1!>e-Gwr5_heZ^^6 zJ{Pb(@W%8kLQ{HSU6Zit1Dk#F=E{z+eoK*lHoCIQUb44tuU5|<@(O`N6E4^7{_;+^Zg9oN!yx>fvqW3oqjgJ}7f zSXmnR?U|c&+x7d0Ae6I~@A*y_a&KMK>UCkB9xbk@hRyo7jf*^gmwWu8%(h~S>$=qD zT}Eg~{5SjQqG z``+}Pm^La-y^GsV_bR`UCwNkmo6jk#=O*=Mi!txfW&bx}zPagZGSkh=6Oe*!q-(kM zI*)G|zoU$|s8wsq6Yp5QwaNdphL`X5ghKE4!?~V~FGo6SRF(R3ijRw+%6FbNeCO&e zXSZV#$@X?=SieG=0N4K*h zrw7@)(1LUk*-!ahTJ@IA78M^s;X8nLY@D1Pe zPO z-&3A5)+3%h$L}Hb$$QHV>nzgtS%(v>i!LrpAeIn`j`&^ZTi)>!a*bJvA^V{0Y_WzT z{+ky%Ph4N|tVlL6RvvL5W2v+amLdn?|GMPtvHm@NOJqG{R}RIN?lIR9TfsHhcg#D@ zIy!=V<$)yMF~9%pu-@KYc`dc34fgqfkQ8?i!Ju{M@*Zj!Z@!WXfpp>kMuZ_q+mEScOjPg}t#4_Qh)Khy8H?Zordx95*7& zfviA;7S2EvzhMhK9E7Lg;0adZDSBB&AAV*vYw$dt!LxXdgYheeu$DtPjKlFEM{p#% zIEth35?;WIxCt?i;aHrBn>mi-If2{YV@~8GPUaL&#jAK3ub`XLIGr;%6JOz8&cdgh zjW6&G)*_B|NFu>GoQo9a;WDK0JHh!R)}se5>yY6B`We743^IfqveTsXPf5Pv$8+m8bD^p20JD7SHB6 zJeTM34?Le2@Iqe1i+KqzZu-pBj-03YOE`8PhqhxrH}pczvXxQp8w!KQG@UBJ?`SaFbNYe8Ry_!oQ+nT4jb3tDqMuK_yf+z z#kiV3@+Vw?3;A#U%wPB`|HJ?CH~!8o0)j$_0b-!25SH+WL84N4MV0W0YEdHwiy^pM z)QX{Em>7ZNx+|NlX?~ z#8fd&Ocyi6OfgH$7IVa0F;C1Fbz*_=i+~6YT-MpqAr`Liv?lF{n@(A+Vb|HtJu6D~ zG&EW(mDQ;2N(KYX)~XU#W6+peJ)PQfMW-82#i~0?{d+o1Csr$u-qrmD+NNc;ZkcU} zQQa~}hjL7>oc?`|=~Zm&UWGhy)2q0qRK)ADZlPmMRzjDW&>c(2j-|9IRobye)3F9m z+H@>k)-kuVH%*qS_Esd)saVF!l&&o{4QjEnrF{z-bDJk;`j%6D%a!#lXWG%H`_@-1 zc0kvfc>bTr|Fhmc$4%E|5_YEBqhO-T%I}gQ+bgv}*>2a7x~D6hbCry5Q0tlaM!BBJ zw>~9-6OVOgB_S184t&O+a$c#FY&z35NV-=*29Ut3Lr7Suf@mbeD4qf|Wl~!C-)dm7hS_b`=t;~ArnOsjsObNRCDE zDya@GDNE{AJ^3utQN2HsPA2UF%s+3MVLGX>X{E-=A}$mX zE))_j6cX+)BwQ>cTr4D9C?wopNVva{aIuhZc_HDg3JI4K67DY~Y%+_c(n*z>0x~lR zOlA`5%rugjDW1$s@pNVi>dX{TWhPNcW>PK9OzMTq)P9|r+OIN8<&v(-OaYmh1ST^H zb!HmL%oI;%rg%Ct1$AbMs4|nNBr~a&W+wGQW@^9AOhQYa0V}LUL<@aJEPbl1E-hkO z=u=?DwOFggIxP}fB(>1z$kJ!r>d|7o7W#}^87=hrv~pT((4tohee|tOTJ)Lo7;|m& zbW}O&Qdf9jd(KVkH$zKMUps9rMz$&$3^aJvEnL@?e`?KT<<}H{lQ+|of0Wgd&nziL zPA%IVccYd0sVR`D%$w90x_xSZ8fU8H;0*Sui5bO2Z_y#!8no_jG}nZYfl#HqPLp=l ziE2xW-^fOf?YimSoVj3H%mriW474;?s&#n}8;h>I!Iamqu+d0uZ)ym7@>iN2Gaeh- zLPi>1Ta#Xori{MG>@WBWDA^eB8>#iCK&UF2%fusgB9+#!@1Q?qrV%pl>$Wx{7iy_< z%F9+G+bY#tzRpf$Yt?BDJBf5}BpH?##R>WSK6MJDvGC#v`2#+69LkNs+DP1u0z^hkQ~(ZaVRUW)4gdxK000000RRF32mlNK0smV70RR910C?J+mU(OyRT#z3 znb%fY=wd;Xwn$|uJCw2%5fP-6tzf}|P}bK4T79(GSD+LGgvJG{AOa#*M1q7r5DD;y zF@_Lhh#~$#Ohi${C5V7X3rGP)@XXf{NhmLkd3nD(_s%!>-Z|g-W(EWhg>zw_!^z0Z z%0W!PUtWR%2-7%j-bAdLa7DzT724n-q@X)e(I12G7&0&#t>GJ%J0cl_hEL2%#_XJl zW0UcMcO?;l=7__6NI-jZMi2DS%#UCwMqrG^#KFNmXn}h*Pa+;f2XsMCq#+%HF$|d) z>qYs{4AF?k{YXMPbVOJ5LSGETqj(%6k>y2&ArdiYi3iXY$>@Y`=#74O7(*}|qc9HR z{r*5Xj~Y)HPZ`e}>+}7=Lf&xcgc+lZamLmKC8hJ6Bx8GH7h^ADzd2?8d}oj`!#LhJ z#h4c;p6ho4#xi4tahb6yP_kg2v)Z`UxY1Z++!iR!4>&uGyN&xbT;_aiJZL;*{KEKU zse9Eo#uLVq#c;p=MIL2WOPV23(1&}Z2rILR&Au79Zf%? zo&}*8cUQL5lOt76grTbRY)rvy1W=Bps6sW?qXyft3;Xd&gAbeo4H@?h@O)A2wX3~$ zm)9Qh+8>oucb_LvN2g(oQC>ULYjeGJw%1mA?N+b#=HfYT5Ah9|bK)BMzU}&disf*` zct$arUD=J@*@HdVi@ll3K1^d@_G5nzU^+)C@*rZkh!tGSN-p72KF4KT&J|q6Dn8GZ zirAuvVm{4h7~njXu$1%pEX%ln3mIg&)?9~0x-++>ug0sC_*)~}ZX0oY+kKlgw)WPT zBogTlg-w@;z?T)zI!n za}38ai{m(+PcWMkIFXY$nNKoD5u*^sr#OXErLW^0QT#Mc=M2u|EY7B%dCX@4=dy@} zoTK=TdQTn0xA+dn@xAi(gL3y1enu_oZ~+%_34h=+>Tv~E6&<1I#?D;BpZE*c@i%VZ zCY3a0-EmGU`XqkADg27lID@nJ4d?LtU7`=)WhafzKxc>iPiLpqq+1U$y80_sehQ9? zUGcTpN3&Mr(L3~Rn%a%+vXL>VeY^L1$#wrZj?PSFy_+g+h~B!nD8fQj*g9;*Zq?Qy z9MNu%>mJW*x9@WeBIM3uWq6wIx>mgkIdKf9OMyD|7R!}mIYVk(P_I%B&EiZcb5Xq| za_czGl1i7;#Bq)bD4^8)lE>|D`c9ESF)TroWs64Ta7sGZM2qD zM^;b!lszhAj#iFjq>7{kTS(N_Y^&?ru^pn=fnCs?natE%z)_};NiCHW!|Yr~J?Gps z4AePFyA|H^-^V?oqtzE`-~)are>6l?+53$;Q`QixJ??X3^);2Qk@eW1uP?nN7|sMH zxjWJCq!a1Vn-Zy}L?0>925C%WA_kZq>Fgvu2AUp&UEQQ!ie_}zr>W9hyG}r~?L5X5iZk8Z zAMF0gJyIw3AF`kDQ+V3#TwRPD)s;Rq)Ao33X8cFvpRsBD19%`fhA{@?oe+%ewy_;& z7CXk+7@Nph?Xq4!#KS*0*(?u}NGqXvKzZoZ3ZgV%(5fFov>Iubhb@UjS+!P*71hJC zyDG)l$OWs(LurkFdcS+_x%JmoJu^1bI8yrRR99EsI``aj&)+@wR+B|UHXWlg)Uma^ zdmqg`{`ANRT22LAr$&Q1@HLATQRn7^+g8wuEsyP6L3izYY}X39PwrbZTh2PDOU^oJ zj+_;!o9w^--uF+?LwwxI$DMo}=Hvd8fA!M$=t({v<>N6v{v{ueqkTnV-fZJ{j`WrsoM173_zv}qq(lT6Ki{Bdn zn{n+7zFmynS=9Ul=jQ+y8iBQ{;aVF3n;O1VCfnK$c%6p8oxa8du=uowF*(5G0n-Tm zBc6OyVM8lt@vX7>bRMmIiaHm7VP(Su<`H17S)1^?jNjYQ!s|2uI+x*zHGs9iumMkQ zZj94gG*2)p`g~yY1fx%%;mMUuYYiCdz~%#60Bl8!-kYd7SNa~H?*aFHb7K@ZZQxXt zc?u7nKZ@tag`$9|vA8elc#alJU&le!I4~TgAEV!AB!KXeIj8Ru8|2@(DGHl9vjM;sF`Jz|K!g#`KKh*jQS~uwnkpVUSB%`;AM{6iU zu8zP%lwkWyu=*v~`x5m4dI3sO<^tw%%L9-=Wi3i{Ghi{!mncaB&VIl$oG-`sEx3Lw z;C6s2cLKKIUKy|*umkWYU?*S~U^n1ffIWc60DA%Z0N(-Z2Rsfq0C)m$5O4_aB;YXM zDd0W=I0|?g@Lj-hT>l%u3BXDG9sxWHcn-gx2fP4y5%3b=Wxy+dR{^I$`wsv=MBTpy z{0Q)Oxc(a8O@OusC3+jz-vPV}I1P9Y8Zj3z4=|rf)&d%|7UKIReBTDR126zs57+>B z0I&(L74^3on?pgued@=f4I{W7Aym-LBA8 zV_j1%eagM6a0?3SY1An&rMiCsuGHC9`-x$D|Vl@Mas8(}CC+MVrGuM$@N97+92KqGjV9IDP>IYJ@G+uP6x% z?>o$C<&$)zq{i0ah{|XATM&z;lvj2kjV?x`F22i!#EdI>V+$C0Le)o)EnzQ45U~kb zSlZYPOwX_sonb9gdQ;O8llIK;SDx5U72`k;LSLmu)yUo%_U*1nMj%nr1mdnD(*i8a zu}i3P8E^&G|0-my1K7Lq-P;%iCq~hNt7KF~4m1qY%&>y2}YW<4gj_A!2|F{#VQcvS+Rf+aUpput)iNCN@F*y*gMLGc z;_*>F*3@-?2Z?ggOOLO8z~@zf`c``2wu$GbQk0J{<<+nPBmjO!9qXXXP+mvDGdQaW zHWSm5Tqw96%sFow8#eqEOi&n$(u*7@XmbQ&{CFgY`qb%Xgqi!sx z8yh7*N9JdqVu$TQ(eO!Abd8qHZmVsniB+T<%R^2>&TFh~0o&xLSGCZ}XipS`(&ELX zMaKv#Td8%#==RJ?OWL1i-AP=(LB>XSXS0TSX)hx7#fy8*Dd6`;&&Eq@hs7_S-UuJ|S|JPR`XWwF_V zMo;M)?dLnkB#1-Mw$p5P@}(xKtF6+^QZDnexQyyKj^=hV&oiVZ96vWn?aWXfwQsy( zf`%Yf=Z4a_nbg}qQJxpKh)j4apViPh_{LtSNLZ{y&@#rglXj-fQ9wPWv#$2|0B1T> zgf?boZHjAn6pvPNcw3xgUQukTxD>;9%S+GS)GV3jcs9>6d4`#^*OAv@9B$|bblfSq zur_5eg2YTu(e6sdBFLg3VKKc}k6oGDdNUmvaBKAp@1*kpwdq8IOl{C^yQ4Elt>#3n z?zA^HkzA;nWjd{*Q=Mzcwj(As_+#|2UqL)rjY*@O&NE^*KLGzT#u;5d9{aIQ*y6oH z`w`O57INm}#AN;@KKhb{c0|XD%@#ivlSTHth#r?hEHh;1qkM|^qmjHBj^;G;*b$u= zkTn`NE9BHBLc- zScV!$@$DI3n$S?~pVXM0ll5%BF#@?7i}j>}Yh%3fSm(IelN?lVeKsW?3r6EDUc4B2 z?){xuLHMBl`ADUqmz4Xd~+IvN1 zk)TjUr@V83cNs8s9|Dh^*we+iDjtOzw=5Pp8Rbf=eyDf8$#Es@*Eq*Mp7>Cadv3iL zTVV>OWfj%v%#sY?gjhvC1mDDeao?0PI1RVdhZ`=Zk6p*Aaj*S+e->wNxO7qp9qt+JROv zS9zD3AKLRMR`kN$ftx#TE@EyvqA-CwCGcM&{`5Q}yfR_5PFwgEBWus}E}9%WU(c4V zDMm+S8p4S>9)vG8G5;`^AwU@yPGG(mNh$Acg*_`L_c?^NqAX9DkHUQn*oS$9;FnQ< zSY{Q+aAkAVPzWyzlTlg=@NulP+5JDI6YW)BiH zPadb2S>}{v9s>tLX@P7j**uBy^p%{O*{)h+5s99c;!BC^4B$ESWb`?~xR2pm`};v0 z4}!7*zNgw&PY$L$YFx7QGx-+R$;~S}@fEJLx65oR`5EMSm5#^#3TtvFGRFXFDT=Q1nu zGIA0@(&9I-_;K7_&#+_;+saXS6Cs#<=B)BB$+s=owvKZIZ!!iG;rkJ#Y%3MTO|2{% z-&gNSIEmi5tuh9aXUftsQRKzBy?V61A(;$6DN!6NH|>py=W!;_cz&s?PU+qaOhr%f z=2)!Xm?`Tu@7VQ0UiTkl{8=-AQVzya3R6k04aF?Axjz`A*q$ccI^I&VhK;meI}6zr20>SCJPfpbuuE1(Dov(jdqT^ zv1m21XUXIM({q((ix*}@r(_kc&Ew_fJEpM$8JlrB#@Dmgj9Xl1I?^(Q`C>gG^|go! z&JgK5gO{8uWn_gbU&cD*b&Y|Ouvl*D{VG=^-EWbf8WBF4IB-9?Vq`OEJGy5Ve1ot5;; z3CjY%dz`56W@@>kbGopG`pr|>$D!T@j=hgn)vcKorbzGk{Z*|U=FL`lhgq`0wVYMY znq<9P&ij=3+m&~9%^m?ilX9I~b=8`Yw5M{?yUnVJWONng3e#5)ch~xf`SECSHo#e6 zmBF?1G?}TYwv+>}#j0Y->_OqtHScejU3IpsUBup)(QjwB+I6RGag^hdtn|kr?~2Ti zx|~Pv%Qvqk$LB=F1P_Xmoiy_mJCxxX=g-YvJe?Ps(3wf8lRIw?HPnu*j>*htNK3|^ z5`TD&zcdBUbX`mN$~$>Ib&AFmtkX6N)<6%3)+EdFCHx~B8 zHS;BtRgC@_C9PFD-p=ij%{Jc+chE+*Wehg5B0eE7@6*T_+eZ2)pARH6|6zXGpYod$ zc1!D9&*W(7I%c-9tY!8L;ad01BqSztet;H-&D$i?L~qd^>V#%>Qy(p$n`kjDp{3MM z%V;^RrZx0++CYcsDLO(&>1p~doumM=>>X`UZR)j6?&CU(GTb~dXN5v{+0fX zeoHQ$rBCQQeM%STGrCA$&?UM|SLmumR)^JX^;o@DpS99jWo@)JS!HXxwZr z-nC9!?^*9#A6dV$er=th4q6EM4uR6c^e#PtHe9OG@9A?oLl>2>aIcKEZbe&Fw0;^bt+qZyYj;?`vFg@3@T1fE zce;)4MvH6Fdv)a=x)-GbbN%)Bz7HJf1l&&#&_;R?yqis3w2A(VhUgpg5Ph4rU>>!d zcG7OT8QlFg&UWI?H|Q47e+d0h+&n^eF;DMqD(lehT5emlo-Frpxi?W1RqH|RdQfJ{ zhE!PxYVT)?b=k<}!BpAAy-?-rR6uXiWea+z$|KyzWZBMTH_ErT?B=3+{|IQ)JlGj> zB3`zDE2BDoof%UNZ2iwfg(~#gbv=!1bkDjEJI9q~iS)Z># z(g)}c$o_oPT!orT>0y*_qCAZIbJ;H3isN@s_S54G2T*p?T?pGwmi#-0woaiiU385*rOe_oJ5{>47pkbbOESvJ+|tXX#8Rw^ zI$OcL?+babLO78w`g#w_ZBp*wvM5#7FvnC`2@BD~<$k(2^uw}rqo{xA>xN7mWUYLH)Gp0=(BB0N%5p0IrQjCayG6=s*t|!e z;d4W1t`)z#4Obr^{cqLL40a)``pvLoyI`ljmQm85n=;Dvezb>JAAaA>K43E+*Yowe zWA|0Wr|YO+k28h?eB2L<*ZjFBvnXG)4zL;?N1cW1ZtR2Z{eQ#qDwhBN0C?KXn0Y*u zTOYum8Ds3iFm@(OcFv4FN*ZgHh=|rPGcjUDV=SW*LzcKHNu)w5OL7Zol}cJHw_7P& zM0>iSkZxMuXU5Xh_1^owf4ra1JI`l6&vSlf`Td@Ae!uVeod<#-1n=VBA%!#WT^8c~ z6ixz;LOEJQKgA_wLINR#EaE5}fJM1T1OhJxM9_i;k^)F2K?so0q6TOL3c;~NB2Yy> zz#ACyNmP!gC8$8QylXiW1Vus&C=8-PEcm~edx80UgP~*<2RN3}@oi;M;Q`3;P4}H! z!+p*baWFZ6BQOO2{fh*U2qaP}e(#&ftv5Ua2Hg(Cw4*=U0Et;s5rVK$i5Wa21y-Wa z7-XP5UJhWm1!0W1KQ)p?Wzum(QUnz*3uL%rA&i(q6f=lKkEVr%QStNO(O{`42JIU{ zieXXlsz8}55W~n$32;OzlSSJ|Ba>J(1|6>sRJqjx80>VlFD)F_LJE(d(SvbBd!QyS zfhXVz1U%sV0_7zL08cOl1XFWsbL&8`j?dVYJ~Qe>F|t1Fa1xzGCF6(;W(0#dr49h& zDRnxt)m()*pBarlRAw}dOpSz9L zwxRZ{gVv_D^^P`o9eyLqM9OnAXtf3{`D&F+k;W ze|wq#@@wW3f4fCDvL7w`xW)7tTXb?HD$V}jwbl@xE6vTbtPLZeQJu6o6x( zB=HkSoZu~`sw4`Fl3jmboW7>Dm35%KciXUC&mZmy#=U@m7KVLWP*4bgKrH}TKx3v1 z5GmLY7As<*i3x)o8DY%gxq>m75zg~5RSW|04J8cF@C}K8fE`z+j;CkeCPwh!kY8hqniSis6tmpPq`SUR=&WueDr%d_^Jl zmqC?m5eNEs_?uN*!K*)Mzi38^$uOMDtE{Cz>Ypw+rPR3VO+YSm@;7mh>fiClh1clE zeSQ+B>hE4gRd~%_5~Q6=zj@O#G-t56M@5^u$%_&UHr zmB107F&*)ecgC!4eQhwOqdG(Ll$E@Gj`;s|3{Ax_z+3$g!vyP@7!LZc^qaws#M5u^ zPx^gm!E`Ep5vSZ&?%lTZ*mE%6W3X zq3jI4l;`GlT_&-`R^N6{iGJQsbko>3bj^TxwXid!cGr^SLp!X_OE+o0r>q*0BQQMu zi>uO(B0Kce+S~?u$q(ey39C=7%MUC&r0XRqKa|@;vT^iQy(8l%mhJrcMAe6li<~PX zm@l(mu5Xh%e?5tkqgbz2-j+lo{oE85M;ehyM!^JQGL;Ezr)XdfOaZ>g zq{xWBHx~$h(;G&?e;VZkKDasEpp{52lT~}*-o1h>Z@13klEe$3&aKu&DFAH3-1Pg2 z5?r5)wW-~s54n$I1p&+0l4KnrhC+3p_M@Wq9D#}yPwm13O9WJUe|ySqnID4gt|Qcj zH;frBAe%mOrG!hoXbhH|5Ikxgwly7l<8}4p>es!v8=L2~?PEQvThmu>sZNZ25qqXh z7lkXSc;|LKO>d86!d>aly=$WB%hyRdI@!}DP7PWeIK8l2WV6&~6?SdHmP*>#mxFcU zSc7-lSBoqvSp5Xsj7bcKjIAWf^s)>Gs>cG$5x>eEG&FHl?$Nl|_%$}iyD{Z7CvEM> zqFV1_wyA;fmh+ErBACr@LKRovd36l<8>YM3oxijFcEe(g5VFsKdK#;;N!50Hc7Nj~ zl}=O?;0T7os9G_Nsjz_I@&RZ-@+ta4R==Khz+V!R<{vpB59FpeA?ZhD(zwBHh;yZr zjc1YyF${L50_V$&ie%wDsjL_Va}$0cu$pRs*Cp%W2mn~%ejEa3h7*H{BSo=77))9m zm4b_kq~aL#FgD&15T{(kc6M-L7%4ImXNvQR3JRlPmRT5b9rPw z#YA`qv;59PZqZ_fiHVv26%@a}@^>iy@XCvT&6L?@-}_IS?HJ3V(kbve`jNtDlqqY8 z3<{OU&*?PmpYWMM{I&RcnMd32LpLq16zyb3>UPFFzv6q-eB$C;<-$S#i2Ey*brj26 z`VoRvg6~hhM62FKmz_*KuaIn_rYaJ2zgJ>hz7{ant%$~E`fX|2y^yo*%*jD-z64uQ@p}gU=LrMmWHX4}`h^&UN@esKB4;M8hr=3D5Gs&2^|;84k4$tO0>& z6#NK*6=1>4a7YAJX?nPrm>3@CU@zlgjvNsQ!)>M=5~wKsyOzud5^OLJqDH^~=oRS{ zX{TuNrBwVznnaLErbfZ$Jb0>3> zlT!!BQfu9Nq+D$#9?R{%ko@ti^PAOFuhEiao29T@R0hT$zHRXGV|>i7Dfg~(s=Bei z|7C%=+~SM6Tks{&sBuQBi%dFaSY*Ac`0m5EKIE2cIS_@p52h)wy@Z2N53Wv^JjsLMB@O*Y7+yBi;zAIKY%ETmmGUTKWT-4>rLo)8^n z(elNKG)8MxIz%zJfTF*aUePU+UmSQU>G~z-gyT9MP@IK;?PXFPxusBWC}GD?@4oDb zA+L7wqpYJ^>;{;&=`d|KPtz8;tF%aZ)r-xak`8$&+}COR3vK_u0L0~`DX=sJv%JKc z151MWEHB6K7$A)nn?60;A`t>Sv$;DupAac4>_818#gLe@N7H#2S(w<-B>3>ToEc1_ z)8eMyNQ&pcC_#)6!P3kMPq6-RKDgSr$6|3&B5d_W29r)B;ibVm-l14r*oQ>NEn`Gd z@vyt|=1pA5p27%%--!($qQfJ(+syRzQ7L#CAjO+KaS>m31Qp(U=&YHJ0h#Qgj5 zPES{0@)W&n)X`5*1ZCbj-PPuCL90?!b@-0=`Lo~r)JkO@>qNP&=zFE$!rtmV&qPr7 z9+v7s810rZmkC~Qegk8iOwF*h40?BQ+_}|SV@YYdXrJGyKP7i!lLPf0l7$$aX)8b2 zpNLj&Nz)!{EjaVmW7G5Yochj|p-Y)h^a5WaUv>0}7$ne^reB%dn`5(kokPw_qjj8i z?C9<@H;R)Ef7*$$7ScrrdFIy@SX;|!=X^UlW*5`+%ZuT<9r+*4Is)7d`iX^ZOK#Yd zEA)JZ%Uj?XiQyewU;^m??IO(?PzehZ!HI-8W~GnOjAs~4FF0?xRWZCAcmlT}I zxASZS6ky1=^WgZk&6$Lo@g?Cu*fv)hK4lx6f%C(7PFl|a;~4!*MvSki3RRO9+Z`@b zT$-+iC!cZ)N|N#IuxZv0T(8}vaK6`e)u)GkoqO7Y`o|u{q?a{44@)p#tJ2Sspd=Dk z_?gK0`}HGj@*HBzbZN~4?JgbfPDC6Rp;+8?6zHRjy*D>0%o}GOu4E?XK0tTIC4Fcm z-%%N+WMv`;cACeD9C&!=iZ{Z^Ggn{t@(%m)zLCf5gFfu_=*QXB-V+b@>n+fy+Yd@7 zrll=$t};yDN?z0AdU=rO{UB+_SV+yVea@c8xYP9;SreyJgnH!`)ebb5lWJHiJatCr z)v-N={GZ5c)T>VRt8M$-o_jEjI(gNpd+m+APqdyM5xTkxABE?jQehY;ArT0WSp0tm z+c`Fe@821V5-Z`2duBmJ1n}bgA2ERnUr7uv3HWQ}fadp(C_KEmcMD^b;~%*=1#5~N zroTa)C2a^U1@3%Z#PN%PZPCI6E653AKy-)&;ov6{6b{j#Fo+G8d|-JL#DvHYl~+(U(wpVl1q6gI~PJg_%hlX)egt0ehbbDUD} zn8ie%R_meY?fd;3zq&j=*2;JvVTwb>yuZ6aW!UFE6RVHVikI8t6(RJ;Qqe?tH!3Z+ z1=q06blexJdCO^T>{B^XvFmJ1=56`-qn4E5#bkBIh@9iSsz$eL{de^dhBmG32niW! z>&jfBxs8=LO6c7GB`<8de=!Fs1~^Ee?`wg^a}Xb4LXL6Wk@>&=9yG@XDL(gF3l#Xh zOYHl1bOh{Nvo(VFd2k9~2F$phf=w;WEdu}ITuUcj+_Sv;y7%bQBz5E|%l>j`@wGYJ zLHS`{pWPR2OCQMLLFuCS_1(*ss2W(5IqrTKZL_U2cJ$L;y&KnTFJHu`llR9GP4WUB zr=MG6O!zRlZ;hghuZr`BxPsD%#3kmC|Ghl(Uxe8E>RnG4h!VT&{By+ID>9FyExAbl zLV1>Ye4p07!95nHU4rNG2_?(7zBK*3Yawx2tcL!VV1&3}s7Tp|tcrt)?gtF6b~ks) zZ-FcgXj-9u)jOVBITh|*m*sgU^`x-z8{%@QvFJ;I*ro0P8F%A_(}U6&dOJPL76j#N zsEq{q(6-5a>I*mYINt1fyX$aXoaO!Ox~wg} QJ&hM32>KVoT7vcf00b!O^8f$< diff --git a/src/librustdoc/html/static/SourceSerifPro-It.ttf.woff b/src/librustdoc/html/static/SourceSerifPro-It.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..4bd621c9bd0bac971eced0ff78504c196e7b6c14 GIT binary patch literal 36332 zcmZ6xbCjpQ&oKNM@7T6&+r|!dY}>YN+uX739ox2T^PTVSe*SuMt~94f(>7_ZwC6Og zzs1A=K!6{Jz5u}g5Fmz;pE|^Uoc})v2`Y&K05)Mie6jz~m{_|@L`hQoNB7{T{_FoC zkhqBGkKAVFr*8a%QE+h)+4gdgM830gv8jKC%6IW6e0sund004+T008_E zJCV`nZzX!BpGo|utNw#}T9A$zhSvIa008)pE@I5QsD~dO?GMUJ7dmQK>%0Ao3)J|dhxLO5z$`$JHu}~-HW_{Z03hf;y1-bk zQapCHj!po8Day~>eklCa7H?a^|9lDrG!~dDQmzZn^9TR}Ir-@WupH~{{(p4){9EX& z1~d_*6aWkW`N98#pS1vm`KtRVdw=BZKk^g6;`j3Zll~B3ayKADJtI9mMN_r0-m$om zUbusNU@`!19gqM3;08n++>#FjzyQDgefMh)hAa-NO&L>y_z~O?Bwf*C?!6zEOfwxR z&k*-3`@~B|Q|wO>;0zKPUKt|6?ti+)!?y)^;lc@xqijr?D~3!n04f9H~qJeTO*k+(pmp% zJmWX(7^+!whi=7&K{ELHpR<_To_5Itf%Nktl%Vs{4*`SdA^d3@GdW1J@)#!$OSp%Gw(&MkptcX!N*ge z&kZ`{l%$<49PEnbw;eJO+;TfPiEr~TYFKX#-zRD@aL2pX{jV>!6K9?zj)8*VudfYu z;J&>w$_%QB`whu59G184(mUQ4j-CWP{?d=wpzcOM?K{#%h8f#=vcor+>T)Ut@IFF7 zXX=i$@1BPuWCfuA;v%_N3XmKp-g7U-P3&zSoiCG+s&FmwssCY~<0&R3v7)yzT8yTRd{-$|C?gC$;^F5utDfSkNCNn%~{plrdBRFO>A4y zD!;kcL@ipj76IFk`T}Qlwt04Z1rB{jfVWaMu9SQfy)3gvR*PTZn!nf64eWY{vNJmN z#`!?{$*kG>!}LIcgZE;)&$zP!|1A&ML+~UV2m=#SZW0e8K%?kX|FPi9IA?N5CdrV? zff2UJEV@zN5f`hDT}6o>x68`WgHcy=*unp)fzfMAF*Ee9=||{?iixMWDR0fCbA?!N zSH6v|YSHDTKu{C5-S5aU%%NwtHGykpkkI*mVpaBXmMa}g87u=-r$FyRGRw_J%E4AF z#JwcMQ{;Xdm;W9LTkyWubI z=8RC!Ugt`T4bqJAhcDkY6fqv88bRDCe?)oL0l7HBV$GCfGx>sa^k7We1{ozQTRUm6yH}|t%S*D(ARDUy87ty$-K4m79)sY&4w!b|DC3Eqv;lkM zQ#AE+!1M(nNMY>42?`;_r;(75Vvb4*N-4%?uoRKvo{kELG5t+C``frx*19(u75b}Q z?-ofCWp)5TTBSZd8|Q!oy=_!j=Po`M7^MgySXs@UfDX9cU*-RQegfU%GMjuNl zeG~_+E)M_JFr^_1wbF>YV|5VksV)^d>zF8YL7v=M%ydz0a3N^kqPoOFpP|n~TD|?e zQ0Kf@=QNA&w85uZHx0vk)}ji?#8H0s?kuqTtaIx;^NzBoo*+U#YwBSq4yruPfugjY zvcv0*l^vsyx;>9)Y+N{}EIxuN)!`g%uuMv!Tq*sHC6Dm&M1njIL>OaCZwV`%0NFrD z78uzCDZ?&t1S3GW-yb)MILYgvnB&k)kXwvFOkb*4CPGmzw7jhRZ?i^ugNH@lkcI!K zQA7r=Neic5OxpcXy}N}DC>TUA1S#AYnp3~htkR~^y3+J~@BGC4T*E*^zavLMJ#2%y zl^C`@v32F7DfAjrbHb%<=z5(?d$wWAittkzdop|WvIlWj-4@T5*cMwn850YWy3yDO zOFSkqF_EK~N~9I~D(BJMb>RL!kTjo^d`?QEDG7CwnmKAd&R8K4RkcQWDce~-AJ!2< zscX1v`sYzCrzu?q1Q~*eyqSD|o?2>axvqkqpNo8$O5 z+%ay;$G(jJ_jRGK%QU~ofvsFzr;S+d9Ot5{A$ek^Mbq7BAXHf! znPi!ZM&U<$6?c1uS%iF&0gCISVv56`5-8=ra$P+KhoEb7eUp<@PP5GI%qx>K`cWoC zrRf7kB@D^t6Gm)~Y9mC;LgQ*z8Ygh;tAjRAwW;2B_Hp-Gz4nO9ZR4;~OxcPPc`ywW z(^^yvu@MucNYG_{&kG0S3wx!1_PH$@(zs~y>7>mEs4{9ZhAN9G&&`LxHEP3;tcpl8 z%?Hsm8j@Wu@?h6b#(diC0mF(92Mk@DLi90np@t9ppx&HQ0#i(W%rM7H#I5}j)l3nV zQTjCOnA6rn_K`{t$0UIqrPgbu|G3`J#Yr8!P^)p*YKY0|BrOs$lcsuTs}hGXWlfOv zE0@dz*(^F-EMnnK2rgIu_E$4Uwhm1kwllY2mB&Z?t!ggs@GwjDsV==cr+#)HK?d&p zK#m23G`j)8^nv76{@j*&y)+iBJ57UZ|KA1Xe<3WB8Rj3!r*0PJEoPko$y==l%%koo+1XlfuXe#AS#tspvn^l^c|G-~OrAUpc~ z?P#)~(EFS0$a$dX`#Ww(KO)?M6hJvCh{qzO3d+j}Eh0S%^3CA6{Hyiw3~~D4ro!&` z5?ZNj!q)e4+$eIwY!eqqxG81E64#12Pi5W`XN|bjWtI{*4>;Ont`e6IIvAtIFvYaTmQ6bxS=na6UjniwV zdhGNlFEPr(jM))0(+8#yO!kSpBT&bfw*CzRJcj8s_6hPMi2K;Zfiu0wIx#h+O0cDS ziJ_6NvY}ZSr{j}hMqWd{q2_36v|Lic1Uq7TMa9wsn$eyME*E6aTHduBtLbL+^@_{M zC!66-S@vzwiKfp?v_q9P9P+B^srBXR&s+%hmro zu9~gCOxK@0o!hoH^lVtz(=#V&k5n8p+cq~W`FQaUhVLp~#Dxg^C?8OpA*Tlx3RH23 z=unW0vJxnqQ zX9TL`(VhUf{OJl(PZD_>v>Q_!T#`nrw>1-m__xRjM zaza%1u49;Dpr>jZ;_v;adn#HiTewp_%RDPRd)}MKqs4EX9%UYIRFNoGlQPCIjN2R} z+DbY}MkOQ-;w_38PX#;@1dUkIg^m)8jd)iD;S!V%nA&7>;#v-{NrIi?aG?Yw1q29S zV5o#>&0wtas2>7%8GuasiPT^<_2_W|@9jYFdZk}Ldlvs#n6Sob{6YN_x~9BYw)LEH zw{&asEZGg$UEE#q72vbk)BnvC$1cyyz*tM4#xVl14yGEE5Uddj7u*n15n>whEIu%@ zGSX(YWcGT}e=?j#yu|Cmt3#yxKvPOj?a}cRhW4KSRt^^{B^^m?7L%upK11k+nZ^F^t`nsSmbRz1G$~CW6$cfU*M|%B3xVRf zJf)oO`D*T|?&@=RO?-KCbJJva>8EtvaQ2RT+YXeUd~43zcD?32&i1?lnK#_W2r<27 z*8>$ZfHCQn!6;GtNU7zQQu`y?7$oY9^HJgfKA_|BPR*sO^LZkz8_}b0$@|T4qYM(u z3+|Kbb3&+Q@J{z)hquJ2Pm6)}M>+2o(V^<1SsW6jAR*5KN}6S6ZfS*Y(Qy_(H;1?> zA7VJ>jiDy}u>s>#L++koFT55)D5lC;XtI?WK-wTJkIKDcQcBU~K>}P~HopjpM3VAV z@vmAKXrK^6R|x&@+4W2aGziydxZLzgK9T8WNwyln1CvlwB506~Y1pQ6YRAi$1K%-b=sGll1*K*)OrAEi z*Ad6pRebHj*DoWty9ljMZsbNwz8)_7#^-HhD%lXzPTKaQ;1=FP`uMI@&_zJXfjfZ~ zaRIy^H^yDWR(G_N-}4uiAmL5{ZnQSFjsmGF1vEu3H)yx9Yen^!S+5gUWI0y7M zOPI~LK$U5e7s}4qcW3Z#%GS7Ic}*L6vQfulA}X$5%sP+lNHg=yk((rea9I<^DpSyF zuz{O{Q+3zO?|H9T##5H3Vr8^cc9H+SqF7Dwm?XMvhqY@mMBNCg=)Zv17leVM^NX_S zu(iMMLT`wGl#nej)xSk4ezGXmKAE&{64Z@1U26)`lh?;NWL5cS?^_yqR$m`lOnBCu z@9wB-ZXUOvj|ChH!Q7~q8JZzAZoxIH3DL&IX)IkB zNz5gz1ruZ1=KBlKH!-UeHrcuo$S))!j^aEdgYjDHsZ$3=I4&-y4)d(y<^H3L2uMmx zmD<E~mblV;py0Mo-l_=9|4R>co+W$wvizj}Khc}4#`$t2Ue6dmys zgh{a|f+7fRzum6tt`;Nd>hLO<%Nrn!fd|(7=Wf2zP#m5)cVX(UBMN10I-XCpXlK76 z|4G((s>6kh+ht=m~Z7lyd$~LRNv2qP8p83QpA4}sZq$!Flu&=}s-0{|Brn|kq z<&F96Dv|tciVn7(_F>Syr}NEtb7*CU0aF+MoPSB3LvaPub0D<*mQf!Q2Kt-VXN2zU z8T79QS|md_cg6|8;zS;s(^rN#Go6c3VCphjnTO1sW?`brL-qKUa35OEVq;j>$pM|Y zZQJawH8AY)3IC=cjy1a2vJ$)KGkTC@{|~Ku!7L0O3>&50r<0GHV|&G$q}je$^g!9B4ZDkh3^b#UqRbI-ylMjgxRyEFhW7-h0^B#pp6~Sj(sWEG%aFZ3Z*^jqA&vo~Q zlOQn(p02d?t!K1COe>qY9L>P(aS_@#S_))XP1QGMmR+ELs{&u)X;uCt9*z*I8aR-4 zMlaR+vPLkT5@iA(Q0gD!E>I8~$v+g1mLH5BTk87GR61eKPftOvAXLl+X5XcIDhW3| z_-wX48y2ph4)I&woJNb?%6Qkf8IhY>VbfFWhen`8 zOG%R2brK{=rF`=_Yq-7cT5M{>$DETppi-@(ile>K{&q838N)K>?ofsjRgMcNHBHyceos!}?c6}#nAj=>e5r{E0WqY_j7Gq8= z>Mxd`e()zQR(!~qvTD}Ch-w7SO^$ebI_UGH{GC(H*J3DuD<4x8T^zqJRr{^k=S|_O zz|b(5iV^oV$yAuygRy)S-;eGWoNgfQISv4f)`9dL|86ln^xd!r6k*HdzL?F?Y!8K zhLeO)9W}ulQ2uY*0pVi1*D^_nAyQSe29kkdMW_4a4N1cdPJL(XUKtC&HRWbjb$X6;GSE{RBuXR zaGOwmQjXn?egpUMFBSgmi6&#PT#=ur5mUHgG$#vCt|ovfVMNN*)C!>u>zJ%cuu+By zDigl`G6r;0fhRwA0&o1);Yednb2Ex|Lf#W73A!+;Wb@!&#-HrU|dbi^(9L!{;tm$0Z92x_5L2ya8?~IUbe>Nq-tYgi~g0O1a zjnSR|42N9te$>j@7763RbVa3ln|d?;2r(O2qc7Y!kbgFEJ3gjT4f0({pM>-T`V-;Lo~iJQb`+3B4)?)UB3~aJN8?siy&Ogt z_q4kiJlbHl6NOyWX2)#`%fFL^P;$?O=KIIp%}5wr`tEB4O$3sZa;cst zBu4tNu9G|~8A#Q+(by==u6w8G^<7!sa$(|9GkBvvs`S8;Fw>{oEX}t`xQ;}eccPrq zMUe)e=!Y82BTUG!SBo$MV|_>$Mrm1twn_ zL)as=TT40H1Fug{5s1gvrgG`20Q{DrlN%?b`oMsU2=#7f0!QTk1O6Q6;U zrl^|#iYI8nw*~$C^|Es_hnmxx5Umxb(+bMD6=o#w(Xoqj4*QrEZgs$&JTiEVqW_H0 zEyh&;ktQU#YLa_4r=|ue4I+A*^2QPa9_TVPViV5ga(jL0@A4{)OJ)u+g?9dA4h(hO zu2p%cA&($)AfNQusMAS%^{rwCdw4U+h)8kL#i>>FQ&1tNYXyW6h{FcDJYt4U*b$Z& ztfO!fSZfq&V{Mas>&eaJm+%5G(<0TC{o=3i>P=W{v;YsRM|(-fy0@a=x{ zzvnwfYHjdSGj`q~jan<}IU09nj-cK}U7M0bH(V9DGc8pn8}`WQt25qy*Ci)mwq<(; zVC5~%AQ+Y^DFZ?f*G~0x;&t=ruJ9f{1!xZ%&fde!G^f>{8CB{|WL#+>>(9nx$rA9w$mnVsLl zEM4DGLy_wQD1&FDUwFyj<#;8SL=nB-2zI}+W~svm33Ee>%(6W=kjb4ufs(rPIaXNY zf<)s|Tbv^3upr5+R|XQodQr8GXJ60c9CHY`xGYqz4?5<_mJ<4WhjckSJw zh4V--y+f|ogA&rgUttU6_ZOe3;V(~D1&=kkiJY*g_IHJ#jkK)HpzBQJik-x3Ms91J z9X;pB$>#w1*P&I=@*7PHc+^gW0i8`#q+`~=SoSDycoQ34(ZPoB5Ps7f9gLZdJW9v$ z{cEy2=Lt=GW1~=m`mk*o=CQKo&)QmLfaHz4cc9c2rgqMiK;3+-mZ&v9AScMQAa6T` z3iKC5rMlhaTf1Xnv{-)f8Cf7%5%@q~b>jDQxw>CVl_Ttn1RSj_a;d&qBF7(@M8)=M zmZM9b%d}S}<{$XP|F2~Jn6ba6gWKO$TtFsQr;B~&^SB_EPI3CkAtbeBKAt0HhYQ`4 zHpnTWS;ywBXYOFg)?z@L+>&PMG=U&WV|2+|VwTDL$RK3m4Sr3x4^< zz&ePH)S#&(HSdr}xq^z>=GDwB?~7e#F&i#nI*%d`V3_x)$B^>kc7RyT+sBUQ9(6ik zm&}as7?II_w?819tJ>#0z?-Yt?}&RJ0mkhCawo>5a!@vrgK!UM2l$oy0>xF&-+3Uf z_x+N#FS041%yojTVh~CPCF-eluNw08X+)^4Bz3K9lF#gU=g;_Mc5arKL!l0yY3#hm z%}&=6H!oI=OY7BiGi`!>Sy5pJxBXU9h4}{+d;#Fdq7ej+r=OJtF6tAOLuM_0MSvY| zo9sdmi<+x8+h=EkvZ1@ThRo0h`|_>y5|%L#Cg%K~9hi%^(IeRd)%)CW!xBQn!||aK z0>h3YyvEPC!gvJnM5@L|9&zL&5Ov?bZ!z@{ne~ceVhQ2nL<2I@JO!)c?m3Rd0{9`Q zj~{Oo4s_$2iCufi<9&tJ!ZsjdiM}&fVt7D*6MYvX319g?pIvc>@Bm_EA5$@r4j|of z97EB*V>w&GU+DXem-_ZA(e3d-VIe~wa}B;k20}p{xwcI!pP-yVYN`qKB1P9Wf|JRe zVZQA(52tLlYah_ZSC!lS#jOptfD7eEJQ=uf$=&DRFtd+;0k@{vj&Yy-5g}gS5h~RZ ze>Xkjvz{58^ReF)1>fa)vboT`MzX)ao`7$!?$J?>6cf^rR@yQg6fXGHf;IF>%WZ$-$!%b6)1M{(@(?uW`^^6FJr6w z6N?feq`JXiW&fzm4Mx+qDNShp-0u4n;|4A$^lA#MT;Vy^3=lg3c)!S86KyNkeNLp^ zOuP`Z{d4=l_K$-p=em)+5)xd-c*Ht=vJ>?Lsw2@+%*%q_ zA6z!}xY!PnjUetYa8P)9HlXe}G0-+t`%s-DoX;2^TzH7^v<|GjAK-T!l2HHgB^{@5 z!E?uT7*nTbZ!br14}RPmwjnvSeEai9IfTR<$9ayeZToe`U(DP>$BU1M0ydgPHkuwB z3khTxd^m<+h8~81hd7BB7x3XdwJ+r|ElHMAFr`|aI=kc5eM^vVFk*tSjWg%5ZDkwj ze=jX7vXpB)AbqTY4K|#E3-HD8h-_pz?)R>Tio6HK{AZBJ@NgW&4l6)gHUwf$nHBTa zi`^64zM-2*_^i5Y@?_1JQX0rYoKwIrxFx{T{^ToyN8*F~ zO@CmMAcj}+EpkPQsQr!}7a9)Sn;lP+HT!W!PfaH?tvifU7h-HH6fE&(*JDtNWw}mL z%$>fx70PzYcQUEC8?!VBMcDMIsOo8C{=N_igmiuQJ_6cG2z6h}{}=DFctDQy@s3z~ zsj9o13bCJyxl+BwNO*0sLzqvUiMUJp@=~*u3)Ln$^N7rGb8|U~C44FU&(dBkjP8m} zjVbS1)iN1~a94v!jS!!1*+y;|)x%$)qbf6~jDd0I^8;RepBDJ-cn(B%|av_L#Ml*^u)e<`9mjN6p!Y&14(tlwp+F7-z1+X{W=MwUi^9V`}WB?4tv_03+Y%ZTLPQ zfDocoiV=hWB|U0@zI}twK=R%)^XVp<&jE{g-sl#V)s34>2qyGa`d4DvZ@710%G8>^ z-JGRG-#yps1o%J7`Wq`3UcUA&{riA`Z2@@VmVeA6)A`6F#;u62UH`Kn?279gGscGvkMRMY;x3SO)s|b2jq0gtl(SfiVuBNSx7sCmQzc=0 zCCIe8*EQrG^O~&egcLC4SFVg-PjewpTWaMlG0?AuIJ-0%0T92oF>W~3^Pzv_j#1@M z!sX$dVi^HR9Ol?79CpjkqNn=NrJ_$?j3>Zjuc|Lwan&oB7TAJ!Y0F12Ybe$r^7$dS zG@3`UP0ECkRZ6Uk@ZoioH~LYpB}nA%t*~5v0$TgRYkUaew&|wnoxfPF^OB#K8b;eC z(HP-uTWrRaH72?)+nR4Fo!=s-w2tK6gEl^HTk=J-jxOZ)epa$bVc0jI(|-Y)jyW() zi;%C@;Qd?l3jGzU#q;CR3e_{TXg@T5efQhR3%CvDJs!W1UwjMTDTw4n|4DpDfHS9k z+!NQa`+`!6=<&-P83za;$y;#v=6rzqO9-i+XBmCer<`fs^VH6F|2S=vH7=EJ#}dVPe)xX9i`PqIERT)M}% z^#(Q4iWBLPw*4-5LYK`wmQ@@;f_DvV1bl%Iq~Pb3jzGEyA&6%low#$Az(lG`l?~K^ zHad2+HDPe2(viwW(sDdL?MIlcKstRs?Yrr{dMecY^k@V@HSN2>;gcEb5Q=fw1F|o; zI3Ppf0EQRv_o=7oznzXfm9F_g(IY3ObsRd`9W3|Ur+WOt?2OmD@^ZrQUFyrR$G1oy6qL^HH~E*f{XEpnsD17q2s z`~EFnYq{U8mL2aB=56jW9&_9gmu>afoOE;YYiVev(rI~)&6r?g$!AuS{G3Dn%GOs1 zUI>>(weqaVn(no>WeSr9@7z~={9-P!-T3oOBSTd=Ulx`jP)2En@(3YUQ^Tl)sk&E{ z^H?YCxKzDvj&xBq9$(CcoKO25@_?!C`~^QAB3yj<8@g>Iwc-k!j1HGSs5ATpsI@1h zttSUUZ{XsER_)@f0Y-fupM6cnR?fOZLpc8Q;yhmK8c$`7>3a~K(pJOez2R%-C*5-5 z=g>-jAdnTD{)1M~P37kQh3GDCM7u$FcYA_*`Ap;+{9pXk*M9FIdj98IQ4`Ug>^lR3 z5FAxaHLtosuV`*V?tS!E@uRzYuKqK(ICCAXdi-d=x;ryVwUsGfzH!^t|9)X>s~PM( zgISu1mv${>R;kB(G7EZ$dym_MK5W`$@Gvdw33m8BG)ITo=U=jroM!Bz5vR}`NK8~4O0BfGwdiAf39 zX}~s7*43QOnv=eTknD+M1<1a|qZaPJ2_EzB-#v9F&yB5UvMkoB9^>9}73ez9Mbot7 zj%dLdSy4N688I=vAC_eFe9@6W!Wu{mr7!t;E47zR3m{D~e5$s*wS1}kPTD^ zI7J$8BL4z2g*wnNikXc&o}eCYajBdjI7(E%Se^tnhlV{@Ex}4Xgdj3p_yZ)ho=6$|oaCIWWN71_Q{|0n z<~1*Zz82THkA}XsChm?Bq4`&+9iTbXvIk=E816CC5^|=bJY4KpV}2vuIYrktn3sQS6DGst5P8`QLoxTb~sa4M)N=@VmX zVeHe^gex=SaCvOvR*=Ks#)HXM-(@pXA$Scm!!7eDMvezZ9&%!bmgK%*9^yCi;+fAaXJJM&tv@ z6YK5?glg>#P+CQRNScK8@o8 zd#?AI+95HuCUAj#xFm$&$YaCuK}~=U#0a@xu2D3GqJNkk;_P61Hgn{(nLEs{ELlg1 zv3EybvNWx;el=TTzgzt;pJ|)Smds84ny+!wdRq2sXJUeW`<>IP6jY0OP&tFGe? zYTRx?6d!R!+8-Zk8 zKB=!Gx5RGoWfYTXo6~G%~pAPF#k2ocj3`4yhC$D@CGrO_k2T~DgF9-M!F!x!aua4is5X5@V!Lm z00sM39^26Vd*>Oq9YPbj4*$Yup3f3JO~xx~*uR)_XVZ5GFR=LYHkZYWd`1#}1ka@C z)UyXz`$Ev{`_;Dag%P_0dCga!paaaB^XXUPw+G59E*5O!qwY7hFGBDu@{4*;XU{jt zYV_8%{yBc|6F&yU)yMRfZY}1DM^cwS%w9(yLfklN;LJTo0e1|UL@^Ts2h=%viNOZw z@3mX(LfF5$**ST?*`J3;OL(fQ88Eh2{e z60Lc@&v-DSs3H|(JzmpQ4}E*ni~yc&X&l#rN&85lRsZzPL0O0+?6V9kuTI=@@SRoU zC!=ZAO7U5xE|>B&gcDP7MUu4~NU65M*WxS@YG2ww8q6N#%^dHO3ZG{@!3$lHE8g)w z%7s<+&indKIA137aE|P+M>a1zWj$01vb3iLTHSh^>{v6nXyN*7=6Rcil$4q&-s%eI{GP6O@?7W zSOg$R4yg$I<Xh%UI8~fX8r9jWkr+ ztF}!+NFX=5z3)S)LUuTrr#MXx9mBXd+i7kG(Y&01?CNWY_Hl%r?H>Ks1Y0O)6w#D% zIrX0Pi3C~1WP5U;MYE}k#L60C>2E)tKl3Qpm={iHQ7AL?C=VZ2=JNwGsj#eV#FvGT=)^?ObWnbV;P+CmdE62zan^{y4YAZE*aqt znNN@O<@Pxi_a8Z>kjXHj%qB7#aexb)IM>yrFEZ7&w%@DQ`#hCUkGlqSHQG~!nD>V3zo-@p0H_&WDOt2fox z%-0am?8VxG|C*!MeIakOk?!K}Uo7Q>kp1-b9^c$RuCi%A@8F%v`c3MJY1QU8HNM$U zYWMGIGksb79PIS5ptXa^fzoLa}!J# zbNlms8d_7d9}~|Q8<)cB4j3>`#XHJ*lhG2xWx_h?i-_(-(0cZUfgP_q=8Q*ijdtQs`P+ks(iio`aEA*4{b9hoez$z#{7Iy6(dRDORi+6e4aCvhr6 z9nMraxkYaCZkklz{G2E^w9#y51y|xUPP?{j1}aftUvy^u)}K{Dlz`hbj#9QUlGPAm z(;E74(1t$-c~x*6CBQO1RMvyF71m&y&*C_Cj%HtHS5ME(tFB#^c~vMEnCMRz;tcGw zUIx?sb-do8o=VctQ7!V9Ck+DoaYx=Mw7Mh%kk?K|A|shDAj^!tj}11_qB z(k!c~3N_pbzxpS1<8amF0Y_#|7GJHhqw#W@?(~S#@6lQ9L%Ao{CTwG?xU3GvK54|z zxl=*Qe%_aUzb)!9lHjz4CKbTHGOjXRIgU?@|7k>uR~h<}6GOe>&|G#r8_5jsW-o1D3L|zp${B)XRx%kkxaCna1xj#iHSx4ZWi!ABB2Jv?&rN)s! zk8V1RP%@pG8BIj7L)TsUHG!I4*THZwy=zb1GOmaz6;~ZIae=LJ*C@dQIN{IHHi`2r z>dInR(H1ii<#AjQ16JqzhJ*ztg*eHeQIzDE#zt~0@IcV%up{^gKEY2LNRf| z8+7I2x1i!EOke$q^gMaoLca;8Gm)e*6rD7ym?(iHCaHW_io+ucGqJ;PYFewi`8#x$tFa}&mmtVN$Z-$BM6d5I&dGmI(GsN z5=vp;EL!sTq=QBRR46QmcF7Tiztp-u7!C_5ot;_cLNRYkIkd|{_3=m}-kbP3uCr&* zHZ}w??RB!3*^xCRQNl5MeL8r<3hXePXN)5Xs3Quou^eZywbo$-BMlAS3u`Kj=8w;DrRTj9?ox;>j&_ukvX==|3(5z)g+c7NSdy@Tm$Hn(W5lRYHRnc zod>D$?eH?jFH5VpJa0R$#Y$<4^?X)5%~NMN{w4F#++!^!NmsCOt%xOWu@%p(&y*KG zHk)7PYs(=Ml8Rz#1U|#Z2qFHGu}@a1BtDResd?0@;xHpD0uK(SR(wf;{w!VO2Z8f@ zm+&izyc=h2#NvRdVfI-6Ja6tp#X>flou{(E)E4cy(9QOS@LCtEXLk`qumV69AYFh; z%A*W!ktiT3(~hP@ZfII@(uHe!Odm?us3u6arF3$1xo%54bUo*6P^Y@kySL@|d}^23 z)&&`jPAPwiAiWP?`~Wb4ia1CX}6Z~Yg7uqYFlXWXZ;(WC0}NG=(fqfIbV0ozvH}0z5w>rZZI=9 zrEb5i8&(@NFjGJI15_jI6abRYl7DYX%SV1+Q^qp3N%=>=n3&pcLG1q4MhSMr9`xRA+|SvVj~f13Y?Qc>~Iq3Feh5S1DXx?KgX(fJF^@2HR%uXxo|vj&UDq@%a+MiU%<)lAz~ z)`lMQWpN;a`#P?svtH5DWZ(4J7x)IEAHwI|w&QB>p2|1ef!6$ZFFFQB;U`~oN1RM$ z!@ksO5%rMkBPG7-an1jx&o#=*O?w`u70V}cM?rn@$tXk7bD+Dc4;TH`h?nrFp?MyY zKhgNlv1GGmDO{D8<6srFqRf5$E;|H0wt=G9E5CSFN((0tbC1alv+F0sIAaAtq*`71 zD3p(9&hk#NxEtcXu;s2WRk%g4?cQ5iNXU@OOZR)EQloSmei4MlTJO%~F7sHq@kKnu z0259;V|TVi%%)^Igg=B3dShF2ju zX_O;nD1XqP0z5{s46xNAX;`U8xZ360@rxnsxI*Voc%pWke6Dz$cAS7p#r@Eo0?d=> z+AU1paI@$pi$@vcQe&l5?LGD{q;5#OV2eG?U{4QalXPO{yTmdirgfmI18WMMKyrO? zigD8=+J6gY#$zvB9w09DnnkZ`>=`Y`ZF_kP||JLx7UwW7-;d z3L`kk{cfb*jeX71;X}nzFRsI3=b?PxxN%moi;h05x5*JU9_0FrSyE|8{$HA_0 z1&TdM>fDqsQ3OBM&pG%3vp5-TWkDDlY-ePZCvuf+m}Erabs!*>syKw&ueS< z4fyn^>VTR}57?ZvboD zD$msV_>X+^uFZ}>H9}#=1a_n#v8ZA#FG0+~!{mC%!RC|NLF$r`k7OTl0x*NPWC2SW zBN2m;^xkFBKzf0=-X!@Jy|w^UM6ovh?9q@d!$WXSY%wU5pklc}@UZYvsKdK+5BFvf zS5MH67f6Sg6r`Y=P9!;>@7cKi;C*GMynfw?seIN_S%4dW*dOy7C_59ygzY`}Ffe5<89Ynul*T|U|2 zY)wwxJY~FbE=Bv@(8%KC2+i0TBC*()BFRU`#4txakHqvbO;R(W&y_=GZLN-;JvDUJ zan;dtR&Bj*b^pFACyk%|R}>4&Gu=A}0(n1!tknEyd?F``a>gSUmE5Kar`Me~h<;YB zKW|WbBODF%_WaU%YjaFrH>&VW`f0k+`?rM#t;fo_wC%0_OwxN=~{?!Fy0 z^flv=Je(|_O0Ew^dpNt>PdXTz$4xO7o72uJtR;A1s7By26^fLgFtg;cp z1|zhlqf-Yxz~+v_Y9>v6lg&$H~^*FU7d)^6_R4i%vkR=(s#8=LwEO6=S)je-n z6vgsZ&ohekHBx!z8O8Ft0etDjm%cYbS>(66fSiU8 zK`Yoo`3Q);p*`?wg2d6eN;Qo%c3;7t5{*B!W_)np`Qg3Vy&o-X_w3eYJbRGq>R$BO zKedKCSkpTma_6NW_rZU?uJO@hI(xfWeFi?_XgrQBay zTP*ii)^v%fC?6Ema?B5IA01wC!Nl0uiu0EQJ14gm>iY0$OM26W6><`|A8aEB2q#Kt za|1x63^x7Rx@us#^#)q(UJLG5?VyKJHS5OK>kcE=E|lw9lq-m&!4BX#FYE&MZ;9Sz zU$QRiY03f#1uj6c6SaCpu523qIs@*{4XmxDyo2_1SdR4MDjiB^WwM52t{ecjf%hZc znRZQ&jP@9{tl=MA+L6NAyPLdJ?stf84gjwduVqVArK$OOuhkloY3op>yH+o*-w19i z)@0F_wRU9_S~!=}!q$$Im@QUyy_eyps{KgUo53yM!(?yU!wYb;)p*p3(NYauH6-`T z58GcamWNt@x-tn}C!Lf9VD__y-20H+w~-Y>!*bUa$&J0cHKP;Ex7&{qJBK7N0J@}9 zPg3LkPCox5=HGqph^MD7vlQG`DTqFQ!cr?IJ8f3_i~YMPy0?&R#*mDs;j#t@)*S0S zW*n#5_AAU4_NiDXl!?XMVa`I9dj_Yj*Z?=|7duM%YHl3HYq_36r)G6{VmC}Sm!7{2 zD2|Q8;YKb$6hrkoAGP&;s9rQGiPz9Qkkrn9^G7Z~+Fl$6p9CX~RO=Sw>3Tkr={nq# zG$Qv`{kiWwdV?&DmxFOl3aa6_v)otBhC)kgrFy!Uj4VGV8jR?nj#vP`>PxC(#^;a4 zT8B!BWUp5#1abqFNTMhNim^i9ws2evtI05riigCxNS==%c^D$HXxs+LLspM*;eI0# zVM89u+6Whxf2>PS7wYNJj^6&U_pO0X=pD3;?~smbwtkX3p!DX`!}`SF@X0H@NITDi z4EQv8BJL}=esgckps%yKXSa9F@^Bbr3TH0a@laD8ymd?8&N9k%7Rt4*or}ksn0sUX zU8Z7WnhJ-=6ANdK&pbTf8$7hR|M;@e!|nqOa6P%b-4cfJBh&Yte6DqL+n^ORU>x1S zvbHFqyBg7*Zqn6Cq;XllO`mu2x%3FS(xdM_AGLuWwXd{8#Iw*sIL&*Cxi$68q8gP2 z6-2=yKQD(>UdDc>8psnrLexB>M$*o=rnyB>(;h2&e4c>B$}|8SLm(eyQc+Q0Jbnjb zb9D(_l5m}95LjFIY7hh1c^8ypUZ)d z!(5?Y;+M_gQSks!@QL;rIJEH0kMWt=S>(e=0Fn4Iq`|h?v){c0@2}KF{3r1xglspF z7m%OBhLIT)d381pEEw5gBG1f5fP?rPLXJ0)R}hVlcnTpqP2|@Gf^+RMk>4WDQB1RY z9*F}xrrBd6ZzIHwkrUbov8MG1C=tIw$cZM+8?8r(?_p%GNfT{-9yp0t5VFriVC(b5 zZ!ofdz7`ttWnY1i119oF>j`2KBL~e~654HJ2;7AAb60B}LIk8x3%JqHkBK-CQo+cK ziFnccy8=dbm2p&t|RAeu37jiDbCQ49p<+GQe9#CbWU**%9KnkuH*V$G1v}1Z|KKF0<#wr|A&#iCbE3?!=MiS-O!JTLxE36QhYkIh$S#Dez{vjjTKtxH1Z*($VbOOl)f2zVV=OgSMxmKBC_*$>l(Id@bk>vk(i)BALx>nCRja z+s~a|iuDOhsEQ=H0!eZ=c};uv8IKBCIE*v51Jk0oAn;4ENMB0g#Zr)=Dd5u_)?(9g zzAYCV5BZa5yF~DYR$A2=3Wd~0B)%;gmaE}eN=neL#5?p{*M{*y8OhqC4_=ie%ITC-iHa3_xfo=+lz}6LEnN zhRE~mP>2L8_b`PO4OQx5B4vfASX)@v3+eUaUACQ8RAJQ8xSpq@dfM?-jU=G4f=RQ^ z$HeCH3&jMvx+zR$`wFXznjT-b%#sL2y4;*J0>9TW+MzW4UT^D1{e89V4K3^|=lDb< zw1Uaa)bh+ z?)4=p$TM!m>98_1;1ttsC zm|pLSrbiG1O-;r~%E`;LLv-~GI9&{F%q|NQ=#7t$_RIRoZ&-Dj>5y?S2ZBC{+-9F-#DNCx|pthA(n^Qy@t${(wz;QQel z#316iFftV_SpP=v(aT4cgc_a6oH_Klimlcp&v7tDPXYi$$HQG#OTlua47iW70ut%oK8QLO<+QfD*d>a`xc$v{G1a$18`CK3_nf@V zS3<{T9l&$&4g8k--qE#=?fZ+xoigMMkreAsa7Q|RVsx=!X0La7DP~c>Z_5Gap2OHj zcZ_FYp||c=h0(%vu{fAtnT{6xaWzs5#KECPU(fd5Mx(x?5w5N4$|tI8bGf9!Hw{>D z7}d{7BMc@fWxCN?uh_u_MkSlbRg}+c7|+;}JwCgFpLQ(jBX70iKk~v6W1?n8&l-S>o^ua% za`{kP6cY{YopH)e^;jRH8p+UTz^CiYWeL9!gnUC*A99vfKGb?pEva@zu|FQt+Rru* z-)_-6!NsV?K2+j@8sbKr514fkYP>TX9=R59D>UG}yrQN!ie_lzy235Ct+TNMv`=$NluT)1r;g3O28kw96!gY}hmTJ*RrHY0{nk_!aljr>wK z^f*urT8_}x)e>LYsV`!5+0ug%zimYZ``DPF3cJIPvD)Zd5?Mp>8h(e4`Tjy zyJ#aZlssk=)GzWOV6%jgb!G3gSX3b!6Ra*v72SwQh6#zBjPArT0Er=RNC|k7{B;(j z($8>yXFyht4|E4a`^$b&mXIWhWOdQ8gi*iU;2!W0lE&yOi{ek2!LUsI&OdFxMLKQJ zVY7KX9=+H>(>4$;1t?PT@^*_uR@PU*y?y62I0wr!Q$1**Vtld~kZHeSw+k*!?>ta$ zmkGC^GJ8>(SrV5yAM(m5vlOx{Dq5o3W$TC-{d^Nr$P%&GY;M0t&&xbYQ6M=SFt&5H zkRX^3(9q9uG$esjQl?801BZd(B)Hc``V)^>gDZL-li-WM}_Kk4GCVge3}z zNwH3smdxy{0Bg3dPpt097+P8mZUxVxUO0vlx|KfGVES9ZuHG}&6$q-Ss2mV9ND2(1y)b^BTJ$sH^+K;UQ(@qgq}fly~HXalgNvxP65Dzhv8esC?}7F zHLH?bR2MV4m2rG*aH{|*xs7Ox5x144X@Pdxjea3!B~hVmb|{7whez@RY)+@b^XVWH zmcxyZtb$$-$8t_TLwRgxoRpOqf$4}xisci_iN2;@PlQ-i6tbc4XiDgkBXOV60&BoW z!Cj~Y3X3CJnZeC#M}@PZ=N57&(ee52VtOhqr)+dID0DZ}j*_S%O1F#ADt@^)uB5F_ zSrNPY)kt5$2REOXX8hg)P4hXQw@?-(uhZ}0L|~Cwe_0FZWr`9KJXfkKc9up4D%rN` z$$JPp!Q=ZBt(!ep{`(ewgI^)=4#ng78j_0?@i!Jzt^E`hSFBIa&r@VA&8GXPH zDmrR5U9ZH^G}f`P-ri9H@fs%fffm#eugRnQz2yaQ`eZ}jM>hM!K306m%@5ie@o47n zrl?~aZe}t~2hAaz#GtUT8SEJD-@$EBlP5={yfq_D? zzrWbuDG5HtEh({trX^wux*~jnBvc~dD*ExUZV{b{$I%(l%^GK_sGZ8QAAp7@Fi+Ho z0fLZ?erh_+Wxic0Bx4EH!h8T!5CLh1sz*H&J@`;_l7ev^SglWqOQtASNKlb28m$B? zmHctTUY#Evu~<;Y3VH%;naxyvDZf(${F z+OMsp`7r+?Zuz;V8t#7R;f*AT(j+soo<7MrLrGkDOJl`aE+8u;AdPS&osFq^?AU&c7( zkvQ?~LXB@TV0_wf$aBc?!PVoo-`J+d?-{av#$iYGzpmDAic*p*2D$_%Lbu|#{Mnmf1!K(Ao`n$=vCYE5W8U%|N2dLI-4bkmVTBCQ9tdj#GS|a6%0>gNdw#4oX~r2j7R$b<9o-$tS)Qgk*8cbG=5w!}3_vEY!69O9qxZzwY>=rBIk~fa4sOL@ZN|ao5_Bu;dD_ zu?4$Q3A^7a=voAF zy}0Ul#%BLXwO-p%tygPPVHDNIdBJq|^vrb6^iKgu>vGZ?QPui}zK9uLM?liJj0pF@ zs5ou<0rlG4Tg$@!tkulxuKjH!z<}iTGjwElwLbC(`t#d%L`L>6lTq*fjN>!tdoBGt zdJSc_Y<6rxsV&aURz`8b;j$p6Z|-&!FLGkZ=IutR)n-;RJ}zGqqGjb z11`q%`?24eK>llRcWYgn!g4*LNP-^{gn`4~V|)_jteZJ+!a28_IgdAU8We*IdCybK zfX6V!_yQh>FvX7d;8A=}9y?5m<}nmAizzUV+I#ZYV^WMCL$Tv1im_uTb{<7Bvw-3t zrr16E>JbV8ARB)R_ya5%<7~BxRw-3VVoB7*cfa(d?k|3E%QKblf4}k!VbFmb_ygF9 z@8{7<6#Stz0zLzB*yk}$oCAIh{RWSOvAkBV8D4N1eC7TJ^as%Y{pkCg2OdbG|NHMp z-vmLTa>r4*%diFFNBI`|nid?(Mp-^JnN$~izG9R;9t#Ac(O@73uF%>?+M$ZkdwvPf z2m!bZT0!j~N~4m#jU@jDOoA7Pn+YrW-ic&hN6ernV+qg2t|VlNqSt}F!Pe7YNf4B} zo+&>0WN|SS5Gg&8sDT$+HwD3x*3&^SW0DcjuzJC3P$5WToGFTAPPBP~*9=ixTfrHj z)?wtSt^BU*i^aR{E*Nu?C1QK^9R7YcXZRs5on zrj6yIqdHpv~HC^5-voss5!eReHZr`ShnNUohr^5#WG(TE{1xX-T=9aX{=8Fjao*&S_-_i#LGPy=9K9SCr!1uBZ zEk2pZ6@2hL7vp(_GP&nauf8L3?nhvpmy3a^4-y@#clwa=8s}Y*@YI zvJ*zU8PwGD3hzxj(z8r4f`k}`}Qn#<+rXJ zzHo5gc_m~W`4~YGhnL64K0p9sBeLJlAXy`ZEC3pbE)SlEXS7}@oV)zW-9IJSzkCqf zSZLi&I*|4lq{0lElSdiUr5Y&lbRtSJF0iHNeXdp!Tzo&frGGq{qzYRnQolEZs|n_a`4~-L#flQ7}@$5lDuJB|f zDryxnkf^tAH?J4tor4hfmG`0KiP^=i4D{eabvKe0cDprV&B0 zdC}lu^f3<&bP;0o&;Z`A{&ggI!RVoaXsU-Ld3-_7?KMLl^A7z~ZTFBWhANo|H<=yb z_zuy#0g`g2xiVL&k6*OGQHaJH$fjQP17!9zK78BCM0Dho%PwoZR;;?iY+{&8io-X2 z;Ixtc-eq^+y}X=>c_N`ak|>LILUDXSxWu)le7nxt$Ur!+^-OqUDSuba4NrdFG|XkzlhncBNwvQS{T^(mJlQ>=7Z zT-L+Zm$TKrQe(Wl<=nBcbGMX@Uz_DAtKHDhX|vyi9Q-Un5-15slIKZ{DCaS34MFKM|r5U&Y9ENWMEv`P%mAB`DV? z;Y$dS%v_&=3GgBKCPD(l7cg=)%pg8*AtYo*b#B2^!HMuygeb%}=3=`NFB1epG~#KD zBxXG*&JTl-IB_?Q;PMnIV>A4-ab5Csa=~m`N!l!jdP6R|?B;xSJ`NM^_*k4(7!U6g z(rb*o&%z%PHcE7Q};*@)&z)HWRamSKC4rbF~t3uMCCNCYDc7mP7V&pEEnnMv^Sdy%Y{=JqvWr`XTdPJjZhHRzs9sTxhW83xqzhVd_ZjE0x{Nz z4W|q6r3(et6ODJ-hx!G^IKUit5&sEqCrHGx7NvU`K)K+qzCNS07vLX&Ko;iCX-<%F z!awx%wDmMVybE8#I*zr&ahTitP3OD)WRxvrb4?-Y%#6T+&LPdCch^&{_z14WYw$V5 zcQdPK~R20-0 z{EZ^25zNZ`MV$Tu6U6u7n*>AnjvZq>;uqbLs>dp7vZ0lIeqHs4<35-uq~k?3-;pS( ziA+$`vVI|sWFzA6o5ZW+#mItE7IR$0@O|-0B=1WW2Q`00Qq_bXelwGdW|dAoUyF9A zLL?cG!brZiVFo1OTkV>X3mmAm1;?zhu!I#D@2RJmNBk+U|4N1DSXYSK=bb+?9kC+IodW;opx|LxR%SN{^G8NMdl9BlAAQ5PPD$g< zPt)n`*9!j@nSpPdaR&eRF2)>(3%kGa50vs#b1ysP+sMX)?l0^1xH zd3c9K=G+M*-f0;q+K%ZEAc_8wmBBfAQc-mh`bq zBv?Cmu&!jKj#aT_RkGP+pU73WzB@Eot)5!crqU;_hmCMuR?3M~On>)7^qFf?-dW- z@yfSCVmYw2o4ilDpSu1bH<%P7y+D>kiZc|Kq;}}d-`%oPWzKe8<#XGr%H^1z_^dza z>l>Y%o}1a6ya32f^Oxnwpo$oU9QM!<-`+<`~D|GvdD)vsV>U z&Zz3ORN0jBF^tIk)%EuX^4b<}pPIk6?NSo*^7g>fUh$2qIFd8P8WfusI(bzz3zCC= z)8eJCA84zS3f=YmUX8r-lqY-SD0@wBDz`bMGi9*Juj)@dP*VoH_2a9BrnNPOS>w~s5)1@BA$9gFMb-ks`IY(aG#M*O&K|)w1*|$zt5dItvejk z*r2|w_iD86aGmA8fjKdjCCkP*P5A$~uhK${d^`B2FZKRT6@9JP)wx6zJY~)md7|Iy zI9^j>LoTlkw-zTODi_jJzrc)lkaAU52vea@F0Xo{d1LAbS@r%JJNYHL;s$tmHTJpw zDb%fsNtI(n&!}qhnx6RwaY$fR0C)jxg98*8*a5(jU)#2A+qP}nwr$(C-EOsQu4mg< zK5GF1-v9RTo8;&J5V8Of$VetKlZC8gBRe_BNiK4ehrHw?KLsdAAqrE3q7s7?)PQj6Nup)U2PPXij#h{iObDa~k33tG~OU0mT3yJ>GQ0v(LVTsrcW z_eL@@*XYD$qj1%zMl(8p8N-;|;yO3DX)OLRwsDMWJmZ^yPfTbcI-A%e+~YQP*h3eS znv8kuHMuEFX(~Q5wP{RiI@9xz`#hkl8O&%VGxIGc%)%FDcQVg}UWf;yd zMlgzzmbDz~*k^ewSkX#+Ze^=jm1$P9x-}TXXvQ+mn%1(mb@-0s*5ym<@eMy%-v&0c zk&SI)Q=8e`7PhpNt!-ml+YyZfBqR}uNkUSRk(?Byw7nhdXeT?{#jbXqnx-*DJ98!^*9Ykb@x#&jDvUhjUD!JTZt#Y0A=?w$62)^IhOV7rEFaE_Ip9 zUExYs5uY}c;VWV>p0iA5Dl=TobY{AS46Y@z>s;>!H@eBqZgH#I-0lu{y35_}aj*N_ z?*R{b$ip7-sK-3+2~T>;)1L7^{@1gf^Sl?l=p`?E#j9TPx;MP(EpL0ryWaD@4}9n& zAN$0oKJ&RReCaFy=W9RlQ$J%BtNq+B{L-)d+Hd^U@BH2${L!EM*FPM6!`O@i+)vpUj zt<6-`mW67Y;Cnvv{otA7li&wL{qhz#pPdCi4zf<>K71Me#L62#RmNsJKMm`LKY2%f zN5#qS>p_*bPSHB$6BAme*-CrQ^!hpNJ)%rIrc95xl5n=ekiSEoV2k&B^& z*B=z(pyiewI(Xt8JPw_A(2X3dhF+Zp74_G{=*Qlw^NqsUtPYx?j|;zf6}H~T7CyEk zA6swF3w?a)hkrl)C+e=WyYlWb-F4Sp_uW-=SF_RW{S)Dy;-2GfaKFR-9`^$GX7Zvd zcUTvy&O^{54Z6+(&7-W|GXL)v zV5p5GlxMgM`Y~3ZFSukXIFtq zYO=P{NoS!PoOyS=4zku1wXs=I=oHmH>?75x0g?(`x@MGwNS`#xpO?92A8n-vX}O{Y zxvR{JvyCbuh3R&ds?v5SfpyB(vKz!D zY!SP%R4ZCI%M6-L?%gIYd%l`A!mK2mHS)89a#k|V8evut&I;Pk8uhbA<5{CuvqrCH zjs7=lG?+E=vw~85VqGcXK}0+V#e+gT7{r5#co2#QrFc+?2V0BBav&b-fp`W+;t}!U z!6_b;;%!@2A|6Di?0AA-m&3Gkid)muNxf9DMo8Xelbb5p?A|3vz1fBE za`J7wR`PmFUZ>~Vc#nSJ8$rNydUee8^u&Kld7Lda<$JqSjZUazG56?y@UN~sUK6j+ zJzjd`{$e`ahAnX!;Y*Rh**5$c2j>T|sp7Uw3;i_SS!_3^NM5BM?eGuBIC`>;KV;+J z>3;u*W4v*;ml$2?+SKFt<(B-38ON?Z8vdmj?_F=l>a`T{5_szIY)6$#UDe7ahpK4) z163gdvj71A000O8000C44gdmaWMyx1Z*6V>1VlzmQ~(-dd2(z38fS84YXBN-VRUW) z8UO|W000000RRF32mlNK0smV70RR910C)in#<3XzU=V}hFVX&;1;7eg7Es%P8B|(8 z2^xSAsMR_)u!lVFT@nNo0LGYVzK!V6P4+_cLkt)uMdn2>j-A`lI8QY%L&bG$3 zZQHhO+qUs++xEP%b0hDmwRgKueE*+++>BEO0YqUA-+)O;tJ4H=eL4>5hag-4@I2Kp z#NbKfg8RExsX-L`eWNBpRH;`dC5W^pjcNzcB$On=5sRlnR|XM?L#EJ`gGfAv%%Lk6 zQFt6#LRSGq;|XL%w%%O_^}`~$N^X+7L z$Xqg?EHb#~sIDv}%gIWznoN{602l-i_Fq&N0Ab+#pFQFJ8^-_`0bmG#0RZ{{=m8)S znUD(wPy!VYk6LJgHlcf3LDf75RVNCn?lTA@z(6q=0B+!!s43ZJl#N3K0FzuKIUWSS zAIT&OimS8znVIosliw)R}ZPo%gJ%ykV_nA~bnq z?Qf2OJm6`w*Vo5lQb#q_hwP(Ia*Cs^&iPAI_F*G-;u_D42cC2i-G!GB7jT? zvnvOJD1;Iy2YMd@Ae;H(W%X2lLXML2d=suF-1>`?hMcuHpu6v#C9x_m1}i$Q&}aOp--qd0#A6-%+;HWUg%QT>x1}^TKk8>?6x~KZ01M zzOV9cs5i2Kq+I1avKCk7o+gg^59A4XNM4f{e7$$Q0Em@dto42GhIN+aKWYA*l9PNn zUi}SaUR0mrXP8gPL7EJg)0BTg{nP5x)PF7mo@?Euc`e!4djQ5aiEs56?_nN9+f@L? zPzIF{j~d88Jv6b}#|D5V&X+rVaY+3P&$Dh*zfkkvlC*02BUh?&woo5;6tgj( zejA&xmFZ%7nE_^)nP6s_E#{bc$$Vh0np;kclg}yRRB}2vgPbYODrb*#%K6Co#SOZ} z+%j&Wo8mTe7r3k3J?9)@Bu4s1?^4RQt z*7M%8=Vf9Wn>9-KyN=GakBq_4+}>p$Q^0n=VTN5Z?OKOCIEGB1O@A4BEah!|+q=bj z{+WMzoHdZydli3RP_7LS2w*4-lOfO^--eC~mm2qFaEHU)hoGju8Ny$Du@@WcYFZp{ zA;+Fa0Y#KhMg>*WP)7qz{#$B_M^EB~PYvIx6V^Yo4AxDy$U=zCfV2B>hfON^XBnwau=jUU;EvBy{=gGNH_6oy!i3 zo*WUGUxoWGyIP*t;O@(=mG|qZ$?meB%G`$nf2BZ3t0cCtMqs5>3#OVi2c*VJ?@DSb zYLQ?NxWn?s-fXF}D~RV>>`AH04(s@(j9(FkII&9o{;5zd7;ryZu0zc}S5N5fu&*cW z#7YP!{fEtJlsSleWcE8;RhLP9pWG;=?1UR*;pU?#pGU~5Is_+JykIHBmw$v<6s~g0 zbCazc8@n>Lld)H2>|KueBz*c5ZW*(b@t!V}|5=h?#qp*jZO1v9XFe8cu9f`q7e8F! zvX|WWlD}k+&t8^ga1twc)RNzg0;Qx{%3~>2jCV`Pv0TFOt(N2^Zb;fgDR~8lA+bn( z))H_WH5jGPk-Q@@L#@r%$-Bo6NC%_Cv7mb{&`a!>6Pr9y<4)4C3n%XbY3T}75b#S> z@YG}(jZivn5R?W&)L04Xaz?hnH}%Aqfn||emk=F=V;%YBIXjO#B^9V`oH$@jpX?{k zG4@yC3xjCdtitHo|;hzG&xK8ji;!0 zti3a=<18pcCWivs%DsS(e7dQA5;&&GS@?skuswuUIq_+=iv;Y<*`pKc%LNMg1s-on zx!T7No79mHO-`mSH!$q6WD*-lkG?$17$ZE~l+4N&j&sB~h^@ScA=G=LAN56}r(6)e zp2ctQ9MsDFa7@}NYj-7erOy1Yib!mL(GMJ@C z8B&2hM)5qQE=^%KyM%+$%YCv0=Z$r&Vojb!42gB-YZzk$cd;}Ue>2`=EU}#Ofh3@6 z(+-osxZi$}n18lN} zB}%|k0xS3wZo@J)?5k3KA3iNlC%MO}^m3%NHMDq9GG1EG;FJCH*)l^lv3%V{spDzC z(vvMY6`yQTC3i|M$uV#E(nC3c>7Zm=ja8l~{Djw~%q7Qo?j4zT80H6=y-)Kju8VmV z`^>1rXHrTM$+KO(O__#1Fat{-oon~><#})hjne36s&(Ej>&)llp~C%Bd@xQq+({`* z(wUU_qrru?E|x@mx{tKMlinzxw7wwkLf)f>(_LMtvmL$l)M8!^vE!JeZApce*$OA` z%w?ugAgpqOoEh@ICFGgcynw(e#+}K%Q6H7fKE`f08iM&q$j5eH9$sS~1qKrTme9u? zv!;!1!C?!_()0URVa-vj;cF6Cx#MS8#V{DDUc}c^Ym-{7YEQ|}J$S22uG4(hPKSY} zI~9{)C3S;^*p*7gI7 zEV+p^UDHZ`VMs0%tSR8I%9AIlVOyhTZomGu1?3re8b3)>C21_F3|5uqfyE>yt2H?D z&8=qIlFYOk+qS|vx24dYHak1{WIQYJD|qavC2Qnzot{9Kv}Vb8McB>2a@5!(PI(tx zPTHe@T}gKv2g7_~&q~}4>aEUDFyhX{3W%+>Q)>FC@hjDgQDDzX_?eUqjYAPnyAwJj zxAn+ddfWNQYg?NVgP<$q4%GO9Qh2uyBjXXjQeqaiZb$J6vCr0 zxELF`y2!~tw|z3g)j=J@ha2s^oR(ZHtCqbkrp%>u zq-BI2^M_^6%Wh$O1$!T2I{@F-o-s z=Zj8~dk0Qq&#nr&sCoD7Z}as|Z9YqzM>QSQbmbmX>*`5xGe3u43`mciQqy)2b=ye- ze%jKi7n!&4^T6q-qlV8M9rvS_#5LOHm03z^Xm9ZwF!eI^hNIOR34M?wHtznLK=rkw zKJBvBTh)AW7vxxbC%oBl+`Wj_pxjS2F&tC97^vr6XqnPSg}W1WFPGSXS4^oh!;z%^ zhi&1!z@d^<#{Mhn6dzTWwj`}LUjZ?Y^4N6c zG(KXU*dg%?rfkp3p!`%#JtY>F$c~PS{ zmtWser+4g@aQO{SJ9P{Hn6Hb|^@!|E^f-p#-y;xPLO){I+`zN+eV*||ldy&jd9Fz+ zB=)f)ahbR7eY{HEKZ3Euk(8F@xh`*m?78yhX{XLMbhH1PfV%C(g0bnl-5fJI>fr{< zPV1TLI##^R9S?J^p7Rzu@w&H?S)_{@FoL(UOM3mlr(5m*G34{&vR?=;@?7A~_a8I7 zwJ%Y&TOIVVZJq%}3D`fLAFV?{OEcsccP8xKmQhR^w^3jn!zs_yVaxve(Z6X&HdDLp zQeUbj)L)IGWH~VuNRA-nwFgC7;Gb4D0a9 zzsL)MCw7%ZdSB)Z%&pTa7}A$8EMprbDH&SN=@Wu^8*y#OHIz+`U3e`U-(DegowNU! z5nMr{jTbKDy4RKSS$cS^g`C0B0A>U0#5KYYf5VnUhw*;C6Jjfr2UgDAE^1iA8AY<( zY1*2vBDR;txEANAYVuC{MjW(rDCV{xpHTl~XnxDo3Hkj^9X^f0EHu%Vz$cQ{9F9+> zh|V>*;5&m4bT$t$H#PV^`{(F4--FE(t7W}?a++F3Ke7LnJdOF_|LY#_y?K_CcS;v7 zIGG)V!wP+9Z(cvjDLVNzhyA}IkkZONCHB~3vL|35@zc$@MBeT=oflvyJm&ei{0AO) zwE^L)wtDcZ1#ssrSWEm71%#hruh@R>$A!WE(--bk2`yvOcqR2K`sR&`X{*@o&!xVz zo6nxc(A*H8*Ki(e5CqQ-f?pPBd-0b!>>Lf;+4(6_HTw>oz*{2c@+hzD&r5%)6=n9dBwved@2 z-X^dYdoz(^Z8E2G22=RGP2*qu+q-Y(7H0CW&E_eagHX_csHc`Z1)3RV1oCV<0d;;d zK#p;wIm5>AFB^+bdrm0mM8pWFCrX+kjkNy!SH=HA)CB3E98?jbs3An03y$g|`(_SP?}PQ(Orpl~P)5>QJY;G)c>~LMydZ z+w>Nq4gV`-C{e+8a|-wJmfqq)HL00r35fF{UxPAgB&HU%P*S%hQr2WG zV?e95ni<-lP0ZAbdWkuDMXxYVujw`B>kYlZ0==sbSct3#Ax%J*AfT0yiHrr5td@$^ zF=$1`SPQ3E4fk4xCoRF-R_}&Fw7R7*c{dfI$!$exbYn5nZY@sA%_XV2y);=j*hbPV zc2IJYos`{X7Zo=;iDtLDoCY_$f~ebFNyH7WA?}v95^~eq2)pg=bel0Iimz&EmA%ARU&Z(^7O2X~X_9_}TqQ;vS+m8Vw)6&O}gMTS&T ziB6SOrb87~Xi!yE8r7gis`B@aaq{=fxm!K7s8_wTs!x5isbBrh0~&B1)R6ZK%fEgy zM#`K=X_WJ5jc0-;Xd>e^MN??jG)?n3Lo+pXM4u6MpcH+cR=-RyjeZlznd={C>YuG_um4&C8=r|$CVV|sy! z@^1{2@98~{ALs+V@8vFZ-8Z%6;BqfO9AMtHPlK28ih0>Do z=*g47oW`h$);z~jGG!^5s;+=YHB!S@m3pXP8q)N%&6(6#BmX-tiLWJg*keJ@`4p3S zqL=t_-Gl0mTjI~&HXCM}3jnS(j-u~{dfV7@tsabwm~~DVj@tiC=dmNMSpg=v0adq| zP+lK!2+YNZtKAs?WX;QTxSTQ5Mx)rij^ndNN3|8Orxb1}g>y>brcyXi3a6C9Nu_W@ zDO^_y2TI{CrEp6r+)@hXl)_D=aG(@UDTR|t;f7MUt`rWG!d=STvNE@#%&jVOE6Uue z(l)KM%_wctO52RmHmkHPx?Q(RUYT2P`);4SlDFUv-6479Z$bH+R{my`ziH)fM){j{ z*Y29UQn=u5-7R@#alzfYd-6);f)crA^X_k)a=E5tEGZdFntdlU`!2cvyZ@6=N|xL& zmXZm5>3-pi4ICSyC5IZ1jBTs$^!=M9$&TiCX|fbaTW5GuZso}uB@>UNDd;<(G-6H3 zdgkK*CmS*RBfg`E^RXd!p+FLzlzEm7la5got$Cg#`c`VKperC!h!lMkq!hY0WvO^- zrY=Pw^E-Z2GxRde6fK%;Gr}f4%n(=WEV9Z9^Xvgjz(VZV4Rc`{obUp?ataKXL59=~ z)8<&+9oaJb^wA%+|C`QZ%fK8kOjO#sF>k;F6EWiIJjOp+lQJ4E$IPhFD7LTT__)zg zZS4XmQ{w9?*0n)>sWB{VS^o;48dm23004LaEX_k=1polV&{x~GZQHhOyQ?0i$LYzw zyPioR4(V~-$@k(Hmp2b(f8PCk8^p`JQs%(YI)oRwR$B+qg zR%|(N=El?iGeMdhMJm*3(V^F{N%K~1J9O^W^M5;0x?II7)oayf#FPbVb{x5I=Ox5B zJ;2Hlg;4-LquRFZHmL0ewYmG2$tbg^ZQHipXoK3e-JrHTC#rk%g74b@1vsOIw8)H{ z$d95ZjdG}hYN&%oXn|JffNt<2gs{h>N98_r2pvPG&^dHTk|*Mq*U(LL2Tjmj^gvRQ zVavzpIeLxWqmSqdpJ^HL2Ui6&1x-h@&|Cq>lcW@&rDzpei#DOH^l;FlbfLXyfa=tt zeRMNsD1+z-I*v}Ev*-fdO45~ObPe6~z1mTB&;;E@571-ujOC8KL~qc0^Z|WF-&l^% zR6eJ+KqZ6kxG@-5H)F(_M=1S zs7TBkQ76!8bPioaSI~8lm>p5K&;;E_PtZ&BPSoAiBl?2AqhDM#m8R+EcPuRv%|Y|g zBD55(06+#HiKqN=|5Jtv?H{Rx6hD(!1FWm-ANO=g{mJDd<@J8`Js?M2ziT-jIhbYT%q^jDno7& z^01J{guE)`$3p(bGm+$w4-5Ga1)dM`HZk+ZddT^2AEy+TVR)TOH*YIV@|db}?Pt|F zN$03hSesFrqIp7rPLXr9UR@MdE#hiiT+NHC#ilB~S`+uJH&x@+)p6gA@wjK=>NP(b z5z)`=`7QhuDe#^x_I&a;o;@NKgdXQT+q_qy$3-`&geR?o zIFqwDn{zmq^EjUixR8sunD(~z8)dSTWh`d}D_O;A*07d!T*+0e=Q1wm3X6KoqNXy9 z>C9jzvzW~s<}#1PEMYziSjZv~y-kx8@l5oAzd6G#_B`@e9(%>;J?6V9?sL&QRLZqn z$MxL6joie|+`_Hg#_im}o!rIU+{3-x$NfCOgFM8;Ji?^4&E_9_E z-RVJ3deNT&^rjDe>1R>x6flrM3}%R2@PjfL$}omAf{~13G-DXcI3_cN@l0SMlWfgV z%GLM!K|ksz{j6W~tA5k(`a`?5M|%xG)>12>87i_cW z4ce$p+N>?ws%_e?9oqRXqCfiQJNaj?AcFgpZ1@1D$izV=+NZ#*~XThE8;Jvm$bzMNSf7}n@R!&-f0 zSf`H->-C9YgFcnBco)>F;qPz#zq@l+&%nRw@N>hSCdjul_R%0s(Gp#yyY!UavYl_h zkxem`)N>F=a2%&_78lTn7PO-ay%@kS#xRK)%wq|wxQuJKi90O+BRs_myu~Mc#Si?( z4i|ITa=M0FmB>=2(vhLspxtEYPbIL7X>?+kHfj&qW-n(tof)o8+DnevE0|#!M`$x5 z*X)(dq$?w}1;{gd6|?BZC~d`&Z}w_t)1A@UMuY;h*D!}3jL~)i3e8^2TzWEAJBU(b z_B!U#i*eRTF^Ux-!TM&G9EtkDFiAfeChI4|6#ZFM#H^!euuQ#5N$DZ+G-flHp4*M4Wrs&7_$xzxRS;6XR@iQSi%6N$T5hs z3~feuE>?RGFRcMgq%`TXN+ovQq7Jj+5h9IP^GG6{cL@Gn4BLal8(_- z6$_=fRG02DUAD`0`L56vyHZ!~D*epA%7z+yO!0WR$2vLLjaYR>6;(>6mRhB72uCTE zV>m`RoWQBdr5)`ovr{CDE}>M(Hg~d8h2Ro7!BW;q!Vf3MRF+7*!fVP5=dY5yn#w#M z32*q*mFj3oOSR0OFQAMgIFh6M+y=WrkwB)Bz3q44y?<@*CgyESWlF-&Y%oUOd93mk zFIA1CI?I>n^A+hk8zq!crcz&pGGB#q4&iWB_$t(JidCW3SE1h5tk#BnX8cZ4eAYZ) pm;E_{qjaFJ&LP4w@=w1P!|z1w`|+RO=RRbIs$c*B00961007J1Auj*` literal 0 HcmV?d00001 diff --git a/src/librustdoc/html/static/SourceSerifPro-Regular.ttf.woff b/src/librustdoc/html/static/SourceSerifPro-Regular.ttf.woff new file mode 100644 index 0000000000000000000000000000000000000000..96b36a0ed2366b57ebaffa15c5546e5ec3bd0f65 GIT binary patch literal 88724 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�zB{Hl}NQ!3@RN26))!B%XaN?Z}$N|lrPG!%Cn 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%0AHnr$&HP)99eOG;&C)H59oX7tVW8CpZqiv(kJ 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 T#x!RM8#a#Gm zFNyi@L7yY%njQwRWsKW_8Mgz+3Xg(dBCZ6C1GKZRG__W#WJ*n!Tp~p>M(W9>^_QAX zUPC&C+Fj{hi`h)dM_19*B3iaN9MPh`CB|K1PVm)(DxIocamEVX#6a4WO55E;mNmqb@~EKk4oSmEmr+462z#OF2!L(#kt54iQlAee(f zNQehL23s^)4(G=`_Pj6D%zEvil*?uF`Aet*gTUu8TO#R-xUDZ+_gB;Mx5WRslFyT~ z^s;N_yDgoyUwApZi5)lLE3tzwvAcoGuS6Sj?y#j_;Ss;gqrth0w`NMa-mv9st8sIk(`M@U`StZXO?3uh3j-}2>OG1V z|A9M%`Du}t6}9A}FzQxX_JqxgX5E?e$(`eqUqD?65v$+uk~{P%JK-XtgfDuNSoDt~}Ie9J+FD?#jcB#^Eawci3zSHRcPs z&5f|Zc6d&|w79UWQoldH{WY_5uUgDz7hXL#_nPfF{*KbVtCzN4v%jxz|25l}uHFZt zD$_{=Tq<%Co%3tik~PcPo#G7}>@M^uKE@P`6?ToV!m|>ZY2~dB@iqr;;IE1;c=43z zaw2buZbL*5Cn{NKX&GB8oqvQBqj(^apWE!nOqQ)@xPlI^cG^yGc>W78r9TdTm1^C$6@+`33`zK8qhDz4Red!o7T?}J&HF?;${hT zMo5_;R_$864|)zOb~Rags%JY9rO&@=?z^*T_(D}nw;nz9dB-oN4QdoFiZ_SwuvkHqvalgVE5UfG1 z(r&#*$c?7cqgl5*i(hjBI^nNuDi-Ifet&hoh>vFmeQQLo<39!Z!veIupTpaK<7!hX zHqO$i4kl*_*o}|273I;3Hx3EO%YE_uhK?Ckya{cTZRHTL(q)5~3$_)UqqUNB{z(`v zQF81yrhbGR#0PRKrbI?-a#pX3eb9)h4hw{4)rH(K?NH{9%#b$9BQ?4_epBL@?P%)! zRBZ1VhmP=b{m-fb0oAkpJHtOz1_H`Q|KU3isRIG^zbOKbJryR(7&yrYuuR*rfWvy{kd)f!CQsHlgVe zA~WE*L!daN4Mu&nj4!+C%)zA_k2Pz1UOQgi95oe=7q(t^tbgit??1Hl4Lb_CsqM*J zO%)zb;{BQW#OT&cB3yQ$8*S!5B)q+G#2r*>ReU1jA3QKVan?+H{DRxIZGYoZ#%c`- z&f>o7_Z|Ac>!->)UpKeu{OM>W9?MyxwZ!oGnRMRku~Hg82sD12(0G9BCK!krkfWP) zj{=z?_98^=Cf)xB2=?vY55ef(NiXp?0TsgBV{1-OST{#$TDx{yx3;cZw|3Kv(;O_p zj{G2YA15v~gb_iqRFi*+?)|D}bH|9y9pgD<1ADcw?`>?+FkYsKw_6C~IY?1cZQ>QI zpgzgJdX@aEYUs*Vbod_UJ(JG;X9r4wd*R={vz-Ud!SA7`d(rjRTyxFRC*i-PYnJ{D z{#&B+xjA$nnp6yt8jdhWZ3wm>A?t6xV&M{_!(%de>;{7!zdDRl{z^&^QWd|yf-5#E z{6+Q2gvpectkc(tcL;sk8jWpzg7ivjHPDAqKrswXK#tAJYD=9u3~K5%D^mNER(fIt z*&T{3O0c28Kg>^Et3zK6g)Atmjz!e%_u<+mxbK*v1qQIr?&~Shse8KGpnHvh60V|q z7{ve)sR{das}085FC8f4(xTd^)oC1N!Nd#6vM*W;nJkgMSRZ;}wz4-jpM)R3U#jN~5wH%r2GIV$YXy<*;viDyA}O_@4=O zSGiCxh;@Uuo(<;$rb@wLa0C*{LOPL6&x#3zv)FN<^CIvM*HlchnhJdhXPoqGGoH>$ z0jZGUbgKm%b&Y_FDa5*?>Z-21;g_xP2R>JB@v|TM*wC?KWyJj_t0M*4jVbC}lGLV) zxc0w9S1;o&7NvCnc!D{}Hf`kD3jVbP6usmkyF}o9!7m8~!}XL~NHxQQ6Dp;{Y__X3 zZb!V3FIpmIyZOn7`FqvYa5)m`i`r{Ro7EYJt1E?UUa2rWGE2r=8QM6nn1KF=AcCOd z%`H!TTjgWCt!IuZ@6GMJTfINhuu!rjS2H2*RfPln^M)Q#Jhb@9G|*0zD^ZQ;=a zBj_&*<#N)yeG@uv-8&Q-8=itij# zfAHIidZvA^8ntFw%|7&J0_4@exj_b79A2YN4+o(kY_6+XiDRoWMB-3khtbG-E0De3 zq#jBI4#dU5<4q&^L*2CvxbKgM@$`UK$i{r}NX2c{W^-FdhqmNW(I_s8u8sxJ7c)Lj z(q}DrBMEfSA8=*`N5a**+g(dGMk-~o;&3)XzD&T}$OuKU*EIBJ8v0{`_TmxfFHuSI zTcwf(2YjQI&uOE*6s^)p%$?PBxb+&avJ!(>?nm>*hz}*AzD!~B)=h?Rrhk(wSq)8W zj*jeV@E6(CFce2pz_33PHupPQ1A(&WJh;8Q)XHdR{TLeNo={u_?ZbIiE$AsSHwJ{# zz*F$-%O$y{>(*Oc{-mJicaFVrv*We*-Tzuga&l~x>X%{etMc#FB+!zlTU<^&arhR! zknlU-`c`Kn$M1}cj!h;Vuf6}i*E%-85q>|3-pAd~!}-I)yWYhg?4$jK>(J~**F{~?0`j$=Ay<;?c+DxV`}=kh zU$?r--Jkg>_tpF_-lh|)!R?&|g2eFWRpX*2f= zG|9i6(q(lQqsuA^@V8UCFsumJ7=IU~3&RrJ&(H|Lw#Zls`|1qyd*OSiy`SV>wr?BtA>m4Gik+7HOU^xU&mp!Y< z_Dr$^6?x;qy!@?^>{~;8GrH-S(6y;!sn3k0n5gT#`M5Rd3`EQ>oiSvw@Y=b0W5A>{oB2hhPH7I?%vP0FZL~+cj*`ch zPFVteuTf=C+4CVqB4;xv`v#_OFk5V--&W}NMT%>n-zlGj2GhodWiv8YF+~rPI1C5OG zM7e%}0li?e8~sHwUJ4lFV$qo%&1G9zcRr^J=+GtVKuAUA=b_ERz^gEcUJNBXm4^2U zl8zF`b7uh>|H`Ds#)eM3bS0wEuz9jNv%_B)ij=2Rs({U{R$83df#G5-Z$-bzmiKH+ zwQ@o&8S(@J%8^!U#Oo!wruU-Dfo5h#Gfb}pK3uJYD_!Y1p}c$=1>GAe(Q~{xmX8$n zv$~I{5jw|Kk_HQ8zgrtpXGMF&V={Zf_GId{7pdHRA#XVWF;+ELOExdo^Y2a=10@mf zI~mRTH6_9CNRQ=#ZqDMhm}Kqktj*(Of4VsFLER*GDEXW2t~GTbmeMjJArAYJ)Gu|HMsP6Xp(UZ+y9RgfT8Zo9*)jL)H-S=<-L_Z~ zvc5&3H95@Air`DAc&E+mwdgH6FWR$v=#$kN|F7P3#Ak9@9X6ZWVKr#YvAx-6^r4XM zhY9TW3Mh_t6B>HCSyJ;mS;A)o;6$Ji{2E%x;UJF3q`ZY+1in?vCv{Mt-w%3A+M+Z~ zbjC@Lq=>v*LuVU5A(rYK11&m4>itu1c?hvnIyz1=`%7{)9}31I;b1hZbXc6l1}`Lf)AO+0!9=%&d=C9bt>P7^)0ye_5R^V zv4j%=+IurGm++_#-l5mvp|BDQHHSZf^_~lTm^-PsiNr8Xj^;niB^tLnt+Z+r?{{fs z`4F6zk=k!1(-6HbrGsT+VZffxyvd;tl&cr%6&b(V<@dYX{`PyI9p6?5GHQIBEXS{Y z8F{&PlQ!hYm^8BIyGv9<;5NABl)RCgQA6YZ-e-pqJ4C1}j0MXwsu)43y3`t_UZuC2 z967H)gOnioKC_Wm@*1rI)jCZaR=0l{>q~~rPK#i3xE&TFuTtne@p|TAb%2w2d?E1I zL(cToGX6RU^-hwRdIynaC2-b3II5Ko7*?(H?!Jy=U+F4`EFEqVCGrecu{wB=fK)f@ zZSqm87alsCs(!RuzgYj8$~|LqM}hJ0%*+DMb?DVZ{eAh3ns8V<|30bx+~=VEzgeEi z(RuFY$fK}yN%vo7`isZ9p~_v&bu1{)EJL=04jK_sjjJy=k~sB>ya5b?X;U-EdJ zc@HYQzwGfj@ z7cbGQtcjgQV`3XyhnRnc$C83fdeZ&K=@~RpB3XD+iu$N)ytFkNp{BaV*W29*r#0jP zPc3M5C*5jKHR3IbE?ibzPYyg(tDUJwFW7C8vu3w@{XyAXyAEuo9_`1prE_y(bS3l) z`%Boj#y*k&|DtSk2=ZR89K1$JAEI)<%`+IjwC(e^I z?T+@D1n5P|ec3|;LM7rWf>B6T{Gpruf$s%*Hm2v0`)-jH-fpi3%>kvy;dZIw zw#G+_Ag}zpQU$BqDY#Xk+`W29R^tT457CfT}b*unG8 zuH}MVr_M8H{a;P_V5D3hwDl?X?sM7nE))8O-J8sOC861OAp0qgTcd+#+OcoW{}B9% zX?UiJ=^QL=hSC+7X`Uf}jr%-Tb&e4E&(Tt2WTlZ-L2K5&UA&>oGt>36_zd+AwM;}0Y`R{|YR2e5D^eO#h$i!d&Az{!5zn50Mw!xi9{OCQP5j z8{kh)vHK#e?J*DYx4twDZ>9c+NcKa{Lytgnh zQ+#J(ZnX3!{!7~Sv;Xoh$fpj6RS!M@f7K5@0Ij4l@?o?G+UX}6&%(SPp0)9GXS7of z(bRKByWP6}oOX1&bK3XZpJ}!7*Y)k#ox3YKGLpJ1ySyKp2+f||*gRZ(1#a^468zPi zcQrnzeHD30dxK=YA;7GIiXE-(ks}hs%6lwNQ7wSa?!||&qm2$>rwrYbJ~J?x^`%rE zv%zoCIQ+)TQx6O*%{B>ppWi&~by-bXlh&N@p%iBIUq6P4h&UV2Fa>SG`D;u!Outi~ zvW}1DcFh(;f z8n;Kw!C*P&aK!Ly)K2^(?mYB8J_WjRiL9OOuC39nt*z+*6BwAFwI3wiMq1h;P9M(B zH#>)+u&PkWPD!WV$wk~rd3RwdR3zB#aEGoh`(x{io!xFrup7Ga zqmjDH#qO7g#}m@+ob^bg?xgc&mDO9(--5kXletlOSNtlbNwupOVcp{4&XVd4&ZYCq zbHRAWf~r+I1vCq&hRAQ0&ACm&H}rJENmf*c%MK=1STSxgr6B2quvC)_nzE>n7nBQi zY4IAUst}SgE6J1#x%&Dm%|v0K-dC(nWo+K^bUu@s>3#lR!9ss;N?-Unm26w!~ZI zkYfLS&DLR?#h-2}`Ip$d64_JX4z5n@#>Uki-FuSN*`5k{_yzSQ^Ceu*Nwp$;Vw4e> z?@aesz^hhLV!cYsyE_%fCCT}87+Ms?Vgp3Qnh-INU*V7gOpF4%ZSYUpqP^Pp5zAuz$jRp0N3asc9 z6EiE7vdgJPEG5YrKG752-~tgj1xc#gu^+2;x&mbHe{40H=#BcA-R4nf56&LF%05&_ zs6MF6jqj|??bfLRR(sH3(OFf~2h9KcG(u1RlX>5?(Y~DV*=&QGuDi6Vv+K2HZDsiI zM0{@0ZV#kt{E2fa0O{?z>hW_F^bF{rR9$ zm-2*kIUzC<2#qmFpdmNs!p6xB**tP8+*pnszV2OSFGqyikXxKwJ+gQaV+!C zuHFOwE8c^1V$BS%3EPk~+3*o}1*eKUq${|ffLo!?w2@R^VaKaR(!!`WElj3mNLiIx z(VI7GG)EOJh&`UtMZ&?!NVcw31id!V<}y1pcBATwtMw|A-RlTWM6wO7l6)nAzh=~^ zl*U(~TecmIhCN|0`(}rr{eP7`36vB?mKl*(p+-MDVI3FV-=KnD2zJm$tdeCIwC&Z9d-A4u%kF59y?E;JBZ?f&Z;ZC8Bs@f z->8f(?C{*_to;!gb~$=jl;CXrA{F6--bkeGn*p&=WMxYe4U#s~DX$eVjGQhYIccKXUfup@}kQuv3^ zVpO{rp}XOq#bIe3uD{Fav8F=N!h)`-xi-ILR(@iBI(*s|s5Vu#)%Vp8PntVzZr9w4 z2*v9GH|G>TN4@wVB5&a?b>HJ6_Gl{b6+cC%VtO;e2SX!kY5XBp2Ak1S<9+9*6+h=g zP^XHXLffcUh8dhxTm<~l4D=qm+Xa}K?c>0x3Z@b0dnxQp&P(f?jb36f zLjWT%nAHr%Mq!4~uNVyUllL>2J1ER7F2m}1oxuzPjGMu1Wc9cy%q;XSgXskrg~8lF zVTQ^upE8)a0OMjX8(2Lq3NwsOFqm$DNidjQtUn@yIm=)s157=GxsJlj;RFWrYX-9b zU~CL#4uzS^wKAAv1O{eP=4PV{xDRM5^J*cS8X!inA! z@E_$q`l##lX`>#LLl@wUD!Lv_e+H0NMjxPDR~LoLa+}eA;s)ZMirRBCTTRiTQY&~8 zvnhWhd*n#=`RB=BH1qk)kt3PskC4BF&Xl=+=dwl{P`Ms5a8j5UKj; z7tsg(X*rrqM&&fRJtap|si>TKn09SE`*X;Xx#RF&Z{jri1@{nVhQC+Q_vqw?(fcrN zX4te!w*Q9hsmYK+nJlS}lz1ar64h@)d!uOPYlXATXA7k4Bq;k~xvZI$C7z1SOdr#v z=8%Ry)NhKSCHmu0v>Hmj_G*FnREG*K;8v>PB#nxKM>i4+5rh5vfi-%M9bTSXAZBS@BHW2r$K*Aeg`3Ry3k7fkr=uQYCWho96bC?;q8_aO_$b3 zVyn3-UY{yN>WlO>4f`rw)*d!7#mE{;V?k?*UqSu~#sLE94d?@kbzNQP>aI86?0Wrm zIuDDvljvo1mNQrOsT$H+4dKIJLnUaH7tuYp{xG+H%Knq@y%#@s&cOSL(9flCm=LOg zXeROWsCAZC0Pi-WcGX&&c6PhtF=PyW1!_0cl@%jcb>A?m(a+3N25G03TMivty>cwWICq zOyjy#X`sSyGW#yKfn~;!6QYa;NFtwRs@`BRLK{s+6(NL{;49p+g$SDzJmi^Cko=CI z)$H?U#C#LNJbEx-4S0Q$)0EpM%*&%Y(bG;B*3T&sQw`rPxH?;0nQ0ql>)S20!HC=@ z6>A&a66I%A?g9J-x(MBm0dJXSM; zkq|>XljT=?2UIULN)USyp5IdFYY8^Q<6fWIkkxN<*PB*4 zTN{0i%Udho+p(4qens7P&;k z^s20uU6&B?d6O};mAJ8L6&`e`)L|i2G@DY6xB#0q zU@rJ9L9Z=fv4jLyAy;Uds()+-jELl=M_>7s*S6$^RBP06+0J(a+Y*PoDr6Q<^-&Bm?$`)^%( z@5WB4Wgw?5>W*ptZz3Y4(~Hj*`_KzK;(Dl0kS=(`c8c!-Dib3+fk>GQjYiFzfD0v~ znd&&ImI#rjM6uZjIa_8s#6hRm>I`69Q&YoZl#9tzlj#ECJd*K1$mR57Wc<<;iw?xq z4r@(B^2B}ntwLRBo>m*lU*4?^P6%0tw<-03s3=HrzdJ~Nk=w~HxsYXeTYbGqesTGj z-aPPEY2FDVUef7h`x&3$Vb=~Loc{OxgNq;Bb%1yNaUc4d4*gmD2Y?b_asxm&VJKOq z-YsMrEmfv;?3gKgy#utgBNH5uzC3#N#lz_B5&hSbno&_l_GA*@K&_WJ-h!Wm{dXI8 zsYt^$u8+*>*c&thF@=dFy-dXCjYEmpDT*hJtJ5G|Glcau6wrxXUJDU|Sqwo>x@3j! zSJb?i@2CiU45?UN<1K>zYJ6fQaLtO9n*$A<3H>#pCwfrnZVtCC+}ho}Wno)*LU;Tj z`Pi}k@a$!4+cxanv7zm%WwXQm$9C}2)Zr`h1DggCiGhs+`4z)cC4L8;3xDw@EK|GA zma!hUjAIuuZDyc9&KMl7%~Jn!Af zs1I$O@a!J_i2m#z>U;7g{0X$z2OH{Fs(56;Ih7nkr_AXYojeQ<~U_n#+&fW*tqq+ z#mS`$*S)l2?v#XJ(0~()=kYiAJ~$`aDqd;FNG>bf?@@SXnHoeps4qLh7dV&%lL$OA zXAEydMxXPSo|rOH;{H@y4{BFShJZ2>@`p`)X4{mhJF@L<`xnjJyGqkm?VUMe@2bv` zS8LEqW?Obk@06`s-c+;4Tx)9X=*f2vb}ZX9FtBS`2YFg+0_LCB*_zrqawfa^IWxuK zVDVeL7f&Vk_lzDu)U2Cl%Z>CKm7)DiSxI)JlD;k{8^I2YDWpnUio`U3S2dM-*x z3Lr_k=z$VzxJImD;&F&eSyZw+0j+It6!b_X8a_T~Adm1B7d_M6e+VNR-oM_`U)2e3mO*kz-%3cVQ|BYJ&ra8^0cg0EaC_77326F zGL`)fDIVC^){Gp&SByMC{Q(t^;}7t@YWWK*;~;#EsTQLh`XRIittpT{`XLgJle-N) zhU=)!W4^M_Ry_W`NYoFQ6RQb8svABCN~U6?ovNv$Y-qJA{`#ZLU?CPO3}#BtSZ5{} z%yh=;HK0bbTD_9XDfPMBZL#+04Gq)VW2I+?{8$YRU@>IANxgDOuOZcmskJfExJd z$dk?Zrz3MLc;?9Sc*n>Ju2KiT5h(L0tPaC}p5eU2$CiXaOc9MHAJctB2{R_HrD!m5 zI6t9!A2g#76LUCH@zDi^l})+S{Fc5%uausb)7$Za=8-wr6`3d}q*f6R@74c!>(XZy zHuU{q+Pc@*8vVhKc3(TmTewD}@6iLD8{`!rfCO#~dqk*`N)HNN4G%7Rps&>8Wd|1U zu3zZ8-e4^}jpjT->x=_!@jmfyNp-nK`4Ss*?P_Q=ut+**3{5I#7aZlQjMu0KSHMZ3 zV)!R|kgdiUX^LmnI&Z+{x7USI?xcVA^lZD3%*T=v{xXnAWFqn5=5W4Qb<_qsW66HS z74hg>7OY6518T%=!wZb{a18L|WxDQTWedQg)ZdD+b7Phw^m~|`Nn{63+<*W5_d1Us zcOJ)^^$+#;P*%Sg?MBz@w^4iRr@80w$FTQ}USWn$wL&Ea&y$NoYR)1oEQgylHqD8p1z@Ja0Mg2T)dH^}WIJu7JEc z)@~^;g?rFe{5Isdx#KJ^i-*v93@i-}erFr4crsdve*<|!Id3HnqgMPG5JCvo%m8fJef5Z`8vhFwzG-w3m~d~2pY9Z!e)V%{by+R+H$+&m38?eP&Odn=;f#T zJwBIHa!n1FTTfhYwTu9WdW_@N371 z-??+A?}qpd`2E4b&|lH`0L5jvhx-ZOW{hj5ej5XnAmNxsM=i-QF660W9^!Y?UDEL^ zi9h{`D#zkPP1*3qJWb35gos;+#1ZOjAYWv+5GG%654^TdNt+zz{3KBj1W4Mf?L?+o zTmp2*-}4Jte`pM^OZpRFyX0Tqp8=^sEcK_QQEDuAt`)x{2p*4|Fxjomz`8*)ZmKo6 z5FdiY-FO*yGptF&_atKHJFoban~_=n7XNs%ftQT1tz4J-05Y!2-em63`fo7x+>(RoKDN| z!HbfzoJh!Wl9l_2>*rVf8Rb4oMo76xlG>!K!9(03*#C?>q*BR}Uj{=2;T>iBlBi0r z6B7wBs3;%9CkSag6cdB7SWt|Wo|NV&F2ZNIf8;O!lkHSrT;;3M+gLllEVXmC-l)I6 z^fcNzfWzD-*pms*Bhr;rSHWCjUjwVq^Brn(;iw!TA0aJ!y>eP$Pu#DHVmd8~YJ)>c zhs3nxgl8}aPov$3@hNUKe-}_tM!N!gKXM5#LA$my21Z=UR8;!mO@uw3aKc-9hQg8r zAAG7Vm)GvH)EB11kM{Wu0Fb}89N70={Fe9s@<(hYfhbJ zlbue#)pcd$U&|@{x+M5K){yr)_r7up+PD+{l6#Kd`4_j*ZI|nu0h?o$bP7@~zpZYS z#Lp4EURQ0vvDSNCIR*H89h_Tt!dYMPA8znBK1+h!gWkD*=K9d~?fBpByHD7(iS4f+ zl=s&$@OP}6xh}YUJ3nW~4*$Z16#l7V4cAjV!OlgVor}bG!{}%X^GBbHzZvgXq-(C2 z;I4tX{B*{BY{m)2>^Q?hJye{0l_Isk{_jb5Ow|1KHcOr8lp~3xBiUtcNG2wj`4~na zzbKk$Jfq^nQ2$kM?)qt;2`@|gOb+inRnw^`qptQuQi5EcNXz!H%i)gK$nysN=pqbV)^GLr&d>kj)<%!Nvi|n# zK2E&#*%$cq$FCzjzGaE8|4Wa5WPSC`mwNnTYxvDC^!PLD(Kkyy{)zR+Z~jS-e`>Y9 z{Z@}ZxBl&0TaSNcJ-d5LkH4@^?mpM!FRdqc-|F$5zxkKD|ER}bS!XYvc9L|L1Qt7ZaJwY=cQRS!X^r$Shchah6Qv zavgfv<2Ho7w7ajImudws!1GhR0MACRoHsJdgCrJe`Pdb;iI=OS@RN8$9?u^p znMm*?6MnLei!6|N`*Jb8%!}WP*I4z>D=&&Zxs`P{CC2=8!UL?gmW&ge7{t|y~bne`~b9=gic-F{G7RA=f_`ERiWt>C6 zI-X+-Np$-IF-m2u77x^dR*eOZD|vc5N%E64fSj2OlWmI>VROPf5#GiNLT?sI1&=3s z_7B1k1?q@+-Z#0~WLBHb+U8in?I2BKR zC3cn8cYINlIuu97VXl(DiT1o~z&lwK9=bfU@>l>LYv8gwN$ zlYdwTnPmQfK$Rmf=fR;SW7N{XJb~79n3twNA8Q%E#9y-%W+WY-6SPICd%}q)$m#|# zFS<^zKkQHYqoI4}_DLgooj{ER_(O+~q+D{8EP@a!l!hu7iz>69!4)#QpFcRJK4Iu% zX9nFV1Cs}H1eU)dL;}Td#SI*&ayB2>0u=)ISZ6Zj3~e>XAX{^CSQzS75LC+Vc`AKP zY<0Zw7KP5verZZhDW6V&HA?;n4}#bWO`hAwh*Ajh1?2=l)vN``0BI6Srcy5IB)%L& zb?Ui^!Xu~dg-?X+L-M>i2Un4_@HCVKKD3Ah`Fe(QRIF)2oSvGrL611sB&Z>nX5uci zNu}B*)9!)Lq67Vv7cWUDh#Yx}a+s!sX{gwQgLD_M+zJ_Qf-H#%XJxLvE>=l)Xk;EN zV+uD(2T2+szLy!d97xd8U&VnBwYFJ6zAUSB3MmO22V>$Ab?vf-R;<9-nVk1s7cn7z zDLSKJ*TlzIW>JuHeFIe?TEapo5Eqn~IEPaiL3UosmeE_Ep3Dk_G$%Y}m;tkKJa1Z4 zFF+Z1*W#7P!jc7Y4%9h$*Gz<}q#)0R&6K^4%a7bW%arkyqA|kEkH6y%HilqzZN)F$oS;r4(Jmrk*&Eppo!YnXjck&icrLy13~)Hy0XF zN<{_soO-CJ2oU+9Fv)MVj=cC3$$idU-U4HdPlK?+6FET9G_f|3Z3YI!6Jj0&_F zfehz4n@RiV018v!i3Uw2_C`HVa%uKxosskd9;8Q_v$haLeUh!A5>^ zn6_2@fI_*DA5!2K6dczD+M~1)hC2R?F6iG;<5Qw7tk_Sfy2@Y${IBzLOkE7BDMg3o zKY)xF5>kgM2Emb1?-18A2bry^=(7i0&tt8)w)a>~RE1cm6jxi@#0Cu>B3bto+?%Lw zF-j=ZWjs$ZAV=XgM*~s>Tv>Mqz+>qLU#1+^p8q~hw&4F#YMgW?#JX#ARy1xXovBb! zJ;fCcVsxG>boNqCnV2A~N>i<46$y*iIb%@|T=)Xb6P$P0XQ*_@n>2{^jr+aX|9Ve$ zSaPORa)vh5nZ0}8Od@%b{52RsR&A01-TtCpqD}fSsk&@y5%{Xh>${zS-9L9GkbdT< zE1Ns&P2buRNAz7Wo{Zk~yG~b}*e*Vww8Y!~^lWr76<9H`htqesJqUaFPJG`Vc3Z;v z4Q^ttD@GI1KOYbJ4(9s9&fuckAHEi^ux~h`OW}Ec3Zc^xZ`Gpuj!VLzOy>+A?N|Ll zfBLQ^dj08;WcDD`7Grxd?RPE)_C$;?CgTzAmiDjWCFL6TGdSy8n)n!x?)c(^w32NVn zcV2h4*xUPtSL9fez;e;hW{myfk`*sue*y%2p4|X-K#ISV^KI)p>nWZ_kp3P!Y0Uz& zA@bu zN_BdS*@wJeu%#=uL9paCo)&Bot!{skHa#B4Y}0Ek>pyXdhkX&BMJz0^>jm_9Xl?mV zoAFR*wOMY2X9dnoG4nqk8^XH(5qdnZTG+8=R98phN5JZYu@lyiEhSyo)&Pu}W!QVdS#L1rQ|*D*Gtn$ljRIAPv@hraHyw=)#%-evg+H2uPw> z{uS?)Kr4gKi4{8?*P zY*5iqFpDUD1H`YYCWU4ZaUcZih);8#qrW$rmnr8Sb&}GB_#0{_n#d1$y})y$Rm%12 z_n7sWbFG>dYdlq1qo~T#zuRJw0UJUrHpbdt5TN$HCPqd+(*G~bt5aLc*C=O{Jyk^YovcRKnBk(Kt; zypaQaSO?hpBvEu)V9 z8sngxiLi3colLN2m$Fm&CF720UDgMKa>(d-I*TUkOY>Q2x~s7}W{U;q%1~$3UAZ!1 zJwrw@=Sn!;W1QkZz!fdjc9;`mmNeIW*`~pE<88Iy=hX(CnXWWpi3n*j<4^N)?kX&r z)v>azp7)h@`9bw-GI*}B@E9etD?8{pV$I_G2)65z53?H~avbN11;_R)99PUqm4UJv zvPKhyZ^k~A%!$LwZfvag6sGqx*`vwyy1pd)51czP_L|9m3+;=;h{$yJq#|^`$2i^% zP;aHMHkNsu7eme6q`|)gd)GBxsvK#o&r8-8M{rMS9Z$gH;~uE;MHf}6hnhRY&lEo+ zuDtZ*#9*!~7Ugimk)V;o>v==!Xsr6|%EFe;3W1K}W=~d+jHa)vI#~JU@X^3J>eHo*&f0o7sAG^@()vWAyX5vQ#-BVaCmMR2BM3tIP%D z*O~5)3bxklJ>?#{*=?9zRbP|ndx%UvdBHYqYkEpNY%EyL75`Not-G`kmDw*PBsxIacl3O~yesI!A?Y`TjQId)qHL zQfS;gs2^k2DB@_V?r$oqDy^mV;Znc*Dawwi>ch=#MD@-~eLHXB-L#$FWfZzfR~=rJ z!}ghZx%Jga>+-#T>4A5;XHha$FDz>sR()WzPu^YG5!P=hs-F$7?6TL)*8Qi|yNCQE ztyS5=+~@Xrve4N$;qFu+s~9%dH?4##?~9T(kGWP4xf`kXXxGPRtU2DyIDyUpfj(39 zzH1#L$MR6C%w~rfNS$z9-p;iLn|Hb99YpCx{#w*x<_TN>>F3_ucl-Js-b?;GcaYXK zw-Cv<_f;eMOioe}TECU5cMY3MI}X)B2fF8~Zu7^xzpB^IwZ!_(t=Z4bS=Ty8O;=Rt zb57ZJidiZ{f6%vudgr&|j*fPm>dt*$dzZJ;Gp1_PYi)%=su4}ucJl@&(nzWba!h)} z^WjY&K}7PqUBR!Wv%r$dv4Ng*Y6(+p`5M!z<0WUd+VZBuM7S5D7~T@HtXL$F6#Ze zy2qzwwpG5ku1js+Wt0pR|IL0nF5ktZ+75Z78&`~sYAiA6#O1daiXCbB-XXrE=P=%` z-$kD>vgUps?;+mw?@jNCNu%P_ySU?Wui}k*gQse8^F2lN-lYC+G2%6{?EmI`Zm#>9 zOn39@4M@R0lC@lW9phV?ca-tcTD7J;@t*bD>ioZKu>7zmRPz2boa@>6a-_3HRjI$H z__PSBxbwWhovXW?!;VR5cC4Ff-T02AB(FKb3@8bJ3xtRP#I?q~d6TJy^i%8{hgT0Qb!mI)^*I^ z{5g6Z?I1fY*ruWN8gsAoc|+_n-xQv+E=toW=BrbiTJ`xvqnSdc0~^#+8?yT>kMwUb zQZycxdiJ!YHe*DRr~EzT1!Fzo*$ez0W1afm(q@~LwnMg|hv&)`hc!^1P#SgkyU=&M z;x+V|vKC|Jpjz2t3n%>VUuZv_`aRDo%|_bG6YgV-l(xoF=|T9vDNlCU{sDhWWEgU& zhhR?+_|yq|!O_^;`a8`!Itu%WfuvuTzyGw^Zuh9ZMq1Mc$2ee4c+FNgjK_diyZnZt z!;%K&e%d+V`Dsn2Vz=`ApoU>bzrAp*A8@LpnPW3TO)FF!kp7hw3TIpY-6^w2-N!@i z!%peZ5p(GfmA4#m4zIG=A8v_4kE8TlYkpDVk@4e&X5pyRtckCQ7PIaq8A8c2XE#0A z!2uY6X_$@~n2A}KjX9W$d6lXx6ABFurTK!g^~Koq}W3q2f!r{UlUR^lmoSw$ayW;JW@Jf6X`c#ebd zD~GU_LphAY@gYZWB)T|?qwx}6z>ByEF^=I_oQaz`j^jCj+u&nPP!8x3Z6zAbGr13k!`6Sk(2QKT7;R5;@z%L9k zgdDQifL_+KfsJ^LO>AZhx5Y=?j@x4+ci@ib!zLVzLvaXq;?B4nx3HCMT!<67i0$}< zi@Aima4C1i;W!LO;7IPq4(`rn_!{?cIX>ea_!8f8Pp;rfRALy0V+2NG6h>nV#$p`C za}_(e7x(5q+?T7lANS`0JdkU65N(DTVU!NL7-Ki%T+4M#Fv%3t?BRO4%%B#7F#+4) zdJM#s%wh_zU=ChX;11l0+p!ss;88q)2XQT~!w_!3t+_r2JdVd>DAr&ne2!`yg@@@pPWSGkF%z<~cl<=kX6bpBL~#Uc`%e2`}Xzc^NO~6}*yH@oN5w*YMB0me=um z{)IR2M&87mc?)mlZM>bEc?a+0UA&w3@Lt}>`}qJLzQwos4&UW_e4iiiLmZ9!;lZ&uk00R} ze#}q!DemKE{G4C#OMb<#F$j<0NBn@F_zl11cl@6J;6G7=@9;hD;=eEn6EPX*;9Q)I zR-6tS*WfB#gtPbq&d0^Lnm_UB$+2D9u)3J2QS!XSZ*wVTvzh-BxcBOgRHP_o7O=s;$#7Sj6?V9gh(r?P8 z;{HG|=vk`So~4?i?V(1i!;a*#j@6-j4(!Npw3cbpG95+{>l>sDwAa^rmTO1V%e!-_ znC<402|JgyR_Hw|O7=7~S}T>+sO?Gy1I^Z|5>{i-m|H!a+H*yx8&AcmJ4^k0I!z~5 zE05mQ{RP^lWwvgaZHQ6bGDnAUOs|~&eU9l>Z0lZyJaN;jxTaLZ>#}a4V@*~$kgEjA5mv9hIo3mJ2pCujPW zQ+>;o^(|-G(Wm>?S1fiw*P3|#pUD5S-af}o*JToRrrV=nqRYzfk|NtHwL#f#*O9uX zE1h$djBilunfOMzp2@d9C4m!?#-DOtsg!Iw(=|xCS3m}kz^g+@SgC?& zB*Q4445WBEl!7{#BC2qTsAA-SM~0A6MvxR8KvI-{1*Ch)k=`XoJC{iNmL%mm4{Dr^ zk%XO$rh8L$5xZx|`ka%=#?z^SLCwS8y2#rVkL6q^D!Z9C1@j}UjpgErOny3vgwvIk z1-KES&AfY_okk1N5!kobY=TBualAyHB1&@ZFky@_oY)=I}x^B zwX4T=om3%0jnazV2Z!^ga-CC5V2II+glcJUio2CoTvXKt0!>;5{g$oFdg_^6Pex5$ z0XY*1%+w{+Q`bn2Me*cZ6i*LEK|L8oRHKooroSqw4lXH6>Qz1YEYnfFKax%+?E=g{ zZ<=8`sjz9K#>pZs6cR2J5-t=H?k^-A^^m6-xEGYL#)66(w}l9?%<%uMlgW(w-e6j5a+QAuV}EzL~oh0N4`otfIN zGE3!>uF6aSnVAG8GYNHO8p+HQPiCfgIx_`zW{RjXlc*#!sg`CY^+IN9zs^iTOP>KN ztVKi%eMT&Os;n+8Vp`}^V8yjqtHnAk5?Um+(C5g~XWZ)1V!amnj9VEk^!c=MT5Qmw zR||dgtxa0=ne!NPZS!(#YAt>A=?_X z?r${Lgpq+zrMym)cGih%ON-ygMvv{f>E4{VU|P%tW9kgFG*_y1c@GPXtU5WhLt869Y%f=JYt?2dD`dgyh+UQf?R^`T~A;oWr@`dKX(YWI} znRuq$-dZKUPs(j=!%Dwa%GVb9R3pla`n2R_labB;1BBMxn*aa+00061{{R920RR91 z2mk;81ON^I0%>GrZ*p&KZU6#AMod%y4s2m`ZU7Dd1^@s6000310ssgA3;+TDTL1w7 z0001Z+MSkpY!y`)#m|}7R$Ay{L6o*gWhpz9vJ?>!q?D~-!GciM*9BUAwAfdm6a<9E z1*;$eB349#gg+1o@P{#m5MziT{y|JcQN$&PfJh5S0Y&i4*AYo5FO7M5zdQHNH}~E- z-}z<+1Q3ODVV}dv$jr(?Ou%1Wf&mEAIBwoVteS8|#G)12;31@-J5tdfgYXzKFdD7l z8}F=&Yg&=$$) zgl_1Kes~x|FdU;W4&(j)Ksk>ZPZ&=b&l~IW{lP-saOs2@ql|IJ)&(V{^PD7Odt(=4 zFJr$sW&V6;kTJtJ-Z;gW7bu?VcLK&TV})^<7DG>W1g`nxL|(JS7NL%t~6E~HD#zv)(Oq@Ep3Kcb!mp%`~pw$zg&RZoPWs`PA3!E6Ljj-{wVHP)jB+p!D#@kxUZ zoC6IR_YLrTQSG&>y>^$^9`f2Bl~Z@0Cs0SHVT@5;JJf4)y>_Duf)|lhlge1Pmm-sSQ^A%R}RldeGT+7$Fj&E>1H*h20Ou{9mBWy4#)Am^7Vsq_Y;0bE$VOq7jX%H;4av zq3FiWT*IIE3)k^CZr~=BG-cg!PAmE(e!(gHiqklQv-l0?@cUh&58q`cjm7v>D^-39j*4CJwb)0qR^!n-^lqBkjqS3LF{ypK_j<{7|2dA%Ol7^BDs70~ zy16LALRHv0Y{hQX)*&3xZjb98&uh2ua}6To&SGVFn(n$*y$U&T45v$hI`tOIm18+W zYFtpSQVz}HOeu3wy(Mz%IL?wvm(*J-=Z;rpol%Y=)Wv%qS%35(43jf)LXz& zrjJQ2l@!D5Tt_|U+%yc-IZC?~-t*tbJ))!47i!=Gekgx5L{!=PjXG1-5UV}zb7S>2 zm9CNX*r2a3y(JjV1SYvV(eI=b0j|jbQP#Iz*y!#3TB+vtiCX^qCOW1l_bxl=I9h9T z(s*aB)XY|DV{;_hm7TO=IC`5Bsis69DbWULOk^Skm>%iuBs~V29)n%oq+W_eR3C-xt*pYT(7+T~mebXC=v{!h3F_uc>!0s@8*P)R^h z5KyGZl=22aM0_J+2WM%=am_0D7Ia!iu`|;F>&$d0)q)aGTZnX~i&vc~goqUab!c)E zXI9BgRLnj1&eG@b{IR2ck?dKTb;KdZ(H8Mywlyr zcU$UP?)#4KuYHgCp7DLpx5oEF-z&cLzMuKZeLwf@@a^=y>#OwD_)c^m(S1z!rQM&n z=!+iXd(7?ee2-Uq9PDwr=klKGdv5I+?)fKwfq#tuI{$XHEOK30jmb|&Ci$(6E$eDF>8nZ+QEsj7>OGUG8;>^S*A!L~o*ys+S-~KSqCEqw8rSa%`eo>EChR3p7lC zh6&J6@e||i}#Fa zfa$oN0hoh#a{==JHv#4Y765JrECk#FSOoZ6)b#@3MF6O4yaf0G;O_u`5BLYv`9qxl z5wH&MGT=vmR{;M6_-DNT7o2|#_*cMsz)t`h#4+QifLC$-8uI)M=Z%0(z+drduA@jh zp6#6Ly_wWKp9{pUFfEBo333wFn z815ejJOOwT@D$)_z%zhVfYreLS-^A1`!|5^0ltst&jU6BHUVA-Y(amv0^S6?1$dkK z8og<#(Fbrb^*8#G&nUpTAI_Iki7^6D1{epJ0Jt77iAEaJX{<4W#)76w&KC?`E!83ohu6(rqZ+26+#&ZjT^$Z#=EV(^}Le zHK2(%3A~9yr$wRD!p7^O%GfMo#un(5t>BV3!C`NUqu`Q3C^48dA(upM$v>sgG=tE> zU~T25qNNZO(g|qM;izvW6(ZLx)N8W-Q#K@-GoUfBwCxF_2Wegel&>B-zS^oieDlLh`;TZb{mVQ%$Hwnn3q;VT) zJQ01Jq;FqLv7BMlawq2$om!R;ly=kZ&9GhI%eFS`Db$jCUioHxvhT zkHhcl1v(AF)nL&4Qk4D}*nT3aFv8UsVM}=cuMbQ(_#L;Bs_QLc$|g3F~W;av>c<^)Dl=KK=p?=Vh9kfW~0 zy_S!bbAJdUB+sV4Kg`E4a1M))#c|*rmE%FZanE`13}-x-qh)p}?)x;}0kj+?zgW*t z<2<`Aq(ZTVuhktebPD=`YZT`~zANAy0r)@xzU~^_4@nNEplAW*Dsf*SF^8`W` zTo`M-b5t1ULb|Wv;}JkY@{U*rO)H=5(eEFU*kE*OMWv`fdIu7{2YvJ7*={aZj=X+I zf{8p0ve%+c@!dJceXYb=wxw}@K}$fTe!qfwr5bWsixJoke5=I)NT(dJT_{%wX+H#6 ztz_IkW!%H6jxM5p1F*K-+#udb$}ry50_Q_~eH0LKN}2q&S>IcD64BDq)jH=CphfA# zta+MQf0857@*F!)`n@&fzD;pYmfY3_Wt&biJ^|KwO*u8l1^NS@?t|=AIQp8zM^dYJ zc%@j|Tep^1I@PgA4i}krJ?9kb<4K-PY6tkyXH%y|U)x_-d2P_eF?|jz-Rx~0)>e5b z-I46){tHVkAgK{$k8qVnH+Tt_tv@eJ-nj5Q^mgzyU6hwzLA~mM-4CX>@)oSl_4)jb zinRTy32Kp zoUJO{MTlob^YnVN64ebG7Tq zUX8oNI?VS+&Xxa#mSY^n2#FoqDkY?C0j(oU*?rn8D6oB-47Hr6*>=WQQ%w%NbV1YUR%nzWbyuVgiTVQ4Jd^1w5; zqfI-K^KL!6XiS|kx##1K#74B#$Ig9UG~e3(jKe=}Otl2ocg(9iKlB%I&|Pai(EUid zY_zZKo$|4B>qUseVw+emUe5ZyM(l(qoEp0EHCf_$$o4O~gv0?ybBFEqF}^>= z=Qg)r#;d{&E+5FGOzV{e=S^oMX&8~K@9Z5nX3c)Zc~x+72A#kxL9UjTC*@Nd5HE@~ zl8eMcVx^1`qYtf0a_zoID=XIV`3>huoXfc9XrDxs)j$uT3H-QOSTkKcq7%1!V!zx~oy$>mE2eQ!R z2vXFwVjJgU1&xOm2=U77S&Re5_48~|I(v`C+1Bn_OS5}jd={M2qV{ay{J-GnmelzV zc=Nc&FDvk9k`Axkh+0n+!qTG=q6K)vTH#FnWpN^RObArRoS)a8B1x>BIB_%ur(Ej{ zAr<>{`_M^$xsy@BfbEYk%>!;fK1pd{y&s$}R|D+zv;vO>?d$Zhndcnww7$og!w)CD z=G^{NM`vuz&D&A$k8Ejz{8ow8u(ca-{h0WUI01QT$nO7(eOj_**&n3j*dSg({cCWp zRI7?Cmtoen3GorzJhMGdBa5}S+;bectI88&s?l68`Q?wiYfQcIW1L#F#F*?ESayUV z*T}1Nab=lN*DfkXk1(3Nn@dK7tWM!BcOD0LM_!#BpJZ$rS(<7g!SNLBoqOMsKckKe z0l(CExFvQ&M;_)KFwLEneuv*p^!pF+q>}s|;$298lw5(U7SJ`~%(~;Q2wn?g*6iTO zSa|Ge1MlsV@)FTAf(TP8u3MM80nf-=R%5O9h;hB9-iK#XKQ6I$^m{yaBs1HHGgpLN zcX8cnh{iExOirD&9y-P$_c`*uCCF!s)@4JeKlKyaa4rD;avW;J?>V|EWuOQnwF~_z zmh{Bk{;Yna-+599{FL9kSC98L8Uc`3zjyWnv~?KwZA|B|+A)aZcJ>{e$cos^cMZTk z4BTr(J?C#mUmNtEt6G+mOPj&aA&lQ#7*tf zb2QokK5unmOELoUj@W~=U2Mcv6`+=e!0+73qp+R#=~cjbRl*~x;|P34eM&)|<20lH zTQ%bgHs}$ zriXq_XHoM3$p1dIUc>iteXl~iDxP&XOLD8UA62e(zD98rdMPU2bLd&8V`^zDvY7L} zAZvq6<%561Xwgh!EIw3`XJ-{|uiTG}`kRm|l+EkZ{GcSZ{#>pvWaNue>2tJB#X$$s zC|uk~B{YR5b3Nm6MSyYqW)b|Qs9ZZ>Z4+V3l#l$1*0Y!|XGx8rrTNAbf9gimR6?_H zT*z~meB?B_g&@~XG#Sr4vv$1i@9{|sGwo%uwK}9dtj8%KqYx}#YG?8rtSJ);`z%p_ zNVb`-y|)8erqZKl!b}U3{TWkfmDCw>dvma))llotYG;Jr@1t~Om6}x~*L8BoOLZS* z9Zk%`ve!{a#!+P>bcC%*Nd}Elet@!kP83>}v0N0>65SOs<@Ri$wg|~_2xp{A`+ns> z`40%-zwzM7@p^yN66VC&7*UfRpxNkcka^OMi51gC>0#k&3EwXS4AJ%7LIY^1tNtaZ zX&CC7jhf_dD7c?c=bt#&BcSyZaCeOV^`L*2m{l2#%(Z3!?%tD$4|FW`B6w2KlpQoy z)_G3q(`&)iwaf+0jH8MdSay&3%Qh{UXAwCU*kiTtQzSTCwm~hd&g4N&)QY+qGwBsQi#Vk3WTg0jw+~E} zC~)5aJ*?w9n2Ut8_UoTXV>$a9tz6@yWz#QX9l$k#-Y1-B!ABm==ZShad=%@TRowwQ zU#H7Nc_k=;J~e2M<0$%bRB2{iVn0X7tK`>&DRuoOgRDlgNePeI7vhVvS^sh<8BM9B z>@1nS(22(uyPlLlD-Ph=`)4R)Kg;*rrCzIh`^hD)=$HL$B%S##vqD!qX0Ky8;%Pe4 zZABvP^}ddb1gNfeUfEGpZDRwObyVkKs?0O>DeZ;TI-{P$B={Ij#j1n#^S)N?e^{=$ zadGB2Pgm_CO4~nUb}YYZE^n{Jwm3SKAd{=a9r5haA{31oXO-0)Yme!j-mfYv#_x8E zU&5Q(D_We{WDNHGD9Xs_$cL%%{Bz3x?aZ82OeOhUnD)#hI7kD|VWSmE@hf>#^E`YW+0-ZqGx zI<{@PrC+SFRyt>B1=%yCLis6mE>_h;cxA#QeR&|`q%oZK+_`bH6)X4PP?39$Yx-W26Iw{EC z(zn^IdZo8RF` zo7Zbe@c6eRM~1bwy^=ah#W(a02t-n&$79@~`ss$b& z*3bSxfyb*YVBG7pUW=#ryd&hlNOpGap29g{=%T%zIGnvd@*VwMM2z!AQ|zOaI_pmN zD%oq3b3XNN2FjPVqj&?d#OloU=LXOt_Lm$H)-!K#YyV^GPq9sNdr#_#8FIw!adJ7S zXL@?5mHv&NpVv@Aj!Xx%<&2}XQebcxzG1DskHgs&6XE}e>FA6ysn1(7Y580+x^`=? zbl1alZ_PME?A#nU8Q%=s``$C?4Sxy`7cf^BrBFF*l+3lar@&*&reI83&Iomb7Em|p zj@o-sU&!qxG>`_-V7e4oT}GvJHBF#kJA(MBt1n>(=)V+ zR@1ZeJiSf7rgv#S{TGGkWBPAmzO-Gw$nR8CD4qhs`?(S!bg z+6Gh1C^AN)?rTtE0qUHD`^iW{jH$*nqZn<>MtkK*m!pNZjVp}*Fsh6);{&7G7y}w~ zGY(;nFdD5~P1lfoGM27IlK*Hp9_I;k9k95LuBVA~15Ew;xNfN8^yiPK~N!O*M zF~IhE##p5rI891P-{4-zbPf5?o76NNy_0Dg_tBeXbDEE|fYW?VviH+CLOst(Q&Q4& zP(`KzpxP3hmU6l;B`sr$$7ta>gL~1F|NB(_t7&=~nl%mNRD?8y zle{YC-Ul5T6l+SPCiPtYo7ixj$~YCKqybDZnTA3(1Dxh&8Re@W^E07GZh*$P40`2C z=$)%F=9DsW3*`J}Xq3w!@mE56q}?p#e;{4V>tDA)cMvo}Z%FDe2B}4*-BPxT04nu@ z=KB^$jcrKJ<$gN@Pp=1D?BFvJ>0-$2<q|{&E4C!otqc~mboX4>xnCjSs zQM_7izn7kc$|LXYK>0g$J-0*S-IZ4RH5t0M6jW3|K~WKXH=!7JdAslZ@xJfne);a5Gv%B+bIxzhTnK^?f{TBLR8GKm z1xWByIRlF?)mYp=&v?FdfHTkC~Q>HHi3~M zOHpVXGRT3X2ypy@I8G{%#^%si41yyinnqFp@_exv4&xNd3ZXFK=#h~$k_0SYcF3QdIyauT#noBh|qSdE$VR|d3kDm1LvkzTWvOk z9QAyAq4t#1+_f#Moo((o-Ex#?EAzI|YYm$7W>v7%=Xu6xR*^c!d?-l2Bjq1l4Mh{2 z4;yFPdXe|yTV_w7{rsk^CvKnCn>^=Ajt#}8JM8`5DB_b>-WGXaH$9D}m%QcjFA7(# zUAIwqbTMg2Q<~G6rFHbi=on{%PT#1T`sR{`{YI5r`;YXM>nLrcjOND3o$K)~a_?RF zr59Ubc%Ym{xYwTZ^4f;OUW=W+tM)jFWntRFQxaE3B!oJ*{Nl37{}OIPBlq3)OEE|h zI0lN7zJR1r!BXO}C?%A_>iiFk6*q5k@>@GL4%$C{@00A#c{?AxNEVh99k9+(TX zrpf@3sua%QL|YphGpX!oB1hl~L@F~%;A40k0`VOs4$$xoiGYATU#5w&1m?iBkX#5- ziIbhFtVp50#uFYT>`;ylM7WK>pYhr#DIhszfrvQ3@`W;dO(-}{&_I`8mP5@3nulPg zBB=u93D1$`4=C^#BQh|xG$Q>eengUzAQ6dz9o)gq%R%{I_=zviB=BdK@X#wQRv+;_ zp!93MMwWyV<3rTzWgEcD&-7pCurcz?MP-#%a-a083XZEaY=6Bx2Re33%Cq_p(h>0$ z`s=>-tiuO-l+sjQaTkPW=P<5bwTMWbExz5MzvE$`JwDzwOWF28mVB{~YVxL& zfQKrEBYxXt#A9!dSYG>f!Hj`wkH}S5^Zs+h|F2_cB8CCU@~0RkTTR7q$bY5Z6m}$m zeuIC~??(?~&{%vMO#d;C4^lB!PN&b#DRFW=i~U|SM3MB{eLVN^F+&-*M#lG4Tfe0; zinmbq2IFNpIS8WI9@u?9$veB!IFV3mUVKCbKZw88&V`Q zy#k9W(+?rr^k=oWcXv?lD`${{kFUxLD&42+ja44Vc}%f!_QBtl55QzC`g*kTOT?p$jr*zWwbxu zNi+OGDJT9hHkiCEV4F$(L+Ulxeb$YQ{U(^Z?~2t&ww-@i6S&Q$6IHTKt9ouF@oIGA zd9UPo;$xWlvL$)q-Lkr@@|KA><{<*%8Sw*B(_x1M5Kt1t3%~R?AtROu*g^pw253NE zD8Oe;#wdqvB#7~NHjzEKe1br?m~M+qHTcn%LZ|$>DJ*6iQ7J}YWFnQu0=5%0Fasul zRA^jiB;1=1gum$xqu@V{a`ST}`P_dOo@QkCsjnV*yH1DgEmIVcsNlsGf} z{zM7B&n4K@?$U=mhIWJii-h779Wka#b*J`|!q#k&@>DPF1NjR?G&*iQ<2KI@M?X4A zu8q1dVmOa#^4v8vO1iHh3_B`%$SiV0hEmh3>ZjGOItWcMGA(;JPfo7rthdl~Oz2BE z(V~kY6qmnqzml%E3!8XH?rX=2IL4AySZ5aphV=1%%ls{$-3L;ucm+I{>?5-XODntCPxYy9wRsFHn*@kZk***=aRlM|- zL-T8Wint~Q#PxMg2okuM*Ac40w_hFxfrc5b_I0;6U%z0d6;Acbucvb=8u7N9v$`72 zX|$ta0Z%jnMwRa*rXrUQmUTnj*k|Z7JG%6=m;WU(x$!e6l!4*|C$IrD7M&mLh6Gmz zl{l4DU~o!P6$F1)ESp2{qH*GxthFR-U^&r%q)XK!kO43!{5%BA3>PMgK#ApqGgpf(gMpHYAcxC3v&wQ4|*U=S+v-FfkT~%jc2V z1QX#M%;E{^&nxwsQi9#t4PqF@O?D51p{q zkr_%8@N+T^`zL&EbNs#NN~ved9|Kp-FBWd)vUS_zdoTK5H5)zqR{cPKVD!DE>N=`r z&0Pr5O40YnUZC-J(51)H>QqvUXW=D6?sZ6iP_6~cRladbnE~q?cUto{o;bFw4|<^@ zYW@}wiiX}agpB0Ls%3v13Jkx_GOypTvs6imaM%^$LoUo2-U=*_rWPp{ztY&5o~g!Cuywy_sZF} zA+P%%weM?tvujpOgVQX3Jg?yGa@+ujeioVCZ76ncM`l0e`ii6Ox%z2!kL)axCBc~! zPPyZQ_2r3XRV$8-PT?~Zo)I1}6#}6yfO8!o5UL1gI&rWIvEf<%x490DFC(B(L>{FC6s9)?T@^6CNo) z6-b`m?yg2;BQm_j|DbL0_S>op=aagR&dx}QYJSK)SX~|T6Kyx&qm^9lcyo3LNDMn# zeL?GZ@4hRhOR#0H+-lD| zq@?waq}6&nmUXomeX6+gOvS2l)E@ z7b)C=2bQsAV%*U28@A5}7w^V&NiO~_w$=ujd}q!5y6)T&>;d`};!+|aXXB<6sl>Qg z^X73E$_V|Y+P+YOGbqL@Ip0U}c|}3Tldqgxlz2qP6Iy33VtbyFOKmiY?_xNBpi@KVjshP(m$1Sp z4Enl>H9VBVzE9735P@H=tgLv$3Izs*ceA1#z54`c(;dYtmg8i>v8$0A?5~idC|hbXPcs~=bmX+Nc-r&FX&xwMUBy(4;~VEDwx17 zlFKt+T&}9OjVAip(U8n*RS#P{&&;im#1G!~sXO&OU{;CzQ=M3M-_DmRi@6(oWQ;|1 z?<&ze$-|H2&E&)8)&0W!K&5T7wFr54_QRr^R$2>6S|vLJj(^5(RZ0ocdq5RqdZjP@ z=x{Vny*XWb#C%5E%GHqM#zBd39u`%Vs z+8nXoDK4*vXCz*5aDfS=1GEe0Oo2*Vq!3Odq;O09jHW!pXmY^?%ZMDFnxHJ4ZvbMUVWEDi?qp+H9ChYom0ux1?aV2-$X`-$ zme9_#2804bp`C{ytZl|5+*BwD|H-zQ((nn};0#%Wi*e?6>AfSC$Ye?6~llY9%#@@(8vy~cM9O=*` zN8bQr#lV0rq)o0|rIW_%#`18aW;D<$VXx_w>p z$D7pK8iS!bGLhX|&DKfeKe&C-2jSwCqpy2@i^GS`p{Lxve%#gQr&-lLqxXN)o2Sok z=$A`MPhYU8(lBEKbw#u5`F=;A`^j5I!fOT{vUfctRMoHHj2_nz>rk9u+kK;qQp54} z(ixUH$@LNo>`~UL$B%W*+W56KXKy-f?2^l)l})>Q<~}{ z=>H71Gi(k&zB3jkRlpnf)PhQgkfek^Vge1J5{85Y!nKNE&X0~L61=&OyB<-MyrYgn z=8a1r`djJ;R-6n39ztEDNOr)s&^pl)a)Fo-1L8mg_=y5VL3Ah*;=(0ASRM?v&6k2t8*yc70ZGTTuri=Q|+ZyL0D7dPb?lP&D%8l z;LFpUF}xVEJ>veBwk!vqz|(c}mP%QVhe*q2K)a9^%iM3-<*%+WQM&tO5UbxyI`ljy zEb8tML7UvdF^oW*YP7$!|E0?97svJ<`Ks)_0g*e`&-9}mrNpesK~2M_w}7A(x^rCD znpeJc>`hHEu}Q~w{@0|Hk!wHrY{fs%h@~->yK&NXt1TnNK5Ya#uGIk$aebdI%KVZZC!n6yY5O0vP)HQ`uggK z0e1n2{=Hwj>|XaIEn68Jx?jO9Gv1@QpooXW03K58$6BCCJj5rMkRyC|Wc{zd2hH$7 zO31xd0u^EJ!u0)*An3tCS7!QyHtwm z+o%@3^B4QxgQymwQIha_k*#zhxvP$;b!xmmgIhHt7r|8Tg$Z=*n%!ka*;nu zkdr0{xmPx5$NH!(`dkzoMR~Nlla3v?-1l~YVuth>7QS~F7Kr+_CX_eb5rChM?!n1EF$I(@To T`>xjor2he>K@jvWkwJRWB`#{9 From aa257ec73ed96782821fc90e3aa9698813fa8385 Mon Sep 17 00:00:00 2001 From: Trevor Spiteri Date: Mon, 7 Jan 2019 14:03:46 +0100 Subject: [PATCH 08/46] Replace Heuristica with Source Serif Pro italic in rustdoc.css --- src/librustdoc/html/static/rustdoc.css | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/librustdoc/html/static/rustdoc.css b/src/librustdoc/html/static/rustdoc.css index 2cc0b5e30b893..14273c6b1db33 100644 --- a/src/librustdoc/html/static/rustdoc.css +++ b/src/librustdoc/html/static/rustdoc.css @@ -12,25 +12,24 @@ src: local('Fira Sans Medium'), url("FiraSans-Medium.woff") format('woff'); } -/* See SourceSerifPro-LICENSE.txt for the Source Serif Pro license and - * Heuristica-LICENSE.txt for the Heuristica license. */ +/* See SourceSerifPro-LICENSE.txt for the Source Serif Pro license. */ @font-face { font-family: 'Source Serif Pro'; font-style: normal; font-weight: 400; - src: local('Source Serif Pro'), url("SourceSerifPro-Regular.woff") format('woff'); + src: local('Source Serif Pro'), url("SourceSerifPro-Regular.ttf.woff") format('woff'); } @font-face { font-family: 'Source Serif Pro'; font-style: italic; font-weight: 400; - src: url("Heuristica-Italic.woff") format('woff'); + src: local('Source Serif Pro Italic'), url("SourceSerifPro-It.ttf.woff") format('woff'); } @font-face { font-family: 'Source Serif Pro'; font-style: normal; font-weight: 700; - src: local('Source Serif Pro Bold'), url("SourceSerifPro-Bold.woff") format('woff'); + src: local('Source Serif Pro Bold'), url("SourceSerifPro-Bold.ttf.woff") format('woff'); } /* See SourceCodePro-LICENSE.txt for the Source Code Pro license. */ From d2ac094c99993d0bf3be2b480bf63605f1b39ab3 Mon Sep 17 00:00:00 2001 From: Trevor Spiteri Date: Mon, 7 Jan 2019 14:27:50 +0100 Subject: [PATCH 09/46] Update static files code for updated Source Serif Pro font --- src/librustdoc/html/render.rs | 10 ++++------ src/librustdoc/html/static_files.rs | 21 ++++++++------------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index 184d5b24d6e12..b48951d7593b6 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -893,14 +893,12 @@ themePicker.onblur = handleThemeButtonsBlur; static_files::fira_sans::MEDIUM)?; write(cx.dst.join("FiraSans-LICENSE.txt"), static_files::fira_sans::LICENSE)?; - write(cx.dst.join("Heuristica-Italic.woff"), - static_files::heuristica::ITALIC)?; - write(cx.dst.join("Heuristica-LICENSE.txt"), - static_files::heuristica::LICENSE)?; - write(cx.dst.join("SourceSerifPro-Regular.woff"), + write(cx.dst.join("SourceSerifPro-Regular.ttf.woff"), static_files::source_serif_pro::REGULAR)?; - write(cx.dst.join("SourceSerifPro-Bold.woff"), + write(cx.dst.join("SourceSerifPro-Bold.ttf.woff"), static_files::source_serif_pro::BOLD)?; + write(cx.dst.join("SourceSerifPro-It.ttf.woff"), + static_files::source_serif_pro::ITALIC)?; write(cx.dst.join("SourceSerifPro-LICENSE.txt"), static_files::source_serif_pro::LICENSE)?; write(cx.dst.join("SourceCodePro-Regular.woff"), diff --git a/src/librustdoc/html/static_files.rs b/src/librustdoc/html/static_files.rs index 47629d058e31a..f340590e5fe33 100644 --- a/src/librustdoc/html/static_files.rs +++ b/src/librustdoc/html/static_files.rs @@ -73,22 +73,17 @@ pub mod fira_sans { pub static LICENSE: &'static [u8] = include_bytes!("static/FiraSans-LICENSE.txt"); } -/// Files related to the Heuristica font. -pub mod heuristica { - /// The file `Heuristica-Italic.woff`, the Italic variant of the Heuristica font. - pub static ITALIC: &'static [u8] = include_bytes!("static/Heuristica-Italic.woff"); - - /// The file `Heuristica-LICENSE.txt`, the license text for the Heuristica font. - pub static LICENSE: &'static [u8] = include_bytes!("static/Heuristica-LICENSE.txt"); -} - /// Files related to the Source Serif Pro font. pub mod source_serif_pro { - /// The file `SourceSerifPro-Regular.woff`, the Regular variant of the Source Serif Pro font. - pub static REGULAR: &'static [u8] = include_bytes!("static/SourceSerifPro-Regular.woff"); + /// The file `SourceSerifPro-Regular.ttf.woff`, the Regular variant of the Source Serif Pro + /// font. + pub static REGULAR: &'static [u8] = include_bytes!("static/SourceSerifPro-Regular.ttf.woff"); + + /// The file `SourceSerifPro-Bold.ttf.woff`, the Bold variant of the Source Serif Pro font. + pub static BOLD: &'static [u8] = include_bytes!("static/SourceSerifPro-Bold.ttf.woff"); - /// The file `SourceSerifPro-Bold.woff`, the Bold variant of the Source Serif Pro font. - pub static BOLD: &'static [u8] = include_bytes!("static/SourceSerifPro-Bold.woff"); + /// The file `SourceSerifPro-It.ttf.woff`, the Italic variant of the Source Serif Pro font. + pub static ITALIC: &'static [u8] = include_bytes!("static/SourceSerifPro-It.ttf.woff"); /// The file `SourceSerifPro-LICENSE.txt`, the license text for the Source Serif Pro font. pub static LICENSE: &'static [u8] = include_bytes!("static/SourceSerifPro-LICENSE.txt"); From dac6eeca92e08a252fa952a1e89f6cd9cb6ba6f5 Mon Sep 17 00:00:00 2001 From: QuietMisdreavus Date: Thu, 20 Dec 2018 15:10:07 -0600 Subject: [PATCH 10/46] semi-revert libsyntax doctest parsing if a macro is wrapping main --- src/librustdoc/test.rs | 51 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/src/librustdoc/test.rs b/src/librustdoc/test.rs index 2170054b532b9..1f19fa2e7f598 100644 --- a/src/librustdoc/test.rs +++ b/src/librustdoc/test.rs @@ -394,7 +394,7 @@ pub fn make_test(s: &str, // Uses libsyntax to parse the doctest and find if there's a main fn and the extern // crate already is included. - let (already_has_main, already_has_extern_crate) = crate::syntax::with_globals(|| { + let (already_has_main, already_has_extern_crate, found_macro) = crate::syntax::with_globals(|| { use crate::syntax::{ast, parse::{self, ParseSess}, source_map::FilePathMapping}; use crate::syntax_pos::FileName; use errors::emitter::EmitterWriter; @@ -412,6 +412,7 @@ pub fn make_test(s: &str, let mut found_main = false; let mut found_extern_crate = cratename.is_none(); + let mut found_macro = false; let mut parser = match parse::maybe_new_parser_from_source_str(&sess, filename, source) { Ok(p) => p, @@ -420,7 +421,7 @@ pub fn make_test(s: &str, err.cancel(); } - return (found_main, found_extern_crate); + return (found_main, found_extern_crate, found_macro); } }; @@ -448,6 +449,12 @@ pub fn make_test(s: &str, } } + if !found_macro { + if let ast::ItemKind::Mac(..) = item.node { + found_macro = true; + } + } + if found_main && found_extern_crate { break; } @@ -460,9 +467,28 @@ pub fn make_test(s: &str, } } - (found_main, found_extern_crate) + (found_main, found_extern_crate, found_macro) }); + // If a doctest's `fn main` is being masked by a wrapper macro, the parsing loop above won't + // see it. In that case, run the old text-based scan to see if they at least have a main + // function written inside a macro invocation. See + // https://github.com/rust-lang/rust/issues/56898 + let already_has_main = if found_macro && !already_has_main { + s.lines() + .map(|line| { + let comment = line.find("//"); + if let Some(comment_begins) = comment { + &line[0..comment_begins] + } else { + line + } + }) + .any(|code| code.contains("fn main")) + } else { + already_has_main + }; + // Don't inject `extern crate std` because it's already injected by the // compiler. if !already_has_extern_crate && !opts.no_crate_inject && cratename != Some("std") { @@ -1143,4 +1169,23 @@ assert_eq!(asdf::foo, 4); let output = make_test(input, Some("asdf"), false, &opts); assert_eq!(output, (expected, 3)); } + + #[test] + fn make_test_main_in_macro() { + let opts = TestOptions::default(); + let input = +"#[macro_use] extern crate my_crate; +test_wrapper! { + fn main() {} +}"; + let expected = +"#![allow(unused)] +#[macro_use] extern crate my_crate; +test_wrapper! { + fn main() {} +}".to_string(); + + let output = make_test(input, Some("my_crate"), false, &opts); + assert_eq!(output, (expected, 1)); + } } From 68b8b438c3dd641f187e59035589b498e231f4cc Mon Sep 17 00:00:00 2001 From: Dylan MacKenzie Date: Mon, 7 Jan 2019 21:03:41 -0800 Subject: [PATCH 11/46] Add link destination for `read-ownership` --- src/libcore/ptr.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libcore/ptr.rs b/src/libcore/ptr.rs index 55a72d7a9a94d..02eef07afd7ab 100644 --- a/src/libcore/ptr.rs +++ b/src/libcore/ptr.rs @@ -849,6 +849,7 @@ pub unsafe fn write_unaligned(dst: *mut T, src: T) { /// [valid]: ../ptr/index.html#safety /// [`Copy`]: ../marker/trait.Copy.html /// [`read`]: ./fn.read.html +/// [read-ownership]: ./fn.read.html#ownership-of-the-returned-value /// /// Just like in C, whether an operation is volatile has no bearing whatsoever /// on questions involving concurrent access from multiple threads. Volatile From 8780ebff1f7468f0be64b81f81b72bce1301433a Mon Sep 17 00:00:00 2001 From: Nicholas Nethercote Date: Tue, 8 Jan 2019 16:13:22 +1100 Subject: [PATCH 12/46] Remove `CrateNum::Invalid`. It's unused. --- src/librustc/hir/def_id.rs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/librustc/hir/def_id.rs b/src/librustc/hir/def_id.rs index fb2c873d740ca..0a8c72a0ad8ec 100644 --- a/src/librustc/hir/def_id.rs +++ b/src/librustc/hir/def_id.rs @@ -17,8 +17,6 @@ pub enum CrateNum { // FIXME(jseyfried): this is also used for custom derives until proc-macro crates get // `CrateNum`s. BuiltinMacros, - /// A CrateNum value that indicates that something is wrong. - Invalid, /// A special CrateNum that we use for the tcx.rcache when decoding from /// the incr. comp. cache. ReservedForIncrCompCache, @@ -29,7 +27,6 @@ impl ::std::fmt::Debug for CrateNum { fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result { match self { CrateNum::Index(id) => write!(fmt, "crate{}", id.private), - CrateNum::Invalid => write!(fmt, "invalid crate"), CrateNum::BuiltinMacros => write!(fmt, "builtin macros crate"), CrateNum::ReservedForIncrCompCache => write!(fmt, "crate for decoding incr comp cache"), } @@ -90,7 +87,6 @@ impl fmt::Display for CrateNum { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { CrateNum::Index(id) => fmt::Display::fmt(&id.private, f), - CrateNum::Invalid => write!(f, "invalid crate"), CrateNum::BuiltinMacros => write!(f, "builtin macros crate"), CrateNum::ReservedForIncrCompCache => write!(f, "crate for decoding incr comp cache"), } From 4166a4e5d0ef32ceb0d67d1f5dba334caf439a0d Mon Sep 17 00:00:00 2001 From: Vardhan Thigle Date: Thu, 3 Jan 2019 10:46:22 +0530 Subject: [PATCH 13/46] Supporting backtrace for x86_64-fortanix-unknown-sgx. --- src/libstd/lib.rs | 2 +- src/libstd/sys/sgx/backtrace.rs | 91 +++++++++++++++++++++++++++++---- 2 files changed, 83 insertions(+), 10 deletions(-) diff --git a/src/libstd/lib.rs b/src/libstd/lib.rs index ccfce672e5f9e..2f35b58106eab 100644 --- a/src/libstd/lib.rs +++ b/src/libstd/lib.rs @@ -305,7 +305,7 @@ #![feature(maybe_uninit)] #![cfg_attr(all(target_vendor = "fortanix", target_env = "sgx"), feature(global_asm, range_contains, slice_index_methods, - decl_macro, coerce_unsized, sgx_platform))] + decl_macro, coerce_unsized, sgx_platform, ptr_wrapping_offset_from))] #![default_lib_allocator] diff --git a/src/libstd/sys/sgx/backtrace.rs b/src/libstd/sys/sgx/backtrace.rs index 52d4a63bb6384..7e792300f434c 100644 --- a/src/libstd/sys/sgx/backtrace.rs +++ b/src/libstd/sys/sgx/backtrace.rs @@ -1,21 +1,94 @@ use io; -use sys::unsupported; +use error::Error; +use libc; use sys_common::backtrace::Frame; +use unwind as uw; pub struct BacktraceContext; -pub fn unwind_backtrace(_frames: &mut [Frame]) - -> io::Result<(usize, BacktraceContext)> -{ - unsupported() +struct Context<'a> { + idx: usize, + frames: &'a mut [Frame], +} + +#[derive(Debug)] +struct UnwindError(uw::_Unwind_Reason_Code); + +impl Error for UnwindError { + fn description(&self) -> &'static str { + "unexpected return value while unwinding" + } +} + +impl ::fmt::Display for UnwindError { + fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result { + write!(f, "{}: {:?}", self.description(), self.0) + } +} + +#[inline(never)] // this function call can be skipped it when tracing. +pub fn unwind_backtrace(frames: &mut [Frame]) -> io::Result<(usize, BacktraceContext)> { + let mut cx = Context { idx: 0, frames }; + let result_unwind = + unsafe { uw::_Unwind_Backtrace(trace_fn, &mut cx as *mut Context as *mut libc::c_void) }; + // See libunwind:src/unwind/Backtrace.c for the return values. + // No, there is no doc. + let res = match result_unwind { + // These return codes seem to be benign and need to be ignored for backtraces + // to show up properly on all tested platforms. + uw::_URC_END_OF_STACK | uw::_URC_FATAL_PHASE1_ERROR | uw::_URC_FAILURE => { + Ok((cx.idx, BacktraceContext)) + } + _ => Err(io::Error::new( + io::ErrorKind::Other, + UnwindError(result_unwind), + )), + }; + res } -pub fn resolve_symname(_frame: Frame, - _callback: F, +extern "C" fn trace_fn( + ctx: *mut uw::_Unwind_Context, + arg: *mut libc::c_void, +) -> uw::_Unwind_Reason_Code { + let cx = unsafe { &mut *(arg as *mut Context) }; + if cx.idx >= cx.frames.len() { + return uw::_URC_NORMAL_STOP; + } + + let mut ip_before_insn = 0; + let mut ip = unsafe { uw::_Unwind_GetIPInfo(ctx, &mut ip_before_insn) as *mut libc::c_void }; + if !ip.is_null() && ip_before_insn == 0 { + // this is a non-signaling frame, so `ip` refers to the address + // after the calling instruction. account for that. + ip = (ip as usize - 1) as *mut _; + } + + let symaddr = unsafe { uw::_Unwind_FindEnclosingFunction(ip) }; + cx.frames[cx.idx] = Frame { + symbol_addr: symaddr as *mut u8, + exact_position: ip as *mut u8, + inline_context: 0, + }; + cx.idx += 1; + + uw::_URC_NO_REASON +} + +extern { + static IMAGE_BASE: u8; +} + + +// To reduce TCB size in Sgx enclave, we do not want to implement resolve_symname functionality. +// Rather, we print the offset of the address here, which could be later mapped to correct function. +pub fn resolve_symname(frame: Frame, + callback: F, _: &BacktraceContext) -> io::Result<()> where F: FnOnce(Option<&str>) -> io::Result<()> { - unsupported() + callback(Some(&format!("0x{:x}", + (unsafe {frame.symbol_addr.wrapping_offset_from(&IMAGE_BASE)})))) } pub fn foreach_symbol_fileline(_: Frame, @@ -23,5 +96,5 @@ pub fn foreach_symbol_fileline(_: Frame, _: &BacktraceContext) -> io::Result where F: FnMut(&[u8], u32) -> io::Result<()> { - unsupported() + Ok(false) } From 564a24c772c6eb6dcad0388a80b8987bc57bf614 Mon Sep 17 00:00:00 2001 From: Czipperz Date: Sat, 29 Dec 2018 02:09:21 -0500 Subject: [PATCH 14/46] Change std::error::Error trait documentation to talk about `source` instead of `cause` --- src/libstd/error.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/libstd/error.rs b/src/libstd/error.rs index f026cadd639c3..2f9efb3f0fb57 100644 --- a/src/libstd/error.rs +++ b/src/libstd/error.rs @@ -30,17 +30,17 @@ use string; /// themselves through the [`Display`] and [`Debug`] traits, and may provide /// cause chain information: /// -/// The [`cause`] method is generally used when errors cross "abstraction -/// boundaries", i.e., when a one module must report an error that is "caused" -/// by an error from a lower-level module. This setup makes it possible for the -/// high-level module to provide its own errors that do not commit to any -/// particular implementation, but also reveal some of its implementation for -/// debugging via [`cause`] chains. +/// The [`source`] method is generally used when errors cross "abstraction +/// boundaries". If one module must report an error that is caused by an error +/// from a lower-level module, it can allow access to that error via the +/// [`source`] method. This makes it possible for the high-level module to +/// provide its own errors while also revealing some of the implementation for +/// debugging via [`source`] chains. /// /// [`Result`]: ../result/enum.Result.html /// [`Display`]: ../fmt/trait.Display.html /// [`Debug`]: ../fmt/trait.Debug.html -/// [`cause`]: trait.Error.html#method.cause +/// [`source`]: trait.Error.html#method.source #[stable(feature = "rust1", since = "1.0.0")] pub trait Error: Debug + Display { /// **This method is soft-deprecated.** From d1b65fb691b49aecc567593a14d5c6690d3fd90c Mon Sep 17 00:00:00 2001 From: varkor Date: Tue, 8 Jan 2019 23:50:51 +0000 Subject: [PATCH 15/46] Add issue reference to E0202 message --- src/librustc_typeck/collect.rs | 2 +- src/test/ui/assoc-inherent.rs | 4 ++-- src/test/ui/assoc-inherent.stderr | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/librustc_typeck/collect.rs b/src/librustc_typeck/collect.rs index 9fc2f11b19738..03945912cb4c1 100644 --- a/src/librustc_typeck/collect.rs +++ b/src/librustc_typeck/collect.rs @@ -1107,7 +1107,7 @@ fn report_assoc_ty_on_inherent_impl<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, span: tcx.sess, span, E0202, - "associated types are not allowed in inherent impls" + "associated types are not yet supported in inherent impls (see #8995)" ); } diff --git a/src/test/ui/assoc-inherent.rs b/src/test/ui/assoc-inherent.rs index fe34be3731736..05329a2714257 100644 --- a/src/test/ui/assoc-inherent.rs +++ b/src/test/ui/assoc-inherent.rs @@ -1,9 +1,9 @@ -// Test associated types are forbidden in inherent impls. +// Test associated types are, until #8995 is implemented, forbidden in inherent impls. struct Foo; impl Foo { - type Bar = isize; //~ERROR associated types are not allowed in inherent impls + type Bar = isize; //~ERROR associated types are not yet supported in inherent impls (see #8995) } fn main() {} diff --git a/src/test/ui/assoc-inherent.stderr b/src/test/ui/assoc-inherent.stderr index 1a555bd53ac83..f438ac8df4a09 100644 --- a/src/test/ui/assoc-inherent.stderr +++ b/src/test/ui/assoc-inherent.stderr @@ -1,7 +1,7 @@ -error[E0202]: associated types are not allowed in inherent impls +error[E0202]: associated types are not yet supported in inherent impls (see #8995) --> $DIR/assoc-inherent.rs:6:5 | -LL | type Bar = isize; //~ERROR associated types are not allowed in inherent impls +LL | type Bar = isize; //~ERROR associated types are not yet supported in inherent impls (see #8995) | ^^^^^^^^^^^^^^^^^ error: aborting due to previous error From ac4a4547ba674b6d9d0e3b3e018be94d32766faa Mon Sep 17 00:00:00 2001 From: varkor Date: Tue, 8 Jan 2019 23:53:43 +0000 Subject: [PATCH 16/46] Consolidate equality constraints error message --- src/librustc_passes/ast_validation.rs | 5 +++-- src/test/ui/where-clauses/where-equality-constraints.stderr | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/librustc_passes/ast_validation.rs b/src/librustc_passes/ast_validation.rs index 584f0ba0449e1..3d0e46d998622 100644 --- a/src/librustc_passes/ast_validation.rs +++ b/src/librustc_passes/ast_validation.rs @@ -438,8 +438,9 @@ impl<'a> Visitor<'a> for AstValidator<'a> { } for predicate in &generics.where_clause.predicates { if let WherePredicate::EqPredicate(ref predicate) = *predicate { - self.err_handler().span_err(predicate.span, "equality constraints are not yet \ - supported in where clauses (#20041)"); + self.err_handler() + .span_err(predicate.span, "equality constraints are not yet \ + supported in where clauses (see #20041)"); } } visit::walk_generics(self, generics) diff --git a/src/test/ui/where-clauses/where-equality-constraints.stderr b/src/test/ui/where-clauses/where-equality-constraints.stderr index 56caaaeee401e..220447079c629 100644 --- a/src/test/ui/where-clauses/where-equality-constraints.stderr +++ b/src/test/ui/where-clauses/where-equality-constraints.stderr @@ -1,10 +1,10 @@ -error: equality constraints are not yet supported in where clauses (#20041) +error: equality constraints are not yet supported in where clauses (see #20041) --> $DIR/where-equality-constraints.rs:1:14 | LL | fn f() where u8 = u16 {} | ^^^^^^^^ -error: equality constraints are not yet supported in where clauses (#20041) +error: equality constraints are not yet supported in where clauses (see #20041) --> $DIR/where-equality-constraints.rs:3:14 | LL | fn g() where for<'a> &'static (u8,) == u16, {} From 47db51eecee943dc2af1adc467d1ff47685e6d09 Mon Sep 17 00:00:00 2001 From: Blitzerr Date: Sun, 16 Dec 2018 17:01:57 -0800 Subject: [PATCH 17/46] Issue 56905 Adding a map to TypeckTables to get the list of all the Upvars given a closureID. This is help us get rid of the recurring pattern in the codebase of iterating over the free vars using with_freevars. --- src/librustc/ty/context.rs | 10 ++++++++++ src/librustc/ty/mod.rs | 2 ++ src/librustc_typeck/check/upvar.rs | 18 ++++++++++++------ 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index c0ba4329ae05c..aebf71791bc60 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -417,6 +417,12 @@ pub struct TypeckTables<'tcx> { /// All the existential types that are restricted to concrete types /// by this function pub concrete_existential_types: FxHashMap>, + + /// Given the closure ID this map provides the list of UpvarIDs used by it. + /// The upvarID contains the HIR node ID and it also contains the full path + /// leading to the member of the struct or tuple that is used instead of the + /// entire variable. + pub upvar_list: ty::UpvarListMap<'tcx>, } impl<'tcx> TypeckTables<'tcx> { @@ -441,6 +447,7 @@ impl<'tcx> TypeckTables<'tcx> { tainted_by_errors: false, free_region_map: Default::default(), concrete_existential_types: Default::default(), + upvar_list: Default::default(), } } @@ -741,6 +748,8 @@ impl<'a, 'gcx> HashStable> for TypeckTables<'gcx> { tainted_by_errors, ref free_region_map, ref concrete_existential_types, + ref upvar_list, + } = *self; hcx.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| { @@ -783,6 +792,7 @@ impl<'a, 'gcx> HashStable> for TypeckTables<'gcx> { tainted_by_errors.hash_stable(hcx, hasher); free_region_map.hash_stable(hcx, hasher); concrete_existential_types.hash_stable(hcx, hasher); + upvar_list.hash_stable(hcx, hasher); }) } } diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index a2c96e7cf9f66..f770f2bf7b125 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -589,6 +589,8 @@ impl<'a, 'gcx> HashStable> for ty::TyS<'gcx> { pub type Ty<'tcx> = &'tcx TyS<'tcx>; +pub type UpvarListMap<'tcx> = FxHashMap>; + impl<'tcx> serialize::UseSpecializedEncodable for Ty<'tcx> {} impl<'tcx> serialize::UseSpecializedDecodable for Ty<'tcx> {} diff --git a/src/librustc_typeck/check/upvar.rs b/src/librustc_typeck/check/upvar.rs index 86165d50b27e4..c37e0e262cf5f 100644 --- a/src/librustc_typeck/check/upvar.rs +++ b/src/librustc_typeck/check/upvar.rs @@ -122,14 +122,16 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { }; self.tcx.with_freevars(closure_node_id, |freevars| { + let mut freevar_list: Vec = Vec::new(); for freevar in freevars { let upvar_id = ty::UpvarId { var_path: ty::UpvarPath { - hir_id : self.tcx.hir().node_to_hir_id(freevar.var_id()), + hir_id: self.tcx.hir().node_to_hir_id(freevar.var_id()), }, closure_expr_id: LocalDefId::from_def_id(closure_def_id), }; debug!("seed upvar_id {:?}", upvar_id); + freevar_list.push(upvar_id); let capture_kind = match capture_clause { hir::CaptureByValue => ty::UpvarCapture::ByValue, @@ -149,6 +151,10 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { .upvar_capture_map .insert(upvar_id, capture_kind); } + self.tables + .borrow_mut() + .upvar_list + .insert(closure_def_id, freevar_list); }); let body_owner_def_id = self.tcx.hir().body_owner_def_id(body.id()); @@ -166,7 +172,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { self.param_env, region_scope_tree, &self.tables.borrow(), - ).consume_body(body); + ) + .consume_body(body); if let Some(closure_substs) = infer_kind { // Unify the (as yet unbound) type variable in the closure @@ -240,9 +247,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { let var_hir_id = tcx.hir().node_to_hir_id(var_node_id); let freevar_ty = self.node_ty(var_hir_id); let upvar_id = ty::UpvarId { - var_path: ty::UpvarPath { - hir_id: var_hir_id, - }, + var_path: ty::UpvarPath { hir_id: var_hir_id }, closure_expr_id: LocalDefId::from_def_id(closure_def_index), }; let capture = self.tables.borrow().upvar_capture(upvar_id); @@ -262,7 +267,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { }, ), } - }).collect() + }) + .collect() }) } } From 410b52958da4434c2638da15e6c6c9a7ef665761 Mon Sep 17 00:00:00 2001 From: Blitzerr Date: Tue, 18 Dec 2018 20:54:35 -0800 Subject: [PATCH 18/46] Creating the vector using with_capacity to avoid re-allocation later on (#56905) --- src/librustc_typeck/check/upvar.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/librustc_typeck/check/upvar.rs b/src/librustc_typeck/check/upvar.rs index c37e0e262cf5f..2a50f63b7925b 100644 --- a/src/librustc_typeck/check/upvar.rs +++ b/src/librustc_typeck/check/upvar.rs @@ -122,7 +122,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { }; self.tcx.with_freevars(closure_node_id, |freevars| { - let mut freevar_list: Vec = Vec::new(); + let mut freevar_list: Vec = Vec::with_capacity(freevars.len()); for freevar in freevars { let upvar_id = ty::UpvarId { var_path: ty::UpvarPath { @@ -131,6 +131,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { closure_expr_id: LocalDefId::from_def_id(closure_def_id), }; debug!("seed upvar_id {:?}", upvar_id); + // Adding the upvar Id to the list of Upvars, which will be added + // to the map for the closure at the end of the for loop. freevar_list.push(upvar_id); let capture_kind = match capture_clause { @@ -151,6 +153,9 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { .upvar_capture_map .insert(upvar_id, capture_kind); } + // Add the vector of freevars to the map keyed with the closure id. + // This gives us an easier access to them without having to call + // with_freevars again.. self.tables .borrow_mut() .upvar_list From 7853b780fc678e670362690ddeb8648d552db0bf Mon Sep 17 00:00:00 2001 From: Blitzerr Date: Fri, 21 Dec 2018 20:00:11 -0800 Subject: [PATCH 19/46] Some more refactoring. Change the key of UpvarListMap from DefId to ast::NodeId --- src/librustc/ty/mod.rs | 3 +-- src/librustc_mir/build/mod.rs | 1 + src/librustc_typeck/check/upvar.rs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index f770f2bf7b125..8afe0241ac863 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -589,8 +589,6 @@ impl<'a, 'gcx> HashStable> for ty::TyS<'gcx> { pub type Ty<'tcx> = &'tcx TyS<'tcx>; -pub type UpvarListMap<'tcx> = FxHashMap>; - impl<'tcx> serialize::UseSpecializedEncodable for Ty<'tcx> {} impl<'tcx> serialize::UseSpecializedDecodable for Ty<'tcx> {} @@ -810,6 +808,7 @@ pub struct UpvarBorrow<'tcx> { pub region: ty::Region<'tcx>, } +pub type UpvarListMap<'tcx> = FxHashMap>; pub type UpvarCaptureMap<'tcx> = FxHashMap>; #[derive(Copy, Clone)] diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs index 727b769cf4d44..4b0907f808364 100644 --- a/src/librustc_mir/build/mod.rs +++ b/src/librustc_mir/build/mod.rs @@ -642,6 +642,7 @@ fn construct_fn<'a, 'gcx, 'tcx, A>(hir: Cx<'a, 'gcx, 'tcx>, let tcx = hir.tcx(); let span = tcx.hir().span(fn_id); + // hir.tables().upvar_list[fn_id]. // Gather the upvars of a closure, if any. let upvar_decls: Vec<_> = tcx.with_freevars(fn_id, |freevars| { freevars.iter().map(|fv| { diff --git a/src/librustc_typeck/check/upvar.rs b/src/librustc_typeck/check/upvar.rs index 2a50f63b7925b..24d13d9c2acfa 100644 --- a/src/librustc_typeck/check/upvar.rs +++ b/src/librustc_typeck/check/upvar.rs @@ -159,7 +159,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { self.tables .borrow_mut() .upvar_list - .insert(closure_def_id, freevar_list); + .insert(closure_node_id, freevar_list); }); let body_owner_def_id = self.tcx.hir().body_owner_def_id(body.id()); From 15d8e8fb2b5ae3c1493b82077a2c5d3252926227 Mon Sep 17 00:00:00 2001 From: Blitzerr Date: Sat, 22 Dec 2018 15:06:14 -0800 Subject: [PATCH 20/46] [Cleanup] This is the first in the series of removals of with_freevars usage. Currently, there are many places in rustc, where we use with_freevars to iterate over freevars of a closure. The problem with this is the argument to with_freevars is a NodeId and this will get in the way of our eventual goal of solving for issue (#53488), sub-issue (#56905) --- src/librustc/ty/context.rs | 2 +- src/librustc/ty/mod.rs | 2 +- src/librustc_mir/build/mod.rs | 77 +++++++++++++------------- src/librustc_typeck/check/upvar.rs | 10 ++-- src/librustc_typeck/check/writeback.rs | 29 +++++++++- 5 files changed, 74 insertions(+), 46 deletions(-) diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index aebf71791bc60..8d4b8aae8b176 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -422,7 +422,7 @@ pub struct TypeckTables<'tcx> { /// The upvarID contains the HIR node ID and it also contains the full path /// leading to the member of the struct or tuple that is used instead of the /// entire variable. - pub upvar_list: ty::UpvarListMap<'tcx>, + pub upvar_list: ty::UpvarListMap, } impl<'tcx> TypeckTables<'tcx> { diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index 8afe0241ac863..cfd99948e4370 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -808,7 +808,7 @@ pub struct UpvarBorrow<'tcx> { pub region: ty::Region<'tcx>, } -pub type UpvarListMap<'tcx> = FxHashMap>; +pub type UpvarListMap = FxHashMap>; pub type UpvarCaptureMap<'tcx> = FxHashMap>; #[derive(Copy, Clone)] diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs index 4b0907f808364..b1a377591e310 100644 --- a/src/librustc_mir/build/mod.rs +++ b/src/librustc_mir/build/mod.rs @@ -4,7 +4,7 @@ use hair::cx::Cx; use hair::{LintLevel, BindingMode, PatternKind}; use rustc::hir; use rustc::hir::Node; -use rustc::hir::def_id::{DefId, LocalDefId}; +use rustc::hir::def_id::DefId; use rustc::middle::region; use rustc::mir::*; use rustc::mir::visit::{MutVisitor, TyContext}; @@ -640,47 +640,49 @@ fn construct_fn<'a, 'gcx, 'tcx, A>(hir: Cx<'a, 'gcx, 'tcx>, let arguments: Vec<_> = arguments.collect(); let tcx = hir.tcx(); - let span = tcx.hir().span(fn_id); + let tcx_hir = tcx.hir(); + let span = tcx_hir.span(fn_id); - // hir.tables().upvar_list[fn_id]. - // Gather the upvars of a closure, if any. - let upvar_decls: Vec<_> = tcx.with_freevars(fn_id, |freevars| { - freevars.iter().map(|fv| { - let var_id = fv.var_id(); - let var_hir_id = tcx.hir().node_to_hir_id(var_id); - let closure_expr_id = tcx.hir().local_def_id(fn_id); - let capture = hir.tables().upvar_capture(ty::UpvarId { - var_path: ty::UpvarPath {hir_id: var_hir_id}, - closure_expr_id: LocalDefId::from_def_id(closure_expr_id), - }); - let by_ref = match capture { - ty::UpvarCapture::ByValue => false, - ty::UpvarCapture::ByRef(..) => true - }; - let mut decl = UpvarDecl { - debug_name: keywords::Invalid.name(), - var_hir_id: ClearCrossCrate::Set(var_hir_id), - by_ref, - mutability: Mutability::Not, - }; - if let Some(Node::Binding(pat)) = tcx.hir().find(var_id) { - if let hir::PatKind::Binding(_, _, ident, _) = pat.node { - decl.debug_name = ident.name; + let hir_tables = hir.tables(); + let fn_def_id = tcx_hir.local_def_id(fn_id); - if let Some(&bm) = hir.tables.pat_binding_modes().get(pat.hir_id) { - if bm == ty::BindByValue(hir::MutMutable) { - decl.mutability = Mutability::Mut; + // Gather the upvars of a closure, if any. + let upvar_decls: Vec<_> = match hir_tables.upvar_list.get(&fn_def_id) { + Some(upvars) => upvars + .iter() + .map(|upvar_id| { + let var_hir_id = upvar_id.var_path.hir_id; + let var_node_id = tcx_hir.hir_to_node_id(var_hir_id); + let capture = hir_tables.upvar_capture(*upvar_id); + let by_ref = match capture { + ty::UpvarCapture::ByValue => false, + ty::UpvarCapture::ByRef(..) => true, + }; + let mut decl = UpvarDecl { + debug_name: keywords::Invalid.name(), + var_hir_id: ClearCrossCrate::Set(var_hir_id), + by_ref, + mutability: Mutability::Not, + }; + if let Some(Node::Binding(pat)) = tcx_hir.find(var_node_id) { + if let hir::PatKind::Binding(_, _, ident, _) = pat.node { + decl.debug_name = ident.name; + if let Some(&bm) = hir.tables.pat_binding_modes().get(pat.hir_id) { + if bm == ty::BindByValue(hir::MutMutable) { + decl.mutability = Mutability::Mut; + } else { + decl.mutability = Mutability::Not; + } } else { - decl.mutability = Mutability::Not; + tcx.sess.delay_span_bug(pat.span, "missing binding mode"); } - } else { - tcx.sess.delay_span_bug(pat.span, "missing binding mode"); } } - } - decl - }).collect() - }); + decl + }) + .collect(), + _ => vec![], + }; let mut builder = Builder::new(hir, span, @@ -690,7 +692,6 @@ fn construct_fn<'a, 'gcx, 'tcx, A>(hir: Cx<'a, 'gcx, 'tcx>, return_ty_span, upvar_decls); - let fn_def_id = tcx.hir().local_def_id(fn_id); let call_site_scope = region::Scope { id: body.value.hir_id.local_id, data: region::ScopeData::CallSite @@ -733,7 +734,7 @@ fn construct_fn<'a, 'gcx, 'tcx, A>(hir: Cx<'a, 'gcx, 'tcx>, // RustCall pseudo-ABI untuples the last argument. spread_arg = Some(Local::new(arguments.len())); } - let closure_expr_id = tcx.hir().local_def_id(fn_id); + let closure_expr_id = tcx_hir.local_def_id(fn_id); info!("fn_id {:?} has attrs {:?}", closure_expr_id, tcx.get_attrs(closure_expr_id)); diff --git a/src/librustc_typeck/check/upvar.rs b/src/librustc_typeck/check/upvar.rs index 24d13d9c2acfa..ffd7c2114e5ab 100644 --- a/src/librustc_typeck/check/upvar.rs +++ b/src/librustc_typeck/check/upvar.rs @@ -156,10 +156,12 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { // Add the vector of freevars to the map keyed with the closure id. // This gives us an easier access to them without having to call // with_freevars again.. - self.tables - .borrow_mut() - .upvar_list - .insert(closure_node_id, freevar_list); + if !freevar_list.is_empty() { + self.tables + .borrow_mut() + .upvar_list + .insert(closure_def_id, freevar_list); + } }); let body_owner_def_id = self.tcx.hir().body_owner_def_id(body.id()); diff --git a/src/librustc_typeck/check/writeback.rs b/src/librustc_typeck/check/writeback.rs index 38de936a027ff..8499a492bccec 100644 --- a/src/librustc_typeck/check/writeback.rs +++ b/src/librustc_typeck/check/writeback.rs @@ -20,6 +20,15 @@ use syntax_pos::Span; /////////////////////////////////////////////////////////////////////////// // Entry point +/// During type inference, partially inferred types are +/// represented using Type variables (ty::Infer). These don't appear in +/// the final TypeckTables since all of the types should have been +/// inferred once typeck_tables_of is done. +/// When type inference is running however, having to update the typeck +/// tables every time a new type is inferred would be unreasonably slow, +/// so instead all of the replacement happens at the end in +/// resolve_type_vars_in_body, which creates a new TypeTables which +/// doesn't contain any inference types. impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { pub fn resolve_type_vars_in_body(&self, body: &'gcx hir::Body) -> &'gcx ty::TypeckTables<'gcx> { @@ -35,7 +44,8 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { wbcx.visit_node_id(arg.pat.span, arg.hir_id); } wbcx.visit_body(body); - wbcx.visit_upvar_borrow_map(); + wbcx.visit_upvar_capture_map(); + wbcx.visit_upvar_list_map(); wbcx.visit_closures(); wbcx.visit_liberated_fn_sigs(); wbcx.visit_fru_field_types(); @@ -291,7 +301,7 @@ impl<'cx, 'gcx, 'tcx> Visitor<'gcx> for WritebackCx<'cx, 'gcx, 'tcx> { } impl<'cx, 'gcx, 'tcx> WritebackCx<'cx, 'gcx, 'tcx> { - fn visit_upvar_borrow_map(&mut self) { + fn visit_upvar_capture_map(&mut self) { for (upvar_id, upvar_capture) in self.fcx.tables.borrow().upvar_capture_map.iter() { let new_upvar_capture = match *upvar_capture { ty::UpvarCapture::ByValue => ty::UpvarCapture::ByValue, @@ -314,6 +324,21 @@ impl<'cx, 'gcx, 'tcx> WritebackCx<'cx, 'gcx, 'tcx> { } } + /// Runs through the function context's upvar list map and adds the same to + /// the TypeckTables. upvarlist is a hashmap of the list of upvars referred + /// to in a closure.. + fn visit_upvar_list_map(&mut self) { + for (closure_def_id, upvar_list) in self.fcx.tables.borrow().upvar_list.iter() { + debug!( + "UpvarIDs captured by closure {:?} are: {:?}", + closure_def_id, upvar_list + ); + self.tables + .upvar_list + .insert(*closure_def_id, upvar_list.to_vec()); + } + } + fn visit_closures(&mut self) { let fcx_tables = self.fcx.tables.borrow(); debug_assert_eq!(fcx_tables.local_id_root, self.tables.local_id_root); From 5052197e447a2279a63e8ef06179ca01b657eb9b Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Wed, 9 Jan 2019 04:17:24 +0100 Subject: [PATCH 21/46] explain safety for vec.set_len(0) --- src/liballoc/vec.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/liballoc/vec.rs b/src/liballoc/vec.rs index 30bcc034221d3..0da00b70f9e51 100644 --- a/src/liballoc/vec.rs +++ b/src/liballoc/vec.rs @@ -816,6 +816,9 @@ impl Vec { /// let mut vec = vec![vec![1, 0, 0], /// vec![0, 1, 0], /// vec![0, 0, 1]]; + /// // SAFETY: + /// // 1. `old_len..0` is empty so no elements need to be initialized. + /// // 2. `0 <= capacity` always holds whatever `capacity` is. /// unsafe { /// vec.set_len(0); /// } From 69e491815d927b3206c8acf88fbdbed8521e5955 Mon Sep 17 00:00:00 2001 From: Blitzerr Date: Tue, 8 Jan 2019 19:13:50 -0800 Subject: [PATCH 22/46] addressing Niko's comments --- src/librustc_mir/build/mod.rs | 68 ++++++++++++++------------ src/librustc_typeck/check/writeback.rs | 18 +++---- 2 files changed, 45 insertions(+), 41 deletions(-) diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs index b1a377591e310..65ae111fbc0fc 100644 --- a/src/librustc_mir/build/mod.rs +++ b/src/librustc_mir/build/mod.rs @@ -647,42 +647,46 @@ fn construct_fn<'a, 'gcx, 'tcx, A>(hir: Cx<'a, 'gcx, 'tcx>, let fn_def_id = tcx_hir.local_def_id(fn_id); // Gather the upvars of a closure, if any. - let upvar_decls: Vec<_> = match hir_tables.upvar_list.get(&fn_def_id) { - Some(upvars) => upvars - .iter() - .map(|upvar_id| { - let var_hir_id = upvar_id.var_path.hir_id; - let var_node_id = tcx_hir.hir_to_node_id(var_hir_id); - let capture = hir_tables.upvar_capture(*upvar_id); - let by_ref = match capture { - ty::UpvarCapture::ByValue => false, - ty::UpvarCapture::ByRef(..) => true, - }; - let mut decl = UpvarDecl { - debug_name: keywords::Invalid.name(), - var_hir_id: ClearCrossCrate::Set(var_hir_id), - by_ref, - mutability: Mutability::Not, - }; - if let Some(Node::Binding(pat)) = tcx_hir.find(var_node_id) { - if let hir::PatKind::Binding(_, _, ident, _) = pat.node { - decl.debug_name = ident.name; - if let Some(&bm) = hir.tables.pat_binding_modes().get(pat.hir_id) { - if bm == ty::BindByValue(hir::MutMutable) { - decl.mutability = Mutability::Mut; - } else { - decl.mutability = Mutability::Not; - } + // In analyze_closure() in upvar.rs we gathered a list of upvars used by a + // closure and we stored in a map called upvar_list in TypeckTables indexed + // with the closure's DefId. Here, we run through that vec of UpvarIds for + // the given closure and use the necessary information to create UpvarDecl. + let upvar_decls: Vec<_> = hir_tables + .upvar_list + .get(&fn_def_id) + .into_iter() + .flatten() + .map(|upvar_id| { + let var_hir_id = upvar_id.var_path.hir_id; + let var_node_id = tcx_hir.hir_to_node_id(var_hir_id); + let capture = hir_tables.upvar_capture(*upvar_id); + let by_ref = match capture { + ty::UpvarCapture::ByValue => false, + ty::UpvarCapture::ByRef(..) => true, + }; + let mut decl = UpvarDecl { + debug_name: keywords::Invalid.name(), + var_hir_id: ClearCrossCrate::Set(var_hir_id), + by_ref, + mutability: Mutability::Not, + }; + if let Some(Node::Binding(pat)) = tcx_hir.find(var_node_id) { + if let hir::PatKind::Binding(_, _, ident, _) = pat.node { + decl.debug_name = ident.name; + if let Some(&bm) = hir.tables.pat_binding_modes().get(pat.hir_id) { + if bm == ty::BindByValue(hir::MutMutable) { + decl.mutability = Mutability::Mut; } else { - tcx.sess.delay_span_bug(pat.span, "missing binding mode"); + decl.mutability = Mutability::Not; } + } else { + tcx.sess.delay_span_bug(pat.span, "missing binding mode"); } } - decl - }) - .collect(), - _ => vec![], - }; + } + decl + }) + .collect(); let mut builder = Builder::new(hir, span, diff --git a/src/librustc_typeck/check/writeback.rs b/src/librustc_typeck/check/writeback.rs index 8499a492bccec..c61159eb49481 100644 --- a/src/librustc_typeck/check/writeback.rs +++ b/src/librustc_typeck/check/writeback.rs @@ -20,16 +20,16 @@ use syntax_pos::Span; /////////////////////////////////////////////////////////////////////////// // Entry point -/// During type inference, partially inferred types are -/// represented using Type variables (ty::Infer). These don't appear in -/// the final TypeckTables since all of the types should have been -/// inferred once typeck_tables_of is done. -/// When type inference is running however, having to update the typeck -/// tables every time a new type is inferred would be unreasonably slow, -/// so instead all of the replacement happens at the end in -/// resolve_type_vars_in_body, which creates a new TypeTables which -/// doesn't contain any inference types. +// During type inference, partially inferred types are +// represented using Type variables (ty::Infer). These don't appear in +// the final TypeckTables since all of the types should have been +// inferred once typeck_tables_of is done. +// When type inference is running however, having to update the typeck +// tables every time a new type is inferred would be unreasonably slow, +// so instead all of the replacement happens at the end in +// resolve_type_vars_in_body, which creates a new TypeTables which +// doesn't contain any inference types. impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { pub fn resolve_type_vars_in_body(&self, body: &'gcx hir::Body) -> &'gcx ty::TypeckTables<'gcx> { let item_id = self.tcx.hir().body_owner(body.id()); From a89cecef0129161dd4bd85131f0ea4d6630ad194 Mon Sep 17 00:00:00 2001 From: Philipp Hansch Date: Wed, 9 Jan 2019 07:15:52 +0100 Subject: [PATCH 23/46] docs: Fix some 'second-edition' links --- src/libcore/ops/deref.rs | 4 ++-- src/libcore/ops/function.rs | 6 +++--- src/libstd/keyword_docs.rs | 8 ++++---- src/libstd/primitive_docs.rs | 2 +- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/libcore/ops/deref.rs b/src/libcore/ops/deref.rs index f2187bd66869e..075c3a084f41d 100644 --- a/src/libcore/ops/deref.rs +++ b/src/libcore/ops/deref.rs @@ -27,7 +27,7 @@ /// [book] as well as the reference sections on [the dereference operator] /// [ref-deref-op], [method resolution] and [type coercions]. /// -/// [book]: ../../book/second-edition/ch15-02-deref.html +/// [book]: ../../book/ch15-02-deref.html /// [`DerefMut`]: trait.DerefMut.html /// [more]: #more-on-deref-coercion /// [ref-deref-op]: ../../reference/expressions/operator-expr.html#the-dereference-operator @@ -117,7 +117,7 @@ impl Deref for &mut T { /// [book] as well as the reference sections on [the dereference operator] /// [ref-deref-op], [method resolution] and [type coercions]. /// -/// [book]: ../../book/second-edition/ch15-02-deref.html +/// [book]: ../../book/ch15-02-deref.html /// [`Deref`]: trait.Deref.html /// [more]: #more-on-deref-coercion /// [ref-deref-op]: ../../reference/expressions/operator-expr.html#the-dereference-operator diff --git a/src/libcore/ops/function.rs b/src/libcore/ops/function.rs index ec2e53412a0a5..3a1d765f7b816 100644 --- a/src/libcore/ops/function.rs +++ b/src/libcore/ops/function.rs @@ -27,7 +27,7 @@ /// `Fn(usize, bool) -> usize`). Those interested in the technical details of /// this can refer to [the relevant section in the *Rustonomicon*][nomicon]. /// -/// [book]: ../../book/second-edition/ch13-01-closures.html +/// [book]: ../../book/ch13-01-closures.html /// [`FnMut`]: trait.FnMut.html /// [`FnOnce`]: trait.FnOnce.html /// [function pointers]: ../../std/primitive.fn.html @@ -95,7 +95,7 @@ pub trait Fn : FnMut { /// `Fn(usize, bool) -> usize`). Those interested in the technical details of /// this can refer to [the relevant section in the *Rustonomicon*][nomicon]. /// -/// [book]: ../../book/second-edition/ch13-01-closures.html +/// [book]: ../../book/ch13-01-closures.html /// [`Fn`]: trait.Fn.html /// [`FnOnce`]: trait.FnOnce.html /// [function pointers]: ../../std/primitive.fn.html @@ -173,7 +173,7 @@ pub trait FnMut : FnOnce { /// `Fn(usize, bool) -> usize`). Those interested in the technical details of /// this can refer to [the relevant section in the *Rustonomicon*][nomicon]. /// -/// [book]: ../../book/second-edition/ch13-01-closures.html +/// [book]: ../../book/ch13-01-closures.html /// [`Fn`]: trait.Fn.html /// [`FnMut`]: trait.FnMut.html /// [function pointers]: ../../std/primitive.fn.html diff --git a/src/libstd/keyword_docs.rs b/src/libstd/keyword_docs.rs index 4ca62cca94bc8..262930e08c004 100644 --- a/src/libstd/keyword_docs.rs +++ b/src/libstd/keyword_docs.rs @@ -169,7 +169,7 @@ mod crate_keyword { } /// /// [Algebraic Data Types]: https://en.wikipedia.org/wiki/Algebraic_data_type /// [`Option`]: option/enum.Option.html -/// [Rust Book]: https://doc.rust-lang.org/book/second-edition/ch06-01-defining-an-enum.html +/// [Rust Book]: https://doc.rust-lang.org/book/ch06-01-defining-an-enum.html /// [Reference]: https://doc.rust-lang.org/reference/items/enumerations.html mod enum_keyword { } @@ -211,7 +211,7 @@ mod enum_keyword { } /// For more information on FFI, check the [Rust book] or the [Reference]. /// /// [Rust book]: -/// https://doc.rust-lang.org/book/second-edition/ch19-01-unsafe-rust.html#using-extern-functions-to-call-external-code +/// https://doc.rust-lang.org/book/ch19-01-unsafe-rust.html#using-extern-functions-to-call-external-code /// [Reference]: https://doc.rust-lang.org/reference/items/external-blocks.html mod extern_keyword { } @@ -278,7 +278,7 @@ mod extern_keyword { } /// /// [`impl`]: keyword.impl.html /// [`extern`]: keyword.extern.html -/// [Rust book]: https://doc.rust-lang.org/book/second-edition/ch03-03-how-functions-work.html +/// [Rust book]: https://doc.rust-lang.org/book/ch03-03-how-functions-work.html /// [Reference]: https://doc.rust-lang.org/reference/items/functions.html mod fn_keyword { } @@ -705,6 +705,6 @@ mod loop_keyword { } /// [Reference][reference]. /// /// [`PhantomData`]: marker/struct.PhantomData.html -/// [book]: https://doc.rust-lang.org/book/second-edition/ch05-01-defining-structs.html +/// [book]: https://doc.rust-lang.org/book/ch05-01-defining-structs.html /// [reference]: https://doc.rust-lang.org/reference/items/structs.html mod struct_keyword { } diff --git a/src/libstd/primitive_docs.rs b/src/libstd/primitive_docs.rs index 7755d9339e6f5..475c9b4aeaa4e 100644 --- a/src/libstd/primitive_docs.rs +++ b/src/libstd/primitive_docs.rs @@ -923,7 +923,7 @@ mod prim_usize { } /// For more information on how to use references, see [the book's section on "References and /// Borrowing"][book-refs]. /// -/// [book-refs]: ../book/second-edition/ch04-02-references-and-borrowing.html +/// [book-refs]: ../book/ch04-02-references-and-borrowing.html /// /// # Trait implementations /// From 4b4fc63eb7745639c76c1f8011239354a1823547 Mon Sep 17 00:00:00 2001 From: Oliver Scherer Date: Fri, 28 Dec 2018 20:05:22 +0100 Subject: [PATCH 24/46] Stabilize `let` bindings and destructuring in constants and const fn --- src/librustc_mir/transform/qualify_consts.rs | 221 ++++-------------- .../transform/qualify_min_const_fn.rs | 36 +-- src/libsyntax/feature_gate.rs | 5 +- src/test/compile-fail/const-fn-error.rs | 2 +- .../ctfe/const-block-non-item-statement-3.rs | 2 - .../ctfe/const-block-non-item-statement.rs | 2 - src/test/run-pass/ctfe/issue-37550.rs | 2 +- src/test/run-pass/ctfe/locals-in-const-fn.rs | 2 +- .../ui/check-static-values-constraints.rs | 9 +- .../ui/check-static-values-constraints.stderr | 62 ++++- .../const-block-non-item-statement-2.rs | 18 -- .../const-block-non-item-statement-2.stderr | 62 ----- .../const-block-non-item-statement-3.rs | 7 - .../const-block-non-item-statement-3.stderr | 35 --- .../consts/const-block-non-item-statement.rs | 22 +- .../const-block-non-item-statement.stderr | 35 --- .../assign-to-static-within-other-static-2.rs | 1 - ...ign-to-static-within-other-static-2.stderr | 2 +- .../assign-to-static-within-other-static.rs | 1 - ...ssign-to-static-within-other-static.stderr | 2 +- src/test/ui/consts/const-eval/const_let.rs | 2 - .../ui/consts/const-eval/const_let.stderr | 4 +- .../ui/consts/const-eval/infinite_loop.rs | 2 - .../ui/consts/const-eval/infinite_loop.stderr | 6 +- src/test/ui/consts/const-eval/issue-52475.rs | 2 - .../ui/consts/const-eval/issue-52475.stderr | 6 +- .../const-eval/mod-static-with-const-fn.rs | 1 - .../mod-static-with-const-fn.stderr | 4 +- src/test/ui/consts/const-eval/ub-upvars.rs | 2 +- .../ui/consts/const-fn-destructuring-arg.rs | 14 +- .../consts/const-fn-destructuring-arg.stderr | 35 --- .../ui/consts/const-fn-not-safe-for-const.rs | 8 +- .../consts/const-fn-not-safe-for-const.stderr | 52 +---- src/test/ui/consts/const_let_assign.rs | 2 - src/test/ui/consts/const_let_assign2.rs | 1 - src/test/ui/consts/const_let_assign3.rs | 5 +- src/test/ui/consts/const_let_assign3.stderr | 18 +- src/test/ui/consts/const_let_eq.rs | 2 +- src/test/ui/consts/const_let_eq_float.rs | 2 +- src/test/ui/consts/const_short_circuit.rs | 2 +- src/test/ui/consts/dangling-alloc-id-ice.rs | 2 - .../ui/consts/dangling-alloc-id-ice.stderr | 2 +- src/test/ui/consts/dangling_raw_ptr.rs | 2 - src/test/ui/consts/dangling_raw_ptr.stderr | 2 +- .../ui/consts/min_const_fn/min_const_fn.rs | 2 +- .../consts/min_const_fn/min_const_fn.stderr | 8 +- .../ui/consts/min_const_fn/mutable_borrow.rs | 8 +- .../consts/min_const_fn/mutable_borrow.stderr | 16 +- src/test/ui/consts/partial_qualif.rs | 2 - src/test/ui/consts/partial_qualif.stderr | 2 +- src/test/ui/consts/projection_qualif.rs | 2 - src/test/ui/consts/projection_qualif.stderr | 6 +- src/test/ui/consts/promote_const_let.rs | 6 +- src/test/ui/consts/promote_const_let.stderr | 18 +- src/test/ui/consts/qualif_overwrite.rs | 2 - src/test/ui/consts/qualif_overwrite.stderr | 2 +- src/test/ui/consts/qualif_overwrite_2.rs | 2 - src/test/ui/consts/qualif_overwrite_2.stderr | 2 +- .../consts/static_mut_containing_mut_ref2.rs | 2 - .../static_mut_containing_mut_ref2.stderr | 4 +- .../consts/static_mut_containing_mut_ref3.rs | 2 - .../static_mut_containing_mut_ref3.stderr | 2 +- src/test/ui/error-codes/E0010-teach.rs | 1 + src/test/ui/error-codes/E0010-teach.stderr | 14 +- src/test/ui/error-codes/E0010.rs | 1 + src/test/ui/error-codes/E0010.stderr | 11 +- .../feature-gates/feature-gate-const_let.rs | 21 -- .../feature-gate-const_let.stderr | 91 -------- .../feature-gate-underscore_const_names.rs | 2 - ...feature-gate-underscore_const_names.stderr | 2 +- src/test/ui/issues/issue-18118.rs | 5 - src/test/ui/issues/issue-18118.stderr | 60 +---- src/test/ui/issues/issue-32829-2.rs | 13 +- src/test/ui/issues/issue-32829-2.stderr | 83 +------ src/test/ui/issues/issue-37550.rs | 4 +- src/test/ui/issues/issue-37550.stderr | 6 +- src/test/ui/issues/issue-7364.rs | 1 + src/test/ui/issues/issue-7364.stderr | 10 +- src/test/ui/static/static-mut-not-constant.rs | 1 + .../ui/static/static-mut-not-constant.stderr | 11 +- src/test/ui/underscore_const_names.rs | 1 - src/test/ui/unsafe/ranged_ints2_const.rs | 2 +- src/test/ui/unsafe/ranged_ints3_const.rs | 2 +- src/test/ui/unsafe/ranged_ints4_const.rs | 2 +- src/test/ui/write-to-static-mut-in-static.rs | 2 - .../ui/write-to-static-mut-in-static.stderr | 8 +- 86 files changed, 283 insertions(+), 865 deletions(-) delete mode 100644 src/test/ui/consts/const-block-non-item-statement-2.rs delete mode 100644 src/test/ui/consts/const-block-non-item-statement-2.stderr delete mode 100644 src/test/ui/consts/const-block-non-item-statement-3.rs delete mode 100644 src/test/ui/consts/const-block-non-item-statement-3.stderr delete mode 100644 src/test/ui/consts/const-block-non-item-statement.stderr delete mode 100644 src/test/ui/consts/const-fn-destructuring-arg.stderr delete mode 100644 src/test/ui/feature-gates/feature-gate-const_let.rs delete mode 100644 src/test/ui/feature-gates/feature-gate-const_let.stderr diff --git a/src/librustc_mir/transform/qualify_consts.rs b/src/librustc_mir/transform/qualify_consts.rs index a04dd5bb5970f..3d90e55f1e4e2 100644 --- a/src/librustc_mir/transform/qualify_consts.rs +++ b/src/librustc_mir/transform/qualify_consts.rs @@ -21,7 +21,7 @@ use rustc::mir::visit::{PlaceContext, Visitor, MutatingUseContext, NonMutatingUs use rustc::middle::lang_items; use rustc::session::config::nightly_options; use syntax::ast::LitKind; -use syntax::feature_gate::{UnstableFeatures, feature_err, emit_feature_err, GateIssue}; +use syntax::feature_gate::{UnstableFeatures, emit_feature_err, GateIssue}; use syntax_pos::{Span, DUMMY_SP}; use std::fmt; @@ -104,7 +104,6 @@ struct Qualifier<'a, 'gcx: 'a+'tcx, 'tcx: 'a> { param_env: ty::ParamEnv<'tcx>, local_qualif: IndexVec>, qualif: Qualif, - const_fn_arg_vars: BitSet, temp_promotion_state: IndexVec, promotion_candidates: Vec } @@ -139,7 +138,6 @@ impl<'a, 'tcx> Qualifier<'a, 'tcx, 'tcx> { param_env, local_qualif, qualif: Qualif::empty(), - const_fn_arg_vars: BitSet::new_empty(mir.local_decls.len()), temp_promotion_state: temps, promotion_candidates: vec![] } @@ -168,26 +166,6 @@ impl<'a, 'tcx> Qualifier<'a, 'tcx, 'tcx> { } } - /// Error about extra statements in a constant. - fn statement_like(&mut self) { - self.add(Qualif::NOT_CONST); - if self.mode != Mode::Fn { - let mut err = feature_err( - &self.tcx.sess.parse_sess, - "const_let", - self.span, - GateIssue::Language, - &format!("statements in {}s are unstable", self.mode), - ); - if self.tcx.sess.teach(&err.get_code().unwrap()) { - err.note("Blocks in constants may only contain items (such as constant, function \ - definition, etc...) and a tail expression."); - err.help("To avoid it, you have to replace the non-item object."); - } - err.emit(); - } - } - /// Add the given qualification to self.qualif. fn add(&mut self, qualif: Qualif) { self.qualif = self.qualif | qualif; @@ -233,80 +211,46 @@ impl<'a, 'tcx> Qualifier<'a, 'tcx, 'tcx> { return; } - if self.tcx.features().const_let { - let mut dest = dest; - let index = loop { - match dest { - // with `const_let` active, we treat all locals equal - Place::Local(index) => break *index, - // projections are transparent for assignments - // we qualify the entire destination at once, even if just a field would have - // stricter qualification - Place::Projection(proj) => { - // Catch more errors in the destination. `visit_place` also checks various - // projection rules like union field access and raw pointer deref - self.visit_place( - dest, - PlaceContext::MutatingUse(MutatingUseContext::Store), - location - ); - dest = &proj.base; - }, - Place::Promoted(..) => bug!("promoteds don't exist yet during promotion"), - Place::Static(..) => { - // Catch more errors in the destination. `visit_place` also checks that we - // do not try to access statics from constants or try to mutate statics - self.visit_place( - dest, - PlaceContext::MutatingUse(MutatingUseContext::Store), - location - ); - return; - } + let mut dest = dest; + let index = loop { + match dest { + // We treat all locals equal in constants + Place::Local(index) => break *index, + // projections are transparent for assignments + // we qualify the entire destination at once, even if just a field would have + // stricter qualification + Place::Projection(proj) => { + // Catch more errors in the destination. `visit_place` also checks various + // projection rules like union field access and raw pointer deref + self.visit_place( + dest, + PlaceContext::MutatingUse(MutatingUseContext::Store), + location + ); + dest = &proj.base; + }, + Place::Promoted(..) => bug!("promoteds don't exist yet during promotion"), + Place::Static(..) => { + // Catch more errors in the destination. `visit_place` also checks that we + // do not try to access statics from constants or try to mutate statics + self.visit_place( + dest, + PlaceContext::MutatingUse(MutatingUseContext::Store), + location + ); + return; } - }; - debug!("store to var {:?}", index); - match &mut self.local_qualif[index] { - // this is overly restrictive, because even full assignments do not clear the qualif - // While we could special case full assignments, this would be inconsistent with - // aggregates where we overwrite all fields via assignments, which would not get - // that feature. - Some(ref mut qualif) => *qualif = *qualif | self.qualif, - // insert new qualification - qualif @ None => *qualif = Some(self.qualif), - } - return; - } - - match *dest { - Place::Local(index) if self.mir.local_kind(index) == LocalKind::Temp || - self.mir.local_kind(index) == LocalKind::ReturnPointer => { - debug!("store to {:?} (temp or return pointer)", index); - store(&mut self.local_qualif[index]) - } - - Place::Projection(box Projection { - base: Place::Local(index), - elem: ProjectionElem::Deref - }) if self.mir.local_kind(index) == LocalKind::Temp - && self.mir.local_decls[index].ty.is_box() - && self.local_qualif[index].map_or(false, |qualif| { - qualif.contains(Qualif::NOT_CONST) - }) => { - // Part of `box expr`, we should've errored - // already for the Box allocation Rvalue. - } - - // This must be an explicit assignment. - _ => { - // Catch more errors in the destination. - self.visit_place( - dest, - PlaceContext::MutatingUse(MutatingUseContext::Store), - location - ); - self.statement_like(); } + }; + debug!("store to var {:?}", index); + match &mut self.local_qualif[index] { + // this is overly restrictive, because even full assignments do not clear the qualif + // While we could special case full assignments, this would be inconsistent with + // aggregates where we overwrite all fields via assignments, which would not get + // that feature. + Some(ref mut qualif) => *qualif = *qualif | self.qualif, + // insert new qualification + qualif @ None => *qualif = Some(self.qualif), } } @@ -347,45 +291,6 @@ impl<'a, 'tcx> Qualifier<'a, 'tcx, 'tcx> { TerminatorKind::FalseUnwind { .. } => None, TerminatorKind::Return => { - if !self.tcx.features().const_let { - // Check for unused values. This usually means - // there are extra statements in the AST. - for temp in mir.temps_iter() { - if self.local_qualif[temp].is_none() { - continue; - } - - let state = self.temp_promotion_state[temp]; - if let TempState::Defined { location, uses: 0 } = state { - let data = &mir[location.block]; - let stmt_idx = location.statement_index; - - // Get the span for the initialization. - let source_info = if stmt_idx < data.statements.len() { - data.statements[stmt_idx].source_info - } else { - data.terminator().source_info - }; - self.span = source_info.span; - - // Treat this as a statement in the AST. - self.statement_like(); - } - } - - // Make sure there are no extra unassigned variables. - self.qualif = Qualif::NOT_CONST; - for index in mir.vars_iter() { - if !self.const_fn_arg_vars.contains(index) { - debug!("unassigned variable {:?}", index); - self.assign(&Place::Local(index), Location { - block: bb, - statement_index: usize::MAX, - }); - } - } - } - break; } }; @@ -454,12 +359,8 @@ impl<'a, 'tcx> Visitor<'tcx> for Qualifier<'a, 'tcx, 'tcx> { LocalKind::ReturnPointer => { self.not_const(); } - LocalKind::Var if !self.tcx.features().const_let => { - if self.mode != Mode::Fn { - emit_feature_err(&self.tcx.sess.parse_sess, "const_let", - self.span, GateIssue::Language, - &format!("let bindings in {}s are unstable",self.mode)); - } + LocalKind::Arg | + LocalKind::Var if self.mode == Mode::Fn => { self.add(Qualif::NOT_CONST); } LocalKind::Var | @@ -1168,46 +1069,6 @@ impl<'a, 'tcx> Visitor<'tcx> for Qualifier<'a, 'tcx, 'tcx> { debug!("visit_assign: dest={:?} rvalue={:?} location={:?}", dest, rvalue, location); self.visit_rvalue(rvalue, location); - // Check the allowed const fn argument forms. - if let (Mode::ConstFn, &Place::Local(index)) = (self.mode, dest) { - if self.mir.local_kind(index) == LocalKind::Var && - self.const_fn_arg_vars.insert(index) && - !self.tcx.features().const_let { - // Direct use of an argument is permitted. - match *rvalue { - Rvalue::Use(Operand::Copy(Place::Local(local))) | - Rvalue::Use(Operand::Move(Place::Local(local))) => { - if self.mir.local_kind(local) == LocalKind::Arg { - return; - } - } - _ => {} - } - // Avoid a generic error for other uses of arguments. - if self.qualif.contains(Qualif::FN_ARGUMENT) { - let decl = &self.mir.local_decls[index]; - let mut err = feature_err( - &self.tcx.sess.parse_sess, - "const_let", - decl.source_info.span, - GateIssue::Language, - "arguments of constant functions can only be immutable by-value bindings" - ); - if self.tcx.sess.teach(&err.get_code().unwrap()) { - err.note("Constant functions are not allowed to mutate anything. Thus, \ - binding to an argument with a mutable pattern is not allowed."); - err.note("Remove any mutable bindings from the argument list to fix this \ - error. In case you need to mutate the argument, try lazily \ - initializing a global variable instead of using a const fn, or \ - refactoring the code to a functional style to avoid mutation if \ - possible."); - } - err.emit(); - return; - } - } - } - self.assign(dest, location); } diff --git a/src/librustc_mir/transform/qualify_min_const_fn.rs b/src/librustc_mir/transform/qualify_min_const_fn.rs index c1c5b18915aed..6df6841f869f2 100644 --- a/src/librustc_mir/transform/qualify_min_const_fn.rs +++ b/src/librustc_mir/transform/qualify_min_const_fn.rs @@ -65,12 +65,6 @@ pub fn is_min_const_fn( } } - for local in mir.vars_iter() { - return Err(( - mir.local_decls[local].source_info.span, - "local variables in const fn are unstable".into(), - )); - } for local in &mir.local_decls { check_ty(tcx, local.ty, local.source_info.span)?; } @@ -147,7 +141,7 @@ fn check_rvalue( check_operand(tcx, mir, operand, span) } Rvalue::Len(place) | Rvalue::Discriminant(place) | Rvalue::Ref(_, _, place) => { - check_place(tcx, mir, place, span, PlaceMode::Read) + check_place(tcx, mir, place, span) } Rvalue::Cast(CastKind::Misc, operand, cast_ty) => { use rustc::ty::cast::CastTy; @@ -213,11 +207,6 @@ fn check_rvalue( } } -enum PlaceMode { - Assign, - Read, -} - fn check_statement( tcx: TyCtxt<'a, 'tcx, 'tcx>, mir: &'a Mir<'tcx>, @@ -226,11 +215,11 @@ fn check_statement( let span = statement.source_info.span; match &statement.kind { StatementKind::Assign(place, rval) => { - check_place(tcx, mir, place, span, PlaceMode::Assign)?; + check_place(tcx, mir, place, span)?; check_rvalue(tcx, mir, rval, span) } - StatementKind::FakeRead(_, place) => check_place(tcx, mir, place, span, PlaceMode::Read), + StatementKind::FakeRead(_, place) => check_place(tcx, mir, place, span), // just an assignment StatementKind::SetDiscriminant { .. } => Ok(()), @@ -256,7 +245,7 @@ fn check_operand( ) -> McfResult { match operand { Operand::Move(place) | Operand::Copy(place) => { - check_place(tcx, mir, place, span, PlaceMode::Read) + check_place(tcx, mir, place, span) } Operand::Constant(_) => Ok(()), } @@ -267,25 +256,16 @@ fn check_place( mir: &'a Mir<'tcx>, place: &Place<'tcx>, span: Span, - mode: PlaceMode, ) -> McfResult { match place { - Place::Local(l) => match mode { - PlaceMode::Assign => match mir.local_kind(*l) { - LocalKind::Temp | LocalKind::ReturnPointer => Ok(()), - LocalKind::Arg | LocalKind::Var => { - Err((span, "assignments in const fn are unstable".into())) - } - }, - PlaceMode::Read => Ok(()), - }, + Place::Local(_) => Ok(()), // promoteds are always fine, they are essentially constants Place::Promoted(_) => Ok(()), Place::Static(_) => Err((span, "cannot access `static` items in const fn".into())), Place::Projection(proj) => { match proj.elem { | ProjectionElem::Deref | ProjectionElem::Field(..) | ProjectionElem::Index(_) => { - check_place(tcx, mir, &proj.base, span, mode) + check_place(tcx, mir, &proj.base, span) } // slice patterns are unstable | ProjectionElem::ConstantIndex { .. } | ProjectionElem::Subslice { .. } => { @@ -311,10 +291,10 @@ fn check_terminator( | TerminatorKind::Resume => Ok(()), TerminatorKind::Drop { location, .. } => { - check_place(tcx, mir, location, span, PlaceMode::Read) + check_place(tcx, mir, location, span) } TerminatorKind::DropAndReplace { location, value, .. } => { - check_place(tcx, mir, location, span, PlaceMode::Read)?; + check_place(tcx, mir, location, span)?; check_operand(tcx, mir, value, span) }, diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index cddec3eb23a5a..15cf4334154da 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -193,9 +193,6 @@ declare_features! ( // Allows the definition of `const` functions with some advanced features. (active, const_fn, "1.2.0", Some(24111), None), - // Allows let bindings and destructuring in `const` functions and constants. - (active, const_let, "1.22.1", Some(48821), None), - // Allows accessing fields of unions inside `const` functions. (active, const_fn_union, "1.27.0", Some(51909), None), @@ -688,6 +685,8 @@ declare_features! ( (accepted, min_const_unsafe_fn, "1.33.0", Some(55607), None), // `#[cfg_attr(predicate, multiple, attributes, here)]` (accepted, cfg_attr_multi, "1.33.0", Some(54881), None), + // Allows let bindings and destructuring in `const` functions and constants. + (accepted, const_let, "1.33.0", Some(48821), None), ); // If you change this, please modify `src/doc/unstable-book` as well. You must diff --git a/src/test/compile-fail/const-fn-error.rs b/src/test/compile-fail/const-fn-error.rs index 9913138693c94..da6036a04a549 100644 --- a/src/test/compile-fail/const-fn-error.rs +++ b/src/test/compile-fail/const-fn-error.rs @@ -1,4 +1,4 @@ -#![feature(const_fn, const_let)] +#![feature(const_fn)] const X : usize = 2; diff --git a/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs b/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs index 90295414d3efc..54ed2efa50bbd 100644 --- a/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs +++ b/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs @@ -1,8 +1,6 @@ // run-pass #![allow(dead_code)] -#![feature(const_let)] - type Array = [u32; { let x = 2; 5 }]; pub fn main() {} diff --git a/src/test/run-pass/ctfe/const-block-non-item-statement.rs b/src/test/run-pass/ctfe/const-block-non-item-statement.rs index 21ce08ab69c73..92bf5ae7b97e7 100644 --- a/src/test/run-pass/ctfe/const-block-non-item-statement.rs +++ b/src/test/run-pass/ctfe/const-block-non-item-statement.rs @@ -1,8 +1,6 @@ // run-pass #![allow(dead_code)] -#![feature(const_let)] - enum Foo { Bar = { let x = 1; 3 } } diff --git a/src/test/run-pass/ctfe/issue-37550.rs b/src/test/run-pass/ctfe/issue-37550.rs index 732c34dff5a80..04865830df2eb 100644 --- a/src/test/run-pass/ctfe/issue-37550.rs +++ b/src/test/run-pass/ctfe/issue-37550.rs @@ -2,7 +2,7 @@ #![allow(dead_code)] #![allow(unused_variables)] -#![feature(const_fn, const_let)] +#![feature(const_fn)] const fn x() { let t = true; diff --git a/src/test/run-pass/ctfe/locals-in-const-fn.rs b/src/test/run-pass/ctfe/locals-in-const-fn.rs index e527e1e88c8da..27e93b913f844 100644 --- a/src/test/run-pass/ctfe/locals-in-const-fn.rs +++ b/src/test/run-pass/ctfe/locals-in-const-fn.rs @@ -2,7 +2,7 @@ // https://github.com/rust-lang/rust/issues/48821 -#![feature(const_fn, const_let)] +#![feature(const_fn)] const fn foo(i: usize) -> usize { let x = i; diff --git a/src/test/ui/check-static-values-constraints.rs b/src/test/ui/check-static-values-constraints.rs index eb0fc39e1bf15..acfb3b5e44bab 100644 --- a/src/test/ui/check-static-values-constraints.rs +++ b/src/test/ui/check-static-values-constraints.rs @@ -78,6 +78,7 @@ struct MyOwned; static STATIC11: Box = box MyOwned; //~^ ERROR allocations are not allowed in statics +//~| ERROR static contains unimplemented expression type static mut STATIC12: UnsafeStruct = UnsafeStruct; @@ -92,12 +93,16 @@ static mut STATIC14: SafeStruct = SafeStruct { static STATIC15: &'static [Box] = &[ box MyOwned, //~ ERROR allocations are not allowed in statics + //~| ERROR contains unimplemented expression box MyOwned, //~ ERROR allocations are not allowed in statics + //~| ERROR contains unimplemented expression ]; static STATIC16: (&'static Box, &'static Box) = ( &box MyOwned, //~ ERROR allocations are not allowed in statics + //~| ERROR contains unimplemented expression &box MyOwned, //~ ERROR allocations are not allowed in statics + //~| ERROR contains unimplemented expression ); static mut STATIC17: SafeEnum = SafeEnum::Variant1; @@ -105,9 +110,11 @@ static mut STATIC17: SafeEnum = SafeEnum::Variant1; static STATIC19: Box = box 3; //~^ ERROR allocations are not allowed in statics + //~| ERROR contains unimplemented expression pub fn main() { let y = { static x: Box = box 3; x }; //~^ ERROR allocations are not allowed in statics - //~^^ ERROR cannot move out of static item + //~| ERROR cannot move out of static item + //~| ERROR contains unimplemented expression } diff --git a/src/test/ui/check-static-values-constraints.stderr b/src/test/ui/check-static-values-constraints.stderr index 450a9ba0c0d11..5b1f265c34aef 100644 --- a/src/test/ui/check-static-values-constraints.stderr +++ b/src/test/ui/check-static-values-constraints.stderr @@ -13,55 +13,97 @@ error[E0010]: allocations are not allowed in statics LL | static STATIC11: Box = box MyOwned; | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:79:37 + | +LL | static STATIC11: Box = box MyOwned; + | ^^^^^^^ + error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/check-static-values-constraints.rs:89:32 + --> $DIR/check-static-values-constraints.rs:90:32 | LL | field2: SafeEnum::Variant4("str".to_string()) | ^^^^^^^^^^^^^^^^^ error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:94:5 + --> $DIR/check-static-values-constraints.rs:95:5 | LL | box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:95:9 + | +LL | box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:95:5 + --> $DIR/check-static-values-constraints.rs:97:5 | LL | box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:97:9 + | +LL | box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:99:6 + --> $DIR/check-static-values-constraints.rs:102:6 | LL | &box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:102:10 + | +LL | &box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:100:6 + --> $DIR/check-static-values-constraints.rs:104:6 | LL | &box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:104:10 + | +LL | &box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:106:5 + --> $DIR/check-static-values-constraints.rs:111:5 | LL | box 3; | ^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:111:9 + | +LL | box 3; + | ^ + error[E0507]: cannot move out of static item - --> $DIR/check-static-values-constraints.rs:110:45 + --> $DIR/check-static-values-constraints.rs:116:45 | LL | let y = { static x: Box = box 3; x }; | ^ cannot move out of static item error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:110:38 + --> $DIR/check-static-values-constraints.rs:116:38 | LL | let y = { static x: Box = box 3; x }; | ^^^^^ allocation not allowed in statics -error: aborting due to 10 previous errors +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:116:42 + | +LL | let y = { static x: Box = box 3; x }; + | ^ + +error: aborting due to 17 previous errors -Some errors occurred: E0010, E0015, E0493, E0507. +Some errors occurred: E0010, E0015, E0019, E0493, E0507. For more information about an error, try `rustc --explain E0010`. diff --git a/src/test/ui/consts/const-block-non-item-statement-2.rs b/src/test/ui/consts/const-block-non-item-statement-2.rs deleted file mode 100644 index 58a6cf6dcfdeb..0000000000000 --- a/src/test/ui/consts/const-block-non-item-statement-2.rs +++ /dev/null @@ -1,18 +0,0 @@ -const A: usize = { 1; 2 }; -//~^ ERROR statements in constants are unstable - -const B: usize = { { } 2 }; -//~^ ERROR statements in constants are unstable - -macro_rules! foo { - () => (()) //~ ERROR statements in constants are unstable -} -const C: usize = { foo!(); 2 }; - -const D: usize = { let x = 4; 2 }; -//~^ ERROR let bindings in constants are unstable -//~| ERROR statements in constants are unstable -//~| ERROR let bindings in constants are unstable -//~| ERROR statements in constants are unstable - -pub fn main() {} diff --git a/src/test/ui/consts/const-block-non-item-statement-2.stderr b/src/test/ui/consts/const-block-non-item-statement-2.stderr deleted file mode 100644 index e0c61a953f50b..0000000000000 --- a/src/test/ui/consts/const-block-non-item-statement-2.stderr +++ /dev/null @@ -1,62 +0,0 @@ -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-2.rs:1:20 - | -LL | const A: usize = { 1; 2 }; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-2.rs:4:20 - | -LL | const B: usize = { { } 2 }; - | ^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-2.rs:8:12 - | -LL | () => (()) //~ ERROR statements in constants are unstable - | ^^ -LL | } -LL | const C: usize = { foo!(); 2 }; - | ------- in this macro invocation - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-2.rs:12:28 - | -LL | const D: usize = { let x = 4; 2 }; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-2.rs:12:28 - | -LL | const D: usize = { let x = 4; 2 }; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-2.rs:12:1 - | -LL | const D: usize = { let x = 4; 2 }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-2.rs:12:1 - | -LL | const D: usize = { let x = 4; 2 }; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error: aborting due to 7 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/consts/const-block-non-item-statement-3.rs b/src/test/ui/consts/const-block-non-item-statement-3.rs deleted file mode 100644 index 867840925b2d5..0000000000000 --- a/src/test/ui/consts/const-block-non-item-statement-3.rs +++ /dev/null @@ -1,7 +0,0 @@ -type Array = [u32; { let x = 2; 5 }]; -//~^ ERROR let bindings in constants are unstable -//~| ERROR statements in constants are unstable -//~| ERROR let bindings in constants are unstable -//~| ERROR statements in constants are unstable - -pub fn main() {} diff --git a/src/test/ui/consts/const-block-non-item-statement-3.stderr b/src/test/ui/consts/const-block-non-item-statement-3.stderr deleted file mode 100644 index 0a549bc0c8ded..0000000000000 --- a/src/test/ui/consts/const-block-non-item-statement-3.stderr +++ /dev/null @@ -1,35 +0,0 @@ -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-3.rs:1:31 - | -LL | type Array = [u32; { let x = 2; 5 }]; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-3.rs:1:31 - | -LL | type Array = [u32; { let x = 2; 5 }]; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-3.rs:1:20 - | -LL | type Array = [u32; { let x = 2; 5 }]; - | ^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement-3.rs:1:20 - | -LL | type Array = [u32; { let x = 2; 5 }]; - | ^^^^^^^^^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error: aborting due to 4 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/consts/const-block-non-item-statement.rs b/src/test/ui/consts/const-block-non-item-statement.rs index 2db9e2413e5b5..5ecf9a049842d 100644 --- a/src/test/ui/consts/const-block-non-item-statement.rs +++ b/src/test/ui/consts/const-block-non-item-statement.rs @@ -1,9 +1,23 @@ +// compile-pass + enum Foo { Bar = { let x = 1; 3 } - //~^ ERROR let bindings in constants are unstable - //~| ERROR statements in constants are unstable - //~| ERROR let bindings in constants are unstable - //~| ERROR statements in constants are unstable } + +const A: usize = { 1; 2 }; + +const B: usize = { { } 2 }; + +macro_rules! foo { + () => (()) +} + +const C: usize = { foo!(); 2 }; + +const D: usize = { let x = 4; 2 }; + +type Array = [u32; { let x = 2; 5 }]; +type Array2 = [u32; { let mut x = 2; x = 3; x}]; + pub fn main() {} diff --git a/src/test/ui/consts/const-block-non-item-statement.stderr b/src/test/ui/consts/const-block-non-item-statement.stderr deleted file mode 100644 index f0d751e07561c..0000000000000 --- a/src/test/ui/consts/const-block-non-item-statement.stderr +++ /dev/null @@ -1,35 +0,0 @@ -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement.rs:2:21 - | -LL | Bar = { let x = 1; 3 } - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement.rs:2:21 - | -LL | Bar = { let x = 1; 3 } - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement.rs:2:11 - | -LL | Bar = { let x = 1; 3 } - | ^^^^^^^^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/const-block-non-item-statement.rs:2:11 - | -LL | Bar = { let x = 1; 3 } - | ^^^^^^^^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error: aborting due to 4 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.rs b/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.rs index ba8d032367ef8..4d3c714481a29 100644 --- a/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.rs +++ b/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.rs @@ -2,7 +2,6 @@ // The test should never compile successfully #![feature(const_raw_ptr_deref)] -#![feature(const_let)] use std::cell::UnsafeCell; diff --git a/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.stderr b/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.stderr index 6ca9d688bd062..be1be6c060071 100644 --- a/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.stderr +++ b/src/test/ui/consts/const-eval/assign-to-static-within-other-static-2.stderr @@ -1,5 +1,5 @@ error[E0019]: static contains unimplemented expression type - --> $DIR/assign-to-static-within-other-static-2.rs:17:5 + --> $DIR/assign-to-static-within-other-static-2.rs:16:5 | LL | *FOO.0.get() = 5; //~ ERROR contains unimplemented expression type | ^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/consts/const-eval/assign-to-static-within-other-static.rs b/src/test/ui/consts/const-eval/assign-to-static-within-other-static.rs index 9fe17bfc6a06e..b4c416b1c55f0 100644 --- a/src/test/ui/consts/const-eval/assign-to-static-within-other-static.rs +++ b/src/test/ui/consts/const-eval/assign-to-static-within-other-static.rs @@ -2,7 +2,6 @@ // The test should never compile successfully #![feature(const_raw_ptr_deref)] -#![feature(const_let)] use std::cell::UnsafeCell; diff --git a/src/test/ui/consts/const-eval/assign-to-static-within-other-static.stderr b/src/test/ui/consts/const-eval/assign-to-static-within-other-static.stderr index 2ab9765305f47..31e49dc10ca60 100644 --- a/src/test/ui/consts/const-eval/assign-to-static-within-other-static.stderr +++ b/src/test/ui/consts/const-eval/assign-to-static-within-other-static.stderr @@ -1,5 +1,5 @@ error: cannot mutate statics in the initializer of another static - --> $DIR/assign-to-static-within-other-static.rs:11:5 + --> $DIR/assign-to-static-within-other-static.rs:10:5 | LL | FOO = 5; //~ ERROR cannot mutate statics in the initializer of another static | ^^^^^^^ diff --git a/src/test/ui/consts/const-eval/const_let.rs b/src/test/ui/consts/const-eval/const_let.rs index 9e6952733bb0b..63321b9120076 100644 --- a/src/test/ui/consts/const-eval/const_let.rs +++ b/src/test/ui/consts/const-eval/const_let.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - fn main() {} struct FakeNeedsDrop; diff --git a/src/test/ui/consts/const-eval/const_let.stderr b/src/test/ui/consts/const-eval/const_let.stderr index e128ca07d8659..00de97e6fb3a0 100644 --- a/src/test/ui/consts/const-eval/const_let.stderr +++ b/src/test/ui/consts/const-eval/const_let.stderr @@ -1,11 +1,11 @@ error[E0019]: constant contains unimplemented expression type - --> $DIR/const_let.rs:15:55 + --> $DIR/const_let.rs:13:55 | LL | const Y: FakeNeedsDrop = { let mut x = FakeNeedsDrop; x = FakeNeedsDrop; x }; | ^ error[E0019]: constant contains unimplemented expression type - --> $DIR/const_let.rs:19:35 + --> $DIR/const_let.rs:17:35 | LL | const Z: () = { let mut x = None; x = Some(FakeNeedsDrop); }; | ^ diff --git a/src/test/ui/consts/const-eval/infinite_loop.rs b/src/test/ui/consts/const-eval/infinite_loop.rs index 0d5530acc9582..a2a45af7cb086 100644 --- a/src/test/ui/consts/const-eval/infinite_loop.rs +++ b/src/test/ui/consts/const-eval/infinite_loop.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - fn main() { // Tests the Collatz conjecture with an incorrect base case (0 instead of 1). // The value of `n` will loop indefinitely (4 - 2 - 1 - 4). diff --git a/src/test/ui/consts/const-eval/infinite_loop.stderr b/src/test/ui/consts/const-eval/infinite_loop.stderr index 90d2159d7b551..422c2bab6ea90 100644 --- a/src/test/ui/consts/const-eval/infinite_loop.stderr +++ b/src/test/ui/consts/const-eval/infinite_loop.stderr @@ -1,5 +1,5 @@ error[E0019]: constant contains unimplemented expression type - --> $DIR/infinite_loop.rs:9:9 + --> $DIR/infinite_loop.rs:7:9 | LL | / while n != 0 { //~ ERROR constant contains unimplemented expression type LL | | n = if n % 2 == 0 { n/2 } else { 3*n + 1 }; @@ -8,7 +8,7 @@ LL | | } | |_________^ warning: Constant evaluating a complex constant, this might take some time - --> $DIR/infinite_loop.rs:6:18 + --> $DIR/infinite_loop.rs:4:18 | LL | let _ = [(); { | __________________^ @@ -21,7 +21,7 @@ LL | | }]; | |_____^ error[E0080]: evaluation of constant value failed - --> $DIR/infinite_loop.rs:10:20 + --> $DIR/infinite_loop.rs:8:20 | LL | n = if n % 2 == 0 { n/2 } else { 3*n + 1 }; | ^^^^^^^^^^ duplicate interpreter state observed here, const evaluation will never terminate diff --git a/src/test/ui/consts/const-eval/issue-52475.rs b/src/test/ui/consts/const-eval/issue-52475.rs index 2e3d6fb9e84be..aafdd5fe61782 100644 --- a/src/test/ui/consts/const-eval/issue-52475.rs +++ b/src/test/ui/consts/const-eval/issue-52475.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - fn main() { let _ = [(); { //~^ WARNING Constant evaluating a complex constant, this might take some time diff --git a/src/test/ui/consts/const-eval/issue-52475.stderr b/src/test/ui/consts/const-eval/issue-52475.stderr index 329ea8a21f989..4f1b2ab4c8f46 100644 --- a/src/test/ui/consts/const-eval/issue-52475.stderr +++ b/src/test/ui/consts/const-eval/issue-52475.stderr @@ -1,5 +1,5 @@ error[E0019]: constant contains unimplemented expression type - --> $DIR/issue-52475.rs:8:9 + --> $DIR/issue-52475.rs:6:9 | LL | / while n < 5 { //~ ERROR constant contains unimplemented expression type LL | | n = (n + 1) % 5; //~ ERROR evaluation of constant value failed @@ -8,7 +8,7 @@ LL | | } | |_________^ warning: Constant evaluating a complex constant, this might take some time - --> $DIR/issue-52475.rs:4:18 + --> $DIR/issue-52475.rs:2:18 | LL | let _ = [(); { | __________________^ @@ -21,7 +21,7 @@ LL | | }]; | |_____^ error[E0080]: evaluation of constant value failed - --> $DIR/issue-52475.rs:9:17 + --> $DIR/issue-52475.rs:7:17 | LL | n = (n + 1) % 5; //~ ERROR evaluation of constant value failed | ^^^^^^^^^^^ duplicate interpreter state observed here, const evaluation will never terminate diff --git a/src/test/ui/consts/const-eval/mod-static-with-const-fn.rs b/src/test/ui/consts/const-eval/mod-static-with-const-fn.rs index 62090f4180d36..32f0062168b3d 100644 --- a/src/test/ui/consts/const-eval/mod-static-with-const-fn.rs +++ b/src/test/ui/consts/const-eval/mod-static-with-const-fn.rs @@ -2,7 +2,6 @@ // The test should never compile successfully #![feature(const_raw_ptr_deref)] -#![feature(const_let)] use std::cell::UnsafeCell; diff --git a/src/test/ui/consts/const-eval/mod-static-with-const-fn.stderr b/src/test/ui/consts/const-eval/mod-static-with-const-fn.stderr index 12d6e3be40a99..9fad6868d2038 100644 --- a/src/test/ui/consts/const-eval/mod-static-with-const-fn.stderr +++ b/src/test/ui/consts/const-eval/mod-static-with-const-fn.stderr @@ -1,11 +1,11 @@ error[E0019]: static contains unimplemented expression type - --> $DIR/mod-static-with-const-fn.rs:19:5 + --> $DIR/mod-static-with-const-fn.rs:18:5 | LL | *FOO.0.get() = 5; | ^^^^^^^^^^^^^^^^ error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/mod-static-with-const-fn.rs:22:5 + --> $DIR/mod-static-with-const-fn.rs:21:5 | LL | foo(); | ^^^^^ diff --git a/src/test/ui/consts/const-eval/ub-upvars.rs b/src/test/ui/consts/const-eval/ub-upvars.rs index 16df0c1b0cc0e..9b7bca6b72d61 100644 --- a/src/test/ui/consts/const-eval/ub-upvars.rs +++ b/src/test/ui/consts/const-eval/ub-upvars.rs @@ -1,4 +1,4 @@ -#![feature(const_transmute,const_let)] +#![feature(const_transmute)] #![allow(const_err)] // make sure we cannot allow away the errors tested here use std::mem; diff --git a/src/test/ui/consts/const-fn-destructuring-arg.rs b/src/test/ui/consts/const-fn-destructuring-arg.rs index 7f818079a19d1..dcf89f90e31da 100644 --- a/src/test/ui/consts/const-fn-destructuring-arg.rs +++ b/src/test/ui/consts/const-fn-destructuring-arg.rs @@ -1,17 +1,7 @@ -// test that certain things are disallowed in constant functions +// compile-pass -#![feature(const_fn)] - -// no destructuring -const fn i(( - a, - //~^ ERROR arguments of constant functions can only be immutable by-value bindings - b - //~^ ERROR arguments of constant functions can only be immutable by-value bindings - ): (u32, u32)) -> u32 { +const fn i((a, b): (u32, u32)) -> u32 { a + b - //~^ ERROR let bindings in constant functions are unstable - //~| ERROR let bindings in constant functions are unstable } fn main() {} diff --git a/src/test/ui/consts/const-fn-destructuring-arg.stderr b/src/test/ui/consts/const-fn-destructuring-arg.stderr deleted file mode 100644 index db63e8308045a..0000000000000 --- a/src/test/ui/consts/const-fn-destructuring-arg.stderr +++ /dev/null @@ -1,35 +0,0 @@ -error[E0658]: arguments of constant functions can only be immutable by-value bindings (see issue #48821) - --> $DIR/const-fn-destructuring-arg.rs:7:13 - | -LL | a, - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: arguments of constant functions can only be immutable by-value bindings (see issue #48821) - --> $DIR/const-fn-destructuring-arg.rs:9:13 - | -LL | b - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-destructuring-arg.rs:12:5 - | -LL | a + b - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-destructuring-arg.rs:12:9 - | -LL | a + b - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error: aborting due to 4 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/consts/const-fn-not-safe-for-const.rs b/src/test/ui/consts/const-fn-not-safe-for-const.rs index fe672e7b3e6da..085ff5c58e60c 100644 --- a/src/test/ui/consts/const-fn-not-safe-for-const.rs +++ b/src/test/ui/consts/const-fn-not-safe-for-const.rs @@ -27,13 +27,9 @@ const fn get_Y_addr() -> &'static u32 { } const fn get() -> u32 { - let x = 22; //~ ERROR let bindings in constant functions are unstable -//~^ ERROR statements in constant functions - let y = 44; //~ ERROR let bindings in constant functions are unstable -//~^ ERROR statements in constant functions + let x = 22; + let y = 44; x + y -//~^ ERROR let bindings in constant functions are unstable -//~| ERROR let bindings in constant functions are unstable } fn main() {} diff --git a/src/test/ui/consts/const-fn-not-safe-for-const.stderr b/src/test/ui/consts/const-fn-not-safe-for-const.stderr index 8cc4c38526238..2003b137c272b 100644 --- a/src/test/ui/consts/const-fn-not-safe-for-const.stderr +++ b/src/test/ui/consts/const-fn-not-safe-for-const.stderr @@ -16,55 +16,7 @@ error[E0013]: constant functions cannot refer to statics, use a constant instead LL | &Y | ^^ -error[E0658]: let bindings in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-not-safe-for-const.rs:30:13 - | -LL | let x = 22; //~ ERROR let bindings in constant functions are unstable - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-not-safe-for-const.rs:30:13 - | -LL | let x = 22; //~ ERROR let bindings in constant functions are unstable - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-not-safe-for-const.rs:32:13 - | -LL | let y = 44; //~ ERROR let bindings in constant functions are unstable - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-not-safe-for-const.rs:32:13 - | -LL | let y = 44; //~ ERROR let bindings in constant functions are unstable - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-not-safe-for-const.rs:34:5 - | -LL | x + y - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constant functions are unstable (see issue #48821) - --> $DIR/const-fn-not-safe-for-const.rs:34:9 - | -LL | x + y - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error: aborting due to 9 previous errors +error: aborting due to 3 previous errors -Some errors occurred: E0013, E0015, E0658. +Some errors occurred: E0013, E0015. For more information about an error, try `rustc --explain E0013`. diff --git a/src/test/ui/consts/const_let_assign.rs b/src/test/ui/consts/const_let_assign.rs index a3c53a451e106..0b09b8469fd75 100644 --- a/src/test/ui/consts/const_let_assign.rs +++ b/src/test/ui/consts/const_let_assign.rs @@ -1,7 +1,5 @@ // compile-pass -#![feature(const_let)] - struct S(i32); const A: () = { diff --git a/src/test/ui/consts/const_let_assign2.rs b/src/test/ui/consts/const_let_assign2.rs index 0de7396501adc..7839aafe5efa6 100644 --- a/src/test/ui/consts/const_let_assign2.rs +++ b/src/test/ui/consts/const_let_assign2.rs @@ -1,6 +1,5 @@ // compile-pass -#![feature(const_let)] #![feature(const_fn)] pub struct AA { diff --git a/src/test/ui/consts/const_let_assign3.rs b/src/test/ui/consts/const_let_assign3.rs index c2ed6cd85ab5c..dd0705edfe78d 100644 --- a/src/test/ui/consts/const_let_assign3.rs +++ b/src/test/ui/consts/const_let_assign3.rs @@ -1,4 +1,3 @@ -#![feature(const_let)] #![feature(const_fn)] struct S { @@ -18,6 +17,10 @@ const FOO: S = { s }; +type Array = [u32; { let mut x = 2; let y = &mut x; *y = 42; *y}]; +//~^ ERROR references in constants may only refer to immutable values +//~| ERROR constant contains unimplemented expression type + fn main() { assert_eq!(FOO.state, 3); } diff --git a/src/test/ui/consts/const_let_assign3.stderr b/src/test/ui/consts/const_let_assign3.stderr index 0f294616d255c..ecf6625151dfe 100644 --- a/src/test/ui/consts/const_let_assign3.stderr +++ b/src/test/ui/consts/const_let_assign3.stderr @@ -1,16 +1,28 @@ error[E0019]: constant function contains unimplemented expression type - --> $DIR/const_let_assign3.rs:10:9 + --> $DIR/const_let_assign3.rs:9:9 | LL | self.state = x; | ^^^^^^^^^^^^^^ error[E0017]: references in constants may only refer to immutable values - --> $DIR/const_let_assign3.rs:17:5 + --> $DIR/const_let_assign3.rs:16:5 | LL | s.foo(3); //~ ERROR references in constants may only refer to immutable values | ^ constants require immutable values -error: aborting due to 2 previous errors +error[E0017]: references in constants may only refer to immutable values + --> $DIR/const_let_assign3.rs:20:45 + | +LL | type Array = [u32; { let mut x = 2; let y = &mut x; *y = 42; *y}]; + | ^^^^^^ constants require immutable values + +error[E0019]: constant contains unimplemented expression type + --> $DIR/const_let_assign3.rs:20:53 + | +LL | type Array = [u32; { let mut x = 2; let y = &mut x; *y = 42; *y}]; + | ^^^^^^^ + +error: aborting due to 4 previous errors Some errors occurred: E0017, E0019. For more information about an error, try `rustc --explain E0017`. diff --git a/src/test/ui/consts/const_let_eq.rs b/src/test/ui/consts/const_let_eq.rs index 8739cb80e9403..106a45ee1d41f 100644 --- a/src/test/ui/consts/const_let_eq.rs +++ b/src/test/ui/consts/const_let_eq.rs @@ -1,4 +1,4 @@ -#![feature(const_let, const_fn)] +#![feature(const_fn)] // run-pass diff --git a/src/test/ui/consts/const_let_eq_float.rs b/src/test/ui/consts/const_let_eq_float.rs index 2c7262df367a3..c48f54e567b2c 100644 --- a/src/test/ui/consts/const_let_eq_float.rs +++ b/src/test/ui/consts/const_let_eq_float.rs @@ -1,6 +1,6 @@ // compile-pass -#![feature(const_let, const_fn)] +#![feature(const_fn)] struct Foo(T); struct Bar { x: T } diff --git a/src/test/ui/consts/const_short_circuit.rs b/src/test/ui/consts/const_short_circuit.rs index cc49e4696e58f..1e7b7ed319355 100644 --- a/src/test/ui/consts/const_short_circuit.rs +++ b/src/test/ui/consts/const_short_circuit.rs @@ -1,4 +1,4 @@ -#![feature(underscore_const_names, const_let)] +#![feature(underscore_const_names)] const _: bool = false && false; const _: bool = true && false; diff --git a/src/test/ui/consts/dangling-alloc-id-ice.rs b/src/test/ui/consts/dangling-alloc-id-ice.rs index 695d33b690898..dbc50f1fbd4b4 100644 --- a/src/test/ui/consts/dangling-alloc-id-ice.rs +++ b/src/test/ui/consts/dangling-alloc-id-ice.rs @@ -1,7 +1,5 @@ // https://github.com/rust-lang/rust/issues/55223 -#![feature(const_let)] - union Foo<'a> { y: &'a (), long_live_the_unit: &'static (), diff --git a/src/test/ui/consts/dangling-alloc-id-ice.stderr b/src/test/ui/consts/dangling-alloc-id-ice.stderr index a5fa88e5e6832..2cd8711f03d31 100644 --- a/src/test/ui/consts/dangling-alloc-id-ice.stderr +++ b/src/test/ui/consts/dangling-alloc-id-ice.stderr @@ -1,5 +1,5 @@ error: any use of this value will cause an error - --> $DIR/dangling-alloc-id-ice.rs:10:1 + --> $DIR/dangling-alloc-id-ice.rs:8:1 | LL | / const FOO: &() = { //~ ERROR any use of this value will cause an error LL | | let y = (); diff --git a/src/test/ui/consts/dangling_raw_ptr.rs b/src/test/ui/consts/dangling_raw_ptr.rs index 7fc773412f2f8..c2d8e6d421a28 100644 --- a/src/test/ui/consts/dangling_raw_ptr.rs +++ b/src/test/ui/consts/dangling_raw_ptr.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - const FOO: *const u32 = { //~ ERROR any use of this value will cause an error let x = 42; &x diff --git a/src/test/ui/consts/dangling_raw_ptr.stderr b/src/test/ui/consts/dangling_raw_ptr.stderr index 3b20936f8ae97..091f1f785cb02 100644 --- a/src/test/ui/consts/dangling_raw_ptr.stderr +++ b/src/test/ui/consts/dangling_raw_ptr.stderr @@ -1,5 +1,5 @@ error: any use of this value will cause an error - --> $DIR/dangling_raw_ptr.rs:3:1 + --> $DIR/dangling_raw_ptr.rs:1:1 | LL | / const FOO: *const u32 = { //~ ERROR any use of this value will cause an error LL | | let x = 42; diff --git a/src/test/ui/consts/min_const_fn/min_const_fn.rs b/src/test/ui/consts/min_const_fn/min_const_fn.rs index 238b5f7e31003..05cf3d5f1f173 100644 --- a/src/test/ui/consts/min_const_fn/min_const_fn.rs +++ b/src/test/ui/consts/min_const_fn/min_const_fn.rs @@ -96,7 +96,7 @@ const fn foo30_2(x: *mut u32) -> usize { x as usize } const fn foo30_4(b: bool) -> usize { if b { 1 } else { 42 } } //~^ ERROR `if`, `match`, `&&` and `||` are not stable in const fn const fn foo30_5(b: bool) { while b { } } //~ ERROR not stable in const fn -const fn foo30_6() -> bool { let x = true; x } //~ ERROR local variables in const fn +const fn foo30_6() -> bool { let x = true; x } const fn foo36(a: bool, b: bool) -> bool { a && b } //~^ ERROR `if`, `match`, `&&` and `||` are not stable in const fn const fn foo37(a: bool, b: bool) -> bool { a || b } diff --git a/src/test/ui/consts/min_const_fn/min_const_fn.stderr b/src/test/ui/consts/min_const_fn/min_const_fn.stderr index 1c68df513b697..2cae714fbf727 100644 --- a/src/test/ui/consts/min_const_fn/min_const_fn.stderr +++ b/src/test/ui/consts/min_const_fn/min_const_fn.stderr @@ -112,12 +112,6 @@ error: `if`, `match`, `&&` and `||` are not stable in const fn LL | const fn foo30_5(b: bool) { while b { } } //~ ERROR not stable in const fn | ^^^^^^^^^^^ -error: local variables in const fn are unstable - --> $DIR/min_const_fn.rs:99:34 - | -LL | const fn foo30_6() -> bool { let x = true; x } //~ ERROR local variables in const fn - | ^ - error: `if`, `match`, `&&` and `||` are not stable in const fn --> $DIR/min_const_fn.rs:100:44 | @@ -208,6 +202,6 @@ error: function pointers in const fn are unstable LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo } | ^^^^ -error: aborting due to 35 previous errors +error: aborting due to 34 previous errors For more information about this error, try `rustc --explain E0493`. diff --git a/src/test/ui/consts/min_const_fn/mutable_borrow.rs b/src/test/ui/consts/min_const_fn/mutable_borrow.rs index 3dd76b630a883..89acfea6ed8ff 100644 --- a/src/test/ui/consts/min_const_fn/mutable_borrow.rs +++ b/src/test/ui/consts/min_const_fn/mutable_borrow.rs @@ -1,6 +1,6 @@ const fn mutable_ref_in_const() -> u8 { - let mut a = 0; //~ ERROR local variables in const fn - let b = &mut a; + let mut a = 0; + let b = &mut a; //~ ERROR mutable references in const fn *b } @@ -8,8 +8,8 @@ struct X; impl X { const fn inherent_mutable_ref_in_const() -> u8 { - let mut a = 0; //~ ERROR local variables in const fn - let b = &mut a; + let mut a = 0; + let b = &mut a; //~ ERROR mutable references in const fn *b } } diff --git a/src/test/ui/consts/min_const_fn/mutable_borrow.stderr b/src/test/ui/consts/min_const_fn/mutable_borrow.stderr index fa46f5c804fe0..5ce0f30dc6e1f 100644 --- a/src/test/ui/consts/min_const_fn/mutable_borrow.stderr +++ b/src/test/ui/consts/min_const_fn/mutable_borrow.stderr @@ -1,14 +1,14 @@ -error: local variables in const fn are unstable - --> $DIR/mutable_borrow.rs:2:9 +error: mutable references in const fn are unstable + --> $DIR/mutable_borrow.rs:3:9 | -LL | let mut a = 0; //~ ERROR local variables in const fn - | ^^^^^ +LL | let b = &mut a; //~ ERROR mutable references in const fn + | ^ -error: local variables in const fn are unstable - --> $DIR/mutable_borrow.rs:11:13 +error: mutable references in const fn are unstable + --> $DIR/mutable_borrow.rs:12:13 | -LL | let mut a = 0; //~ ERROR local variables in const fn - | ^^^^^ +LL | let b = &mut a; //~ ERROR mutable references in const fn + | ^ error: aborting due to 2 previous errors diff --git a/src/test/ui/consts/partial_qualif.rs b/src/test/ui/consts/partial_qualif.rs index 4ce41f80f82c8..32c68e69f4bed 100644 --- a/src/test/ui/consts/partial_qualif.rs +++ b/src/test/ui/consts/partial_qualif.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - use std::cell::Cell; const FOO: &(Cell, bool) = { diff --git a/src/test/ui/consts/partial_qualif.stderr b/src/test/ui/consts/partial_qualif.stderr index d695f64e2c3b5..967fb83b78b08 100644 --- a/src/test/ui/consts/partial_qualif.stderr +++ b/src/test/ui/consts/partial_qualif.stderr @@ -1,5 +1,5 @@ error[E0492]: cannot borrow a constant which may contain interior mutability, create a static instead - --> $DIR/partial_qualif.rs:8:5 + --> $DIR/partial_qualif.rs:6:5 | LL | &{a} //~ ERROR cannot borrow a constant which may contain interior mutability | ^^^^ diff --git a/src/test/ui/consts/projection_qualif.rs b/src/test/ui/consts/projection_qualif.rs index 5863429a2f2c5..dedb7db592089 100644 --- a/src/test/ui/consts/projection_qualif.rs +++ b/src/test/ui/consts/projection_qualif.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - use std::cell::Cell; const FOO: &u32 = { diff --git a/src/test/ui/consts/projection_qualif.stderr b/src/test/ui/consts/projection_qualif.stderr index cc3635a979b37..410c51c4b54e1 100644 --- a/src/test/ui/consts/projection_qualif.stderr +++ b/src/test/ui/consts/projection_qualif.stderr @@ -1,17 +1,17 @@ error[E0017]: references in constants may only refer to immutable values - --> $DIR/projection_qualif.rs:8:27 + --> $DIR/projection_qualif.rs:6:27 | LL | let b: *mut u32 = &mut a; //~ ERROR may only refer to immutable values | ^^^^^^ constants require immutable values error[E0019]: constant contains unimplemented expression type - --> $DIR/projection_qualif.rs:9:18 + --> $DIR/projection_qualif.rs:7:18 | LL | unsafe { *b = 5; } //~ ERROR dereferencing raw pointers in constants | ^^^^^^ error[E0658]: dereferencing raw pointers in constants is unstable (see issue #51911) - --> $DIR/projection_qualif.rs:9:18 + --> $DIR/projection_qualif.rs:7:18 | LL | unsafe { *b = 5; } //~ ERROR dereferencing raw pointers in constants | ^^^^^^ diff --git a/src/test/ui/consts/promote_const_let.rs b/src/test/ui/consts/promote_const_let.rs index 8de9b00eb111d..a8a6d4d99c6ff 100644 --- a/src/test/ui/consts/promote_const_let.rs +++ b/src/test/ui/consts/promote_const_let.rs @@ -1,8 +1,10 @@ -#![feature(const_let)] - fn main() { let x: &'static u32 = { let y = 42; &y //~ ERROR does not live long enough }; + let x: &'static u32 = &{ //~ ERROR does not live long enough + let y = 42; + y + }; } diff --git a/src/test/ui/consts/promote_const_let.stderr b/src/test/ui/consts/promote_const_let.stderr index 6bbb7495fb0dc..d37bd49186032 100644 --- a/src/test/ui/consts/promote_const_let.stderr +++ b/src/test/ui/consts/promote_const_let.stderr @@ -1,5 +1,5 @@ error[E0597]: `y` does not live long enough - --> $DIR/promote_const_let.rs:6:10 + --> $DIR/promote_const_let.rs:4:10 | LL | &y //~ ERROR does not live long enough | ^ borrowed value does not live long enough @@ -8,6 +8,20 @@ LL | }; | = note: borrowed value must be valid for the static lifetime... -error: aborting due to previous error +error[E0597]: borrowed value does not live long enough + --> $DIR/promote_const_let.rs:6:28 + | +LL | let x: &'static u32 = &{ //~ ERROR does not live long enough + | ____________________________^ +LL | | let y = 42; +LL | | y +LL | | }; + | |_____^ temporary value does not live long enough +LL | } + | - temporary value only lives until here + | + = note: borrowed value must be valid for the static lifetime... + +error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0597`. diff --git a/src/test/ui/consts/qualif_overwrite.rs b/src/test/ui/consts/qualif_overwrite.rs index 806a74ee4530b..430eea37de73c 100644 --- a/src/test/ui/consts/qualif_overwrite.rs +++ b/src/test/ui/consts/qualif_overwrite.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - use std::cell::Cell; // this is overly conservative. The reset to `None` should clear `a` of all qualifications diff --git a/src/test/ui/consts/qualif_overwrite.stderr b/src/test/ui/consts/qualif_overwrite.stderr index 4fac64bf8063f..30479139e314c 100644 --- a/src/test/ui/consts/qualif_overwrite.stderr +++ b/src/test/ui/consts/qualif_overwrite.stderr @@ -1,5 +1,5 @@ error[E0492]: cannot borrow a constant which may contain interior mutability, create a static instead - --> $DIR/qualif_overwrite.rs:12:5 + --> $DIR/qualif_overwrite.rs:10:5 | LL | &{a} //~ ERROR cannot borrow a constant which may contain interior mutability | ^^^^ diff --git a/src/test/ui/consts/qualif_overwrite_2.rs b/src/test/ui/consts/qualif_overwrite_2.rs index 29557a3da4781..fa79b5c14a736 100644 --- a/src/test/ui/consts/qualif_overwrite_2.rs +++ b/src/test/ui/consts/qualif_overwrite_2.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - use std::cell::Cell; // const qualification is not smart enough to know about fields and always assumes that there might diff --git a/src/test/ui/consts/qualif_overwrite_2.stderr b/src/test/ui/consts/qualif_overwrite_2.stderr index 181b728c7b76f..8276db99a12c0 100644 --- a/src/test/ui/consts/qualif_overwrite_2.stderr +++ b/src/test/ui/consts/qualif_overwrite_2.stderr @@ -1,5 +1,5 @@ error[E0492]: cannot borrow a constant which may contain interior mutability, create a static instead - --> $DIR/qualif_overwrite_2.rs:10:5 + --> $DIR/qualif_overwrite_2.rs:8:5 | LL | &{a.0} //~ ERROR cannot borrow a constant which may contain interior mutability | ^^^^^^ diff --git a/src/test/ui/consts/static_mut_containing_mut_ref2.rs b/src/test/ui/consts/static_mut_containing_mut_ref2.rs index 4180b1e295ab0..ef378fa84518e 100644 --- a/src/test/ui/consts/static_mut_containing_mut_ref2.rs +++ b/src/test/ui/consts/static_mut_containing_mut_ref2.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - static mut STDERR_BUFFER_SPACE: u8 = 0; pub static mut STDERR_BUFFER: () = unsafe { *(&mut STDERR_BUFFER_SPACE) = 42; }; diff --git a/src/test/ui/consts/static_mut_containing_mut_ref2.stderr b/src/test/ui/consts/static_mut_containing_mut_ref2.stderr index f0ae1545056b7..72186571d697e 100644 --- a/src/test/ui/consts/static_mut_containing_mut_ref2.stderr +++ b/src/test/ui/consts/static_mut_containing_mut_ref2.stderr @@ -1,11 +1,11 @@ error[E0017]: references in statics may only refer to immutable values - --> $DIR/static_mut_containing_mut_ref2.rs:5:46 + --> $DIR/static_mut_containing_mut_ref2.rs:3:46 | LL | pub static mut STDERR_BUFFER: () = unsafe { *(&mut STDERR_BUFFER_SPACE) = 42; }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^ statics require immutable values error[E0019]: static contains unimplemented expression type - --> $DIR/static_mut_containing_mut_ref2.rs:5:45 + --> $DIR/static_mut_containing_mut_ref2.rs:3:45 | LL | pub static mut STDERR_BUFFER: () = unsafe { *(&mut STDERR_BUFFER_SPACE) = 42; }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/src/test/ui/consts/static_mut_containing_mut_ref3.rs b/src/test/ui/consts/static_mut_containing_mut_ref3.rs index 0bc7faa9afdec..c24c7e2792079 100644 --- a/src/test/ui/consts/static_mut_containing_mut_ref3.rs +++ b/src/test/ui/consts/static_mut_containing_mut_ref3.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - static mut FOO: (u8, u8) = (42, 43); static mut BAR: () = unsafe { FOO.0 = 99; }; diff --git a/src/test/ui/consts/static_mut_containing_mut_ref3.stderr b/src/test/ui/consts/static_mut_containing_mut_ref3.stderr index cae53c6fee9dd..e88e49b097af2 100644 --- a/src/test/ui/consts/static_mut_containing_mut_ref3.stderr +++ b/src/test/ui/consts/static_mut_containing_mut_ref3.stderr @@ -1,5 +1,5 @@ error[E0080]: could not evaluate static initializer - --> $DIR/static_mut_containing_mut_ref3.rs:5:31 + --> $DIR/static_mut_containing_mut_ref3.rs:3:31 | LL | static mut BAR: () = unsafe { FOO.0 = 99; }; | ^^^^^^^^^^ tried to modify a static's initial value from another static's initializer diff --git a/src/test/ui/error-codes/E0010-teach.rs b/src/test/ui/error-codes/E0010-teach.rs index fc5dffb37cfe7..da51035ab5550 100644 --- a/src/test/ui/error-codes/E0010-teach.rs +++ b/src/test/ui/error-codes/E0010-teach.rs @@ -4,5 +4,6 @@ #![allow(warnings)] const CON : Box = box 0; //~ ERROR E0010 +//~^ ERROR constant contains unimplemented expression type fn main() {} diff --git a/src/test/ui/error-codes/E0010-teach.stderr b/src/test/ui/error-codes/E0010-teach.stderr index da0aadfded5f8..77e7b5ec0e860 100644 --- a/src/test/ui/error-codes/E0010-teach.stderr +++ b/src/test/ui/error-codes/E0010-teach.stderr @@ -6,6 +6,16 @@ LL | const CON : Box = box 0; //~ ERROR E0010 | = note: The value of statics and constants must be known at compile time, and they live for the entire lifetime of a program. Creating a boxed value allocates memory on the heap at runtime, and therefore cannot be done at compile time. -error: aborting due to previous error +error[E0019]: constant contains unimplemented expression type + --> $DIR/E0010-teach.rs:6:28 + | +LL | const CON : Box = box 0; //~ ERROR E0010 + | ^ + | + = note: A function call isn't allowed in the const's initialization expression because the expression's value must be known at compile-time. + = note: Remember: you can't use a function call inside a const's initialization expression! However, you can use it anywhere else. + +error: aborting due to 2 previous errors -For more information about this error, try `rustc --explain E0010`. +Some errors occurred: E0010, E0019. +For more information about an error, try `rustc --explain E0010`. diff --git a/src/test/ui/error-codes/E0010.rs b/src/test/ui/error-codes/E0010.rs index e62997640f473..3398e2c28ba6b 100644 --- a/src/test/ui/error-codes/E0010.rs +++ b/src/test/ui/error-codes/E0010.rs @@ -2,5 +2,6 @@ #![allow(warnings)] const CON : Box = box 0; //~ ERROR E0010 +//~^ ERROR constant contains unimplemented expression type fn main() {} diff --git a/src/test/ui/error-codes/E0010.stderr b/src/test/ui/error-codes/E0010.stderr index b4b490922c45f..1364693109e08 100644 --- a/src/test/ui/error-codes/E0010.stderr +++ b/src/test/ui/error-codes/E0010.stderr @@ -4,6 +4,13 @@ error[E0010]: allocations are not allowed in constants LL | const CON : Box = box 0; //~ ERROR E0010 | ^^^^^ allocation not allowed in constants -error: aborting due to previous error +error[E0019]: constant contains unimplemented expression type + --> $DIR/E0010.rs:4:28 + | +LL | const CON : Box = box 0; //~ ERROR E0010 + | ^ + +error: aborting due to 2 previous errors -For more information about this error, try `rustc --explain E0010`. +Some errors occurred: E0010, E0019. +For more information about an error, try `rustc --explain E0010`. diff --git a/src/test/ui/feature-gates/feature-gate-const_let.rs b/src/test/ui/feature-gates/feature-gate-const_let.rs deleted file mode 100644 index 74cefd7c0670d..0000000000000 --- a/src/test/ui/feature-gates/feature-gate-const_let.rs +++ /dev/null @@ -1,21 +0,0 @@ -// Test use of const let without feature gate. - -const FOO: usize = { - //~^ ERROR statements in constants are unstable - //~| ERROR: let bindings in constants are unstable - let x = 42; - //~^ ERROR statements in constants are unstable - //~| ERROR: let bindings in constants are unstable - 42 -}; - -static BAR: usize = { - //~^ ERROR statements in statics are unstable - //~| ERROR: let bindings in statics are unstable - let x = 42; - //~^ ERROR statements in statics are unstable - //~| ERROR: let bindings in statics are unstable - 42 -}; - -fn main() {} diff --git a/src/test/ui/feature-gates/feature-gate-const_let.stderr b/src/test/ui/feature-gates/feature-gate-const_let.stderr deleted file mode 100644 index 56312999a5fd8..0000000000000 --- a/src/test/ui/feature-gates/feature-gate-const_let.stderr +++ /dev/null @@ -1,91 +0,0 @@ -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:6:13 - | -LL | let x = 42; - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:6:13 - | -LL | let x = 42; - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:3:1 - | -LL | / const FOO: usize = { -LL | | //~^ ERROR statements in constants are unstable -LL | | //~| ERROR: let bindings in constants are unstable -LL | | let x = 42; -... | -LL | | 42 -LL | | }; - | |__^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:3:1 - | -LL | / const FOO: usize = { -LL | | //~^ ERROR statements in constants are unstable -LL | | //~| ERROR: let bindings in constants are unstable -LL | | let x = 42; -... | -LL | | 42 -LL | | }; - | |__^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in statics are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:15:13 - | -LL | let x = 42; - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:15:13 - | -LL | let x = 42; - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in statics are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:12:1 - | -LL | / static BAR: usize = { -LL | | //~^ ERROR statements in statics are unstable -LL | | //~| ERROR: let bindings in statics are unstable -LL | | let x = 42; -... | -LL | | 42 -LL | | }; - | |__^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/feature-gate-const_let.rs:12:1 - | -LL | / static BAR: usize = { -LL | | //~^ ERROR statements in statics are unstable -LL | | //~| ERROR: let bindings in statics are unstable -LL | | let x = 42; -... | -LL | | 42 -LL | | }; - | |__^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error: aborting due to 8 previous errors - -For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/feature-gates/feature-gate-underscore_const_names.rs b/src/test/ui/feature-gates/feature-gate-underscore_const_names.rs index a82b356c75216..6b97c24a47ed2 100644 --- a/src/test/ui/feature-gates/feature-gate-underscore_const_names.rs +++ b/src/test/ui/feature-gates/feature-gate-underscore_const_names.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - trait Trt {} struct Str {} diff --git a/src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr b/src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr index b3658208828e9..d608f3d37cf2a 100644 --- a/src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr +++ b/src/test/ui/feature-gates/feature-gate-underscore_const_names.stderr @@ -1,5 +1,5 @@ error[E0658]: naming constants with `_` is unstable (see issue #54912) - --> $DIR/feature-gate-underscore_const_names.rs:8:1 + --> $DIR/feature-gate-underscore_const_names.rs:6:1 | LL | / const _ : () = { LL | | //~^ ERROR is unstable diff --git a/src/test/ui/issues/issue-18118.rs b/src/test/ui/issues/issue-18118.rs index 7bbea191cd167..f58a3de281f1a 100644 --- a/src/test/ui/issues/issue-18118.rs +++ b/src/test/ui/issues/issue-18118.rs @@ -1,11 +1,6 @@ pub fn main() { const z: &'static isize = { - //~^ ERROR let bindings in constants are unstable - //~| ERROR statements in constants are unstable let p = 3; - //~^ ERROR let bindings in constants are unstable - //~| ERROR statements in constants are unstable &p //~ ERROR `p` does not live long enough - //~^ ERROR let bindings in constants are unstable }; } diff --git a/src/test/ui/issues/issue-18118.stderr b/src/test/ui/issues/issue-18118.stderr index 1383cdb4438c9..9b21ece341a9f 100644 --- a/src/test/ui/issues/issue-18118.stderr +++ b/src/test/ui/issues/issue-18118.stderr @@ -1,67 +1,13 @@ -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:5:17 - | -LL | let p = 3; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:5:17 - | -LL | let p = 3; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:8:9 - | -LL | &p //~ ERROR `p` does not live long enough - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:2:5 - | -LL | / const z: &'static isize = { -LL | | //~^ ERROR let bindings in constants are unstable -LL | | //~| ERROR statements in constants are unstable -LL | | let p = 3; -... | -LL | | //~^ ERROR let bindings in constants are unstable -LL | | }; - | |______^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:2:5 - | -LL | / const z: &'static isize = { -LL | | //~^ ERROR let bindings in constants are unstable -LL | | //~| ERROR statements in constants are unstable -LL | | let p = 3; -... | -LL | | //~^ ERROR let bindings in constants are unstable -LL | | }; - | |______^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - error[E0597]: `p` does not live long enough - --> $DIR/issue-18118.rs:8:10 + --> $DIR/issue-18118.rs:4:10 | LL | &p //~ ERROR `p` does not live long enough | ^ borrowed value does not live long enough -LL | //~^ ERROR let bindings in constants are unstable LL | }; | - borrowed value only lives until here | = note: borrowed value must be valid for the static lifetime... -error: aborting due to 6 previous errors +error: aborting due to previous error -Some errors occurred: E0597, E0658. -For more information about an error, try `rustc --explain E0597`. +For more information about this error, try `rustc --explain E0597`. diff --git a/src/test/ui/issues/issue-32829-2.rs b/src/test/ui/issues/issue-32829-2.rs index 9db9d30411d6f..379f1ee0f388d 100644 --- a/src/test/ui/issues/issue-32829-2.rs +++ b/src/test/ui/issues/issue-32829-2.rs @@ -5,7 +5,6 @@ const bad : u32 = { { 5; - //~^ ERROR statements in constants are unstable 0 } }; @@ -13,8 +12,7 @@ const bad : u32 = { const bad_two : u32 = { { invalid(); - //~^ ERROR statements in constants are unstable - //~^^ ERROR: calls in constants are limited to constant functions, tuple structs and tuple variants + //~^ ERROR: calls in constants are limited to constant functions, tuple structs and tuple variants 0 } }; @@ -22,7 +20,6 @@ const bad_two : u32 = { const bad_three : u32 = { { valid(); - //~^ ERROR statements in constants are unstable 0 } }; @@ -30,7 +27,6 @@ const bad_three : u32 = { static bad_four : u32 = { { 5; - //~^ ERROR statements in statics are unstable 0 } }; @@ -39,7 +35,6 @@ static bad_five : u32 = { { invalid(); //~^ ERROR: calls in statics are limited to constant functions, tuple structs and tuple variants - //~| ERROR statements in statics are unstable 0 } }; @@ -47,7 +42,6 @@ static bad_five : u32 = { static bad_six : u32 = { { valid(); - //~^ ERROR statements in statics are unstable 0 } }; @@ -55,7 +49,6 @@ static bad_six : u32 = { static mut bad_seven : u32 = { { 5; - //~^ ERROR statements in statics are unstable 0 } }; @@ -63,8 +56,7 @@ static mut bad_seven : u32 = { static mut bad_eight : u32 = { { invalid(); - //~^ ERROR statements in statics are unstable - //~| ERROR: calls in statics are limited to constant functions, tuple structs and tuple variants + //~^ ERROR: calls in statics are limited to constant functions, tuple structs and tuple variants 0 } }; @@ -72,7 +64,6 @@ static mut bad_eight : u32 = { static mut bad_nine : u32 = { { valid(); - //~^ ERROR statements in statics are unstable 0 } }; diff --git a/src/test/ui/issues/issue-32829-2.stderr b/src/test/ui/issues/issue-32829-2.stderr index 7fe0261281830..9b7fe71d9a7d6 100644 --- a/src/test/ui/issues/issue-32829-2.stderr +++ b/src/test/ui/issues/issue-32829-2.stderr @@ -1,94 +1,21 @@ -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:7:9 - | -LL | 5; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - error[E0015]: calls in constants are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:15:9 + --> $DIR/issue-32829-2.rs:14:9 | LL | invalid(); | ^^^^^^^^^ -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:15:9 - | -LL | invalid(); - | ^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:24:9 - | -LL | valid(); - | ^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:32:9 - | -LL | 5; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:40:9 + --> $DIR/issue-32829-2.rs:36:9 | LL | invalid(); | ^^^^^^^^^ -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:40:9 - | -LL | invalid(); - | ^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:49:9 - | -LL | valid(); - | ^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:57:9 - | -LL | 5; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:65:9 + --> $DIR/issue-32829-2.rs:58:9 | LL | invalid(); | ^^^^^^^^^ -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:65:9 - | -LL | invalid(); - | ^^^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in statics are unstable (see issue #48821) - --> $DIR/issue-32829-2.rs:74:9 - | -LL | valid(); - | ^^^^^^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error: aborting due to 12 previous errors +error: aborting due to 3 previous errors -Some errors occurred: E0015, E0658. -For more information about an error, try `rustc --explain E0015`. +For more information about this error, try `rustc --explain E0015`. diff --git a/src/test/ui/issues/issue-37550.rs b/src/test/ui/issues/issue-37550.rs index 12282f3e54887..505c030b96712 100644 --- a/src/test/ui/issues/issue-37550.rs +++ b/src/test/ui/issues/issue-37550.rs @@ -1,6 +1,6 @@ const fn x() { - let t = true; //~ ERROR local variables in const fn - let x = || t; + let t = true; + let x = || t; //~ ERROR function pointers in const fn are unstable } fn main() {} diff --git a/src/test/ui/issues/issue-37550.stderr b/src/test/ui/issues/issue-37550.stderr index d42f72ad3fac8..d2b03416cb73c 100644 --- a/src/test/ui/issues/issue-37550.stderr +++ b/src/test/ui/issues/issue-37550.stderr @@ -1,7 +1,7 @@ -error: local variables in const fn are unstable - --> $DIR/issue-37550.rs:2:9 +error: function pointers in const fn are unstable + --> $DIR/issue-37550.rs:3:9 | -LL | let t = true; //~ ERROR local variables in const fn +LL | let x = || t; //~ ERROR function pointers in const fn are unstable | ^ error: aborting due to previous error diff --git a/src/test/ui/issues/issue-7364.rs b/src/test/ui/issues/issue-7364.rs index 3f9c2ef48a7af..52ec9e42be782 100644 --- a/src/test/ui/issues/issue-7364.rs +++ b/src/test/ui/issues/issue-7364.rs @@ -6,5 +6,6 @@ use std::cell::RefCell; static boxed: Box> = box RefCell::new(0); //~^ ERROR allocations are not allowed in statics //~| ERROR `std::cell::RefCell` cannot be shared between threads safely [E0277] +//~| ERROR static contains unimplemented expression type fn main() { } diff --git a/src/test/ui/issues/issue-7364.stderr b/src/test/ui/issues/issue-7364.stderr index 0e4d6ff1d71fa..52a99ce36b870 100644 --- a/src/test/ui/issues/issue-7364.stderr +++ b/src/test/ui/issues/issue-7364.stderr @@ -4,6 +4,12 @@ error[E0010]: allocations are not allowed in statics LL | static boxed: Box> = box RefCell::new(0); | ^^^^^^^^^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/issue-7364.rs:6:41 + | +LL | static boxed: Box> = box RefCell::new(0); + | ^^^^^^^^^^^^^^^ + error[E0277]: `std::cell::RefCell` cannot be shared between threads safely --> $DIR/issue-7364.rs:6:1 | @@ -15,7 +21,7 @@ LL | static boxed: Box> = box RefCell::new(0); = note: required because it appears within the type `std::boxed::Box>` = note: shared static variables must have a type that implements `Sync` -error: aborting due to 2 previous errors +error: aborting due to 3 previous errors -Some errors occurred: E0010, E0277. +Some errors occurred: E0010, E0019, E0277. For more information about an error, try `rustc --explain E0010`. diff --git a/src/test/ui/static/static-mut-not-constant.rs b/src/test/ui/static/static-mut-not-constant.rs index 2091fffd418ee..84d401c9fa61d 100644 --- a/src/test/ui/static/static-mut-not-constant.rs +++ b/src/test/ui/static/static-mut-not-constant.rs @@ -2,5 +2,6 @@ static mut a: Box = box 3; //~^ ERROR allocations are not allowed in statics +//~| ERROR static contains unimplemented expression type fn main() {} diff --git a/src/test/ui/static/static-mut-not-constant.stderr b/src/test/ui/static/static-mut-not-constant.stderr index a0fa245156f87..d2c6ba6a2f85a 100644 --- a/src/test/ui/static/static-mut-not-constant.stderr +++ b/src/test/ui/static/static-mut-not-constant.stderr @@ -4,6 +4,13 @@ error[E0010]: allocations are not allowed in statics LL | static mut a: Box = box 3; | ^^^^^ allocation not allowed in statics -error: aborting due to previous error +error[E0019]: static contains unimplemented expression type + --> $DIR/static-mut-not-constant.rs:3:32 + | +LL | static mut a: Box = box 3; + | ^ + +error: aborting due to 2 previous errors -For more information about this error, try `rustc --explain E0010`. +Some errors occurred: E0010, E0019. +For more information about an error, try `rustc --explain E0010`. diff --git a/src/test/ui/underscore_const_names.rs b/src/test/ui/underscore_const_names.rs index 811d166ed65a7..1db022e886208 100644 --- a/src/test/ui/underscore_const_names.rs +++ b/src/test/ui/underscore_const_names.rs @@ -1,6 +1,5 @@ // compile-pass -#![feature(const_let)] #![feature(underscore_const_names)] trait Trt {} diff --git a/src/test/ui/unsafe/ranged_ints2_const.rs b/src/test/ui/unsafe/ranged_ints2_const.rs index a61e3329bdce8..c404f25911615 100644 --- a/src/test/ui/unsafe/ranged_ints2_const.rs +++ b/src/test/ui/unsafe/ranged_ints2_const.rs @@ -1,4 +1,4 @@ -#![feature(rustc_attrs, const_let, const_fn)] +#![feature(rustc_attrs, const_fn)] #[rustc_layout_scalar_valid_range_start(1)] #[repr(transparent)] diff --git a/src/test/ui/unsafe/ranged_ints3_const.rs b/src/test/ui/unsafe/ranged_ints3_const.rs index 6497b611224b6..f8ce81f0d1c37 100644 --- a/src/test/ui/unsafe/ranged_ints3_const.rs +++ b/src/test/ui/unsafe/ranged_ints3_const.rs @@ -1,4 +1,4 @@ -#![feature(rustc_attrs, const_let, const_fn)] +#![feature(rustc_attrs, const_fn)] use std::cell::Cell; diff --git a/src/test/ui/unsafe/ranged_ints4_const.rs b/src/test/ui/unsafe/ranged_ints4_const.rs index f589e4739baf1..9bda1f69652ec 100644 --- a/src/test/ui/unsafe/ranged_ints4_const.rs +++ b/src/test/ui/unsafe/ranged_ints4_const.rs @@ -1,4 +1,4 @@ -#![feature(rustc_attrs, const_let, const_fn)] +#![feature(rustc_attrs, const_fn)] #[rustc_layout_scalar_valid_range_start(1)] #[repr(transparent)] diff --git a/src/test/ui/write-to-static-mut-in-static.rs b/src/test/ui/write-to-static-mut-in-static.rs index 3c34a7704e0df..43c63fed8cef1 100644 --- a/src/test/ui/write-to-static-mut-in-static.rs +++ b/src/test/ui/write-to-static-mut-in-static.rs @@ -1,5 +1,3 @@ -#![feature(const_let)] - pub static mut A: u32 = 0; pub static mut B: () = unsafe { A = 1; }; //~^ ERROR could not evaluate static initializer diff --git a/src/test/ui/write-to-static-mut-in-static.stderr b/src/test/ui/write-to-static-mut-in-static.stderr index 7be83b8dafcfd..eba1c609d2f83 100644 --- a/src/test/ui/write-to-static-mut-in-static.stderr +++ b/src/test/ui/write-to-static-mut-in-static.stderr @@ -1,23 +1,23 @@ error[E0080]: could not evaluate static initializer - --> $DIR/write-to-static-mut-in-static.rs:4:33 + --> $DIR/write-to-static-mut-in-static.rs:2:33 | LL | pub static mut B: () = unsafe { A = 1; }; | ^^^^^ tried to modify a static's initial value from another static's initializer error[E0391]: cycle detected when const-evaluating `C` - --> $DIR/write-to-static-mut-in-static.rs:7:34 + --> $DIR/write-to-static-mut-in-static.rs:5:34 | LL | pub static mut C: u32 = unsafe { C = 1; 0 }; | ^^^^^ | note: ...which requires const-evaluating `C`... - --> $DIR/write-to-static-mut-in-static.rs:7:1 + --> $DIR/write-to-static-mut-in-static.rs:5:1 | LL | pub static mut C: u32 = unsafe { C = 1; 0 }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ = note: ...which again requires const-evaluating `C`, completing the cycle note: cycle used when const-evaluating + checking `C` - --> $DIR/write-to-static-mut-in-static.rs:7:1 + --> $DIR/write-to-static-mut-in-static.rs:5:1 | LL | pub static mut C: u32 = unsafe { C = 1; 0 }; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ From a49acea80de0a78b421319ad340d4bc5e84a4dfe Mon Sep 17 00:00:00 2001 From: Oliver Scherer Date: Sun, 30 Dec 2018 18:57:31 +0100 Subject: [PATCH 25/46] Clarify const_let comment --- src/libsyntax/feature_gate.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 15cf4334154da..a7b391f2d1a4c 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -685,7 +685,9 @@ declare_features! ( (accepted, min_const_unsafe_fn, "1.33.0", Some(55607), None), // `#[cfg_attr(predicate, multiple, attributes, here)]` (accepted, cfg_attr_multi, "1.33.0", Some(54881), None), - // Allows let bindings and destructuring in `const` functions and constants. + // Allows let bindings, assignments and destructuring in `const` functions and constants. + // As long as control flow is not implemented in const eval, `&&` and `||` may not be used + // at the same time as let bindings. (accepted, const_let, "1.33.0", Some(48821), None), ); From aef6288d9ad2c5d9bba2525611ef1a3da703d4b5 Mon Sep 17 00:00:00 2001 From: Oliver Scherer Date: Sun, 30 Dec 2018 19:20:53 +0100 Subject: [PATCH 26/46] const fn feature gate is not needed anymore in a lot of tests --- .../ctfe/const-block-non-item-statement-3.rs | 4 +++- .../ctfe/const-block-non-item-statement.rs | 5 ++++- src/test/run-pass/ctfe/locals-in-const-fn.rs | 2 -- src/test/ui/consts/const_let_assign2.rs | 2 -- src/test/ui/consts/const_let_assign3.rs | 9 ++++++-- src/test/ui/consts/const_let_assign3.stderr | 12 +++++------ src/test/ui/consts/const_let_eq.rs | 2 -- src/test/ui/issues/issue-32829-2.rs | 2 -- src/test/ui/issues/issue-32829-2.stderr | 6 +++--- src/test/ui/unsafe/ranged_ints2_const.rs | 6 +++--- src/test/ui/unsafe/ranged_ints2_const.stderr | 21 +++++++++---------- src/test/ui/unsafe/ranged_ints3_const.rs | 2 +- src/test/ui/unsafe/ranged_ints4_const.rs | 2 +- 13 files changed, 38 insertions(+), 37 deletions(-) diff --git a/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs b/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs index 54ed2efa50bbd..10a4c31f24ed4 100644 --- a/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs +++ b/src/test/run-pass/ctfe/const-block-non-item-statement-3.rs @@ -3,4 +3,6 @@ type Array = [u32; { let x = 2; 5 }]; -pub fn main() {} +pub fn main() { + let _: Array = [0; 5]; +} diff --git a/src/test/run-pass/ctfe/const-block-non-item-statement.rs b/src/test/run-pass/ctfe/const-block-non-item-statement.rs index 92bf5ae7b97e7..a1b9b586ad038 100644 --- a/src/test/run-pass/ctfe/const-block-non-item-statement.rs +++ b/src/test/run-pass/ctfe/const-block-non-item-statement.rs @@ -1,8 +1,11 @@ // run-pass #![allow(dead_code)] +#[repr(u8)] enum Foo { Bar = { let x = 1; 3 } } -pub fn main() {} +pub fn main() { + assert_eq!(3, Foo::Bar as u8); +} diff --git a/src/test/run-pass/ctfe/locals-in-const-fn.rs b/src/test/run-pass/ctfe/locals-in-const-fn.rs index 27e93b913f844..95d50171a847b 100644 --- a/src/test/run-pass/ctfe/locals-in-const-fn.rs +++ b/src/test/run-pass/ctfe/locals-in-const-fn.rs @@ -2,8 +2,6 @@ // https://github.com/rust-lang/rust/issues/48821 -#![feature(const_fn)] - const fn foo(i: usize) -> usize { let x = i; x diff --git a/src/test/ui/consts/const_let_assign2.rs b/src/test/ui/consts/const_let_assign2.rs index 7839aafe5efa6..1c44237e49b7a 100644 --- a/src/test/ui/consts/const_let_assign2.rs +++ b/src/test/ui/consts/const_let_assign2.rs @@ -1,7 +1,5 @@ // compile-pass -#![feature(const_fn)] - pub struct AA { pub data: [u8; 10], } diff --git a/src/test/ui/consts/const_let_assign3.rs b/src/test/ui/consts/const_let_assign3.rs index dd0705edfe78d..cbe73923e9c42 100644 --- a/src/test/ui/consts/const_let_assign3.rs +++ b/src/test/ui/consts/const_let_assign3.rs @@ -17,9 +17,14 @@ const FOO: S = { s }; -type Array = [u32; { let mut x = 2; let y = &mut x; *y = 42; *y}]; +type Array = [u32; { + let mut x = 2; + let y = &mut x; //~^ ERROR references in constants may only refer to immutable values -//~| ERROR constant contains unimplemented expression type + *y = 42; +//~^ ERROR constant contains unimplemented expression type + *y +}]; fn main() { assert_eq!(FOO.state, 3); diff --git a/src/test/ui/consts/const_let_assign3.stderr b/src/test/ui/consts/const_let_assign3.stderr index ecf6625151dfe..6649fb997cce4 100644 --- a/src/test/ui/consts/const_let_assign3.stderr +++ b/src/test/ui/consts/const_let_assign3.stderr @@ -11,16 +11,16 @@ LL | s.foo(3); //~ ERROR references in constants may only refer to immutable | ^ constants require immutable values error[E0017]: references in constants may only refer to immutable values - --> $DIR/const_let_assign3.rs:20:45 + --> $DIR/const_let_assign3.rs:22:13 | -LL | type Array = [u32; { let mut x = 2; let y = &mut x; *y = 42; *y}]; - | ^^^^^^ constants require immutable values +LL | let y = &mut x; + | ^^^^^^ constants require immutable values error[E0019]: constant contains unimplemented expression type - --> $DIR/const_let_assign3.rs:20:53 + --> $DIR/const_let_assign3.rs:24:5 | -LL | type Array = [u32; { let mut x = 2; let y = &mut x; *y = 42; *y}]; - | ^^^^^^^ +LL | *y = 42; + | ^^^^^^^ error: aborting due to 4 previous errors diff --git a/src/test/ui/consts/const_let_eq.rs b/src/test/ui/consts/const_let_eq.rs index 106a45ee1d41f..a2364c392f26b 100644 --- a/src/test/ui/consts/const_let_eq.rs +++ b/src/test/ui/consts/const_let_eq.rs @@ -1,5 +1,3 @@ -#![feature(const_fn)] - // run-pass struct Foo(T); diff --git a/src/test/ui/issues/issue-32829-2.rs b/src/test/ui/issues/issue-32829-2.rs index 379f1ee0f388d..c93c84b5fb773 100644 --- a/src/test/ui/issues/issue-32829-2.rs +++ b/src/test/ui/issues/issue-32829-2.rs @@ -1,7 +1,5 @@ // ignore-tidy-linelength -#![feature(const_fn)] - const bad : u32 = { { 5; diff --git a/src/test/ui/issues/issue-32829-2.stderr b/src/test/ui/issues/issue-32829-2.stderr index 9b7fe71d9a7d6..8d7423f29ae97 100644 --- a/src/test/ui/issues/issue-32829-2.stderr +++ b/src/test/ui/issues/issue-32829-2.stderr @@ -1,17 +1,17 @@ error[E0015]: calls in constants are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:14:9 + --> $DIR/issue-32829-2.rs:12:9 | LL | invalid(); | ^^^^^^^^^ error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:36:9 + --> $DIR/issue-32829-2.rs:34:9 | LL | invalid(); | ^^^^^^^^^ error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-32829-2.rs:58:9 + --> $DIR/issue-32829-2.rs:56:9 | LL | invalid(); | ^^^^^^^^^ diff --git a/src/test/ui/unsafe/ranged_ints2_const.rs b/src/test/ui/unsafe/ranged_ints2_const.rs index c404f25911615..788f49f743cda 100644 --- a/src/test/ui/unsafe/ranged_ints2_const.rs +++ b/src/test/ui/unsafe/ranged_ints2_const.rs @@ -1,4 +1,4 @@ -#![feature(rustc_attrs, const_fn)] +#![feature(rustc_attrs)] #[rustc_layout_scalar_valid_range_start(1)] #[repr(transparent)] @@ -8,13 +8,13 @@ fn main() { const fn foo() -> NonZero { let mut x = unsafe { NonZero(1) }; - let y = &mut x.0; //~ ERROR references in constant functions may only refer to immutable + let y = &mut x.0; //~ ERROR references in const fn are unstable //~^ ERROR mutation of layout constrained field is unsafe unsafe { NonZero(1) } } const fn bar() -> NonZero { let mut x = unsafe { NonZero(1) }; - let y = unsafe { &mut x.0 }; //~ ERROR references in constant functions may only refer to immut + let y = unsafe { &mut x.0 }; //~ ERROR mutable references in const fn are unstable unsafe { NonZero(1) } } diff --git a/src/test/ui/unsafe/ranged_ints2_const.stderr b/src/test/ui/unsafe/ranged_ints2_const.stderr index f79792ffba9be..39a55190b17de 100644 --- a/src/test/ui/unsafe/ranged_ints2_const.stderr +++ b/src/test/ui/unsafe/ranged_ints2_const.stderr @@ -1,24 +1,23 @@ -error[E0017]: references in constant functions may only refer to immutable values - --> $DIR/ranged_ints2_const.rs:11:13 +error: mutable references in const fn are unstable + --> $DIR/ranged_ints2_const.rs:11:9 | -LL | let y = &mut x.0; //~ ERROR references in constant functions may only refer to immutable - | ^^^^^^^^ constant functions require immutable values +LL | let y = &mut x.0; //~ ERROR references in const fn are unstable + | ^ -error[E0017]: references in constant functions may only refer to immutable values - --> $DIR/ranged_ints2_const.rs:18:22 +error: mutable references in const fn are unstable + --> $DIR/ranged_ints2_const.rs:18:9 | -LL | let y = unsafe { &mut x.0 }; //~ ERROR references in constant functions may only refer to immut - | ^^^^^^^^ constant functions require immutable values +LL | let y = unsafe { &mut x.0 }; //~ ERROR mutable references in const fn are unstable + | ^ error[E0133]: mutation of layout constrained field is unsafe and requires unsafe function or block --> $DIR/ranged_ints2_const.rs:11:13 | -LL | let y = &mut x.0; //~ ERROR references in constant functions may only refer to immutable +LL | let y = &mut x.0; //~ ERROR references in const fn are unstable | ^^^^^^^^ mutation of layout constrained field | = note: mutating layout constrained fields cannot statically be checked for valid values error: aborting due to 3 previous errors -Some errors occurred: E0017, E0133. -For more information about an error, try `rustc --explain E0017`. +For more information about this error, try `rustc --explain E0133`. diff --git a/src/test/ui/unsafe/ranged_ints3_const.rs b/src/test/ui/unsafe/ranged_ints3_const.rs index f8ce81f0d1c37..7b03d8eda9380 100644 --- a/src/test/ui/unsafe/ranged_ints3_const.rs +++ b/src/test/ui/unsafe/ranged_ints3_const.rs @@ -1,4 +1,4 @@ -#![feature(rustc_attrs, const_fn)] +#![feature(rustc_attrs)] use std::cell::Cell; diff --git a/src/test/ui/unsafe/ranged_ints4_const.rs b/src/test/ui/unsafe/ranged_ints4_const.rs index 9bda1f69652ec..f09168c3d3f9c 100644 --- a/src/test/ui/unsafe/ranged_ints4_const.rs +++ b/src/test/ui/unsafe/ranged_ints4_const.rs @@ -1,4 +1,4 @@ -#![feature(rustc_attrs, const_fn)] +#![feature(rustc_attrs)] #[rustc_layout_scalar_valid_range_start(1)] #[repr(transparent)] From 80262e6040675b9346816e2845a7fc81c64b82a0 Mon Sep 17 00:00:00 2001 From: Oliver Scherer Date: Wed, 9 Jan 2019 11:32:56 +0100 Subject: [PATCH 27/46] Fix irrefutable slice patterns in const fn --- src/librustc_mir/transform/qualify_consts.rs | 4 ++-- src/librustc_mir/transform/qualify_min_const_fn.rs | 5 +---- src/test/ui/consts/const_let_irrefutable.rs | 11 +++++++++++ src/test/ui/consts/const_let_refutable.rs | 5 +++++ src/test/ui/consts/const_let_refutable.stderr | 9 +++++++++ 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 src/test/ui/consts/const_let_irrefutable.rs create mode 100644 src/test/ui/consts/const_let_refutable.rs create mode 100644 src/test/ui/consts/const_let_refutable.stderr diff --git a/src/librustc_mir/transform/qualify_consts.rs b/src/librustc_mir/transform/qualify_consts.rs index 3d90e55f1e4e2..ddd714fd27e59 100644 --- a/src/librustc_mir/transform/qualify_consts.rs +++ b/src/librustc_mir/transform/qualify_consts.rs @@ -470,6 +470,8 @@ impl<'a, 'tcx> Visitor<'tcx> for Qualifier<'a, 'tcx, 'tcx> { } } + ProjectionElem::ConstantIndex {..} | + ProjectionElem::Subslice {..} | ProjectionElem::Field(..) | ProjectionElem::Index(_) => { let base_ty = proj.base.ty(this.mir, this.tcx).to_ty(this.tcx); @@ -499,8 +501,6 @@ impl<'a, 'tcx> Visitor<'tcx> for Qualifier<'a, 'tcx, 'tcx> { this.qualif.restrict(ty, this.tcx, this.param_env); } - ProjectionElem::ConstantIndex {..} | - ProjectionElem::Subslice {..} | ProjectionElem::Downcast(..) => { this.not_const() } diff --git a/src/librustc_mir/transform/qualify_min_const_fn.rs b/src/librustc_mir/transform/qualify_min_const_fn.rs index 6df6841f869f2..6935255098b67 100644 --- a/src/librustc_mir/transform/qualify_min_const_fn.rs +++ b/src/librustc_mir/transform/qualify_min_const_fn.rs @@ -264,13 +264,10 @@ fn check_place( Place::Static(_) => Err((span, "cannot access `static` items in const fn".into())), Place::Projection(proj) => { match proj.elem { + | ProjectionElem::ConstantIndex { .. } | ProjectionElem::Subslice { .. } | ProjectionElem::Deref | ProjectionElem::Field(..) | ProjectionElem::Index(_) => { check_place(tcx, mir, &proj.base, span) } - // slice patterns are unstable - | ProjectionElem::ConstantIndex { .. } | ProjectionElem::Subslice { .. } => { - return Err((span, "slice patterns in const fn are unstable".into())) - } | ProjectionElem::Downcast(..) => { Err((span, "`match` or `if let` in `const fn` is unstable".into())) } diff --git a/src/test/ui/consts/const_let_irrefutable.rs b/src/test/ui/consts/const_let_irrefutable.rs new file mode 100644 index 0000000000000..424a16f7ed39b --- /dev/null +++ b/src/test/ui/consts/const_let_irrefutable.rs @@ -0,0 +1,11 @@ +// compile-pass + +fn main() {} + +const fn tup((a, b): (i32, i32)) -> i32 { + a + b +} + +const fn array([a, b]: [i32; 2]) -> i32 { + a + b +} diff --git a/src/test/ui/consts/const_let_refutable.rs b/src/test/ui/consts/const_let_refutable.rs new file mode 100644 index 0000000000000..345f682868fbc --- /dev/null +++ b/src/test/ui/consts/const_let_refutable.rs @@ -0,0 +1,5 @@ +fn main() {} + +const fn slice([a, b]: &[i32]) -> i32 { //~ ERROR refutable pattern in function argument + a + b +} diff --git a/src/test/ui/consts/const_let_refutable.stderr b/src/test/ui/consts/const_let_refutable.stderr new file mode 100644 index 0000000000000..c5d2ba02a70c6 --- /dev/null +++ b/src/test/ui/consts/const_let_refutable.stderr @@ -0,0 +1,9 @@ +error[E0005]: refutable pattern in function argument: `&[]` not covered + --> $DIR/const_let_refutable.rs:3:16 + | +LL | const fn slice([a, b]: &[i32]) -> i32 { //~ ERROR refutable pattern in function argument + | ^^^^^^ pattern `&[]` not covered + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0005`. From 0e56e13c1875c93df7eee4b0cccd05e82506d187 Mon Sep 17 00:00:00 2001 From: king6cong Date: Wed, 9 Jan 2019 19:42:25 +0800 Subject: [PATCH 28/46] Remove outdated comment --- config.toml.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.toml.example b/config.toml.example index c68d358b6a67e..23943d34b7ca8 100644 --- a/config.toml.example +++ b/config.toml.example @@ -288,7 +288,7 @@ #codegen-units-std = 1 # Whether or not debug assertions are enabled for the compiler and standard -# library. Also enables compilation of debug! and trace! logging macros. +# library. #debug-assertions = false # Whether or not debuginfo is emitted From 2e4766c3afcdac9f45edbd73723384b360ee4b68 Mon Sep 17 00:00:00 2001 From: Vardhan Thigle Date: Wed, 9 Jan 2019 17:20:37 +0530 Subject: [PATCH 29/46] Exposing enclave image-base to the enclave application image-base could be used by crates like backtrace to providing to make symbol resolution easier. --- src/libstd/sys/sgx/abi/mem.rs | 4 +++- src/libstd/sys/sgx/backtrace.rs | 8 ++------ 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/libstd/sys/sgx/abi/mem.rs b/src/libstd/sys/sgx/abi/mem.rs index 09552d5b4af29..808f1ce3ff2c7 100644 --- a/src/libstd/sys/sgx/abi/mem.rs +++ b/src/libstd/sys/sgx/abi/mem.rs @@ -17,8 +17,10 @@ extern { // Do not remove inline: will result in relocation failure // For the same reason we use inline ASM here instead of an extern static to // locate the base +/// Returns address at which current enclave is loaded. #[inline(always)] -fn image_base() -> u64 { +#[unstable(feature = "sgx_platform", issue = "56975")] +pub fn image_base() -> u64 { let base; unsafe { asm!("lea IMAGE_BASE(%rip),$0":"=r"(base)) }; base diff --git a/src/libstd/sys/sgx/backtrace.rs b/src/libstd/sys/sgx/backtrace.rs index 7e792300f434c..2b8e1da05791d 100644 --- a/src/libstd/sys/sgx/backtrace.rs +++ b/src/libstd/sys/sgx/backtrace.rs @@ -3,6 +3,7 @@ use error::Error; use libc; use sys_common::backtrace::Frame; use unwind as uw; +use sys::sgx::abi::mem::image_base; pub struct BacktraceContext; @@ -75,11 +76,6 @@ extern "C" fn trace_fn( uw::_URC_NO_REASON } -extern { - static IMAGE_BASE: u8; -} - - // To reduce TCB size in Sgx enclave, we do not want to implement resolve_symname functionality. // Rather, we print the offset of the address here, which could be later mapped to correct function. pub fn resolve_symname(frame: Frame, @@ -88,7 +84,7 @@ pub fn resolve_symname(frame: Frame, where F: FnOnce(Option<&str>) -> io::Result<()> { callback(Some(&format!("0x{:x}", - (unsafe {frame.symbol_addr.wrapping_offset_from(&IMAGE_BASE)})))) + (frame.symbol_addr.wrapping_offset_from(image_base() as _))))) } pub fn foreach_symbol_fileline(_: Frame, From 4a454d629cfabe0501f8e5fe3586df313acea2d6 Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Tue, 8 Jan 2019 14:58:29 -0500 Subject: [PATCH 30/46] actually take a slice in this example Fixes #45678 --- src/libstd/primitive_docs.rs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libstd/primitive_docs.rs b/src/libstd/primitive_docs.rs index 475c9b4aeaa4e..c2751508ce094 100644 --- a/src/libstd/primitive_docs.rs +++ b/src/libstd/primitive_docs.rs @@ -550,7 +550,6 @@ mod prim_array { } #[doc(alias = "[")] #[doc(alias = "]")] #[doc(alias = "[]")] -// /// A dynamically-sized view into a contiguous sequence, `[T]`. /// /// *[See also the `std::slice` module](slice/index.html).* @@ -572,11 +571,11 @@ mod prim_array { } /// points to: /// /// ``` -/// let x = &mut [1, 2, 3]; +/// let mut x = [1, 2, 3]; +/// let x = &mut x[..]; // Take a full slice of `x`. /// x[1] = 7; /// assert_eq!(x, &[1, 7, 3]); /// ``` -/// #[stable(feature = "rust1", since = "1.0.0")] mod prim_slice { } From 29a8386bb3b7ff8434f4b1b5be0fd51a48d93bb3 Mon Sep 17 00:00:00 2001 From: Andy Russell Date: Thu, 10 Jan 2019 13:42:59 -0500 Subject: [PATCH 31/46] use structured suggestion when casting a reference --- src/librustc_typeck/check/cast.rs | 10 ++++++++-- src/test/ui/error-codes/E0606.stderr | 11 ++++------- src/test/ui/error-festival.stderr | 11 ++++------- src/test/ui/mismatched_types/cast-rfc0401.stderr | 11 ++++------- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/librustc_typeck/check/cast.rs b/src/librustc_typeck/check/cast.rs index 38f9adee0a48f..fbba89164e6db 100644 --- a/src/librustc_typeck/check/cast.rs +++ b/src/librustc_typeck/check/cast.rs @@ -213,8 +213,14 @@ impl<'a, 'gcx, 'tcx> CastCheck<'tcx> { fcx.ty_to_string(self.expr_ty), cast_ty)); if let Ok(snippet) = fcx.sess().source_map().span_to_snippet(self.expr.span) { - err.span_help(self.expr.span, - &format!("did you mean `*{}`?", snippet)); + err.span_suggestion_with_applicability( + self.expr.span, + "dereference the expression", + format!("*{}", snippet), + Applicability::MaybeIncorrect, + ); + } else { + err.span_help(self.expr.span, "dereference the expression with `*`"); } err.emit(); } diff --git a/src/test/ui/error-codes/E0606.stderr b/src/test/ui/error-codes/E0606.stderr index bc872b3b79cce..89ec4896a2b43 100644 --- a/src/test/ui/error-codes/E0606.stderr +++ b/src/test/ui/error-codes/E0606.stderr @@ -2,13 +2,10 @@ error[E0606]: casting `&u8` as `u8` is invalid --> $DIR/E0606.rs:2:5 | LL | &0u8 as u8; //~ ERROR E0606 - | ^^^^^^^^^^ cannot cast `&u8` as `u8` - | -help: did you mean `*&0u8`? - --> $DIR/E0606.rs:2:5 - | -LL | &0u8 as u8; //~ ERROR E0606 - | ^^^^ + | ----^^^^^^ + | | + | cannot cast `&u8` as `u8` + | help: dereference the expression: `*&0u8` error: aborting due to previous error diff --git a/src/test/ui/error-festival.stderr b/src/test/ui/error-festival.stderr index 2a48272216919..ef7b49399bf3a 100644 --- a/src/test/ui/error-festival.stderr +++ b/src/test/ui/error-festival.stderr @@ -60,13 +60,10 @@ error[E0606]: casting `&u8` as `u32` is invalid --> $DIR/error-festival.rs:37:18 | LL | let y: u32 = x as u32; - | ^^^^^^^^ cannot cast `&u8` as `u32` - | -help: did you mean `*x`? - --> $DIR/error-festival.rs:37:18 - | -LL | let y: u32 = x as u32; - | ^ + | -^^^^^^^ + | | + | cannot cast `&u8` as `u32` + | help: dereference the expression: `*x` error[E0607]: cannot cast thin pointer `*const u8` to fat pointer `*const [u8]` --> $DIR/error-festival.rs:41:5 diff --git a/src/test/ui/mismatched_types/cast-rfc0401.stderr b/src/test/ui/mismatched_types/cast-rfc0401.stderr index 158d114616979..fbe5e6d409934 100644 --- a/src/test/ui/mismatched_types/cast-rfc0401.stderr +++ b/src/test/ui/mismatched_types/cast-rfc0401.stderr @@ -240,13 +240,10 @@ error[E0606]: casting `&{float}` as `f32` is invalid --> $DIR/cast-rfc0401.rs:71:30 | LL | vec![0.0].iter().map(|s| s as f32).collect::>(); //~ ERROR is invalid - | ^^^^^^^^ cannot cast `&{float}` as `f32` - | -help: did you mean `*s`? - --> $DIR/cast-rfc0401.rs:71:30 - | -LL | vec![0.0].iter().map(|s| s as f32).collect::>(); //~ ERROR is invalid - | ^ + | -^^^^^^^ + | | + | cannot cast `&{float}` as `f32` + | help: dereference the expression: `*s` error: aborting due to 34 previous errors From f282f6b1f73f48e050028c121f1eb22a8cac9494 Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Thu, 10 Jan 2019 15:30:36 -0500 Subject: [PATCH 32/46] make note of one more normalization that Paths do Fixes #29008 --- src/libstd/path.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/libstd/path.rs b/src/libstd/path.rs index 317a7d817db43..d9ca6d3eb718a 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -2202,6 +2202,8 @@ impl Path { /// beginning of the path. For example, `a/./b`, `a/b/`, `a/b/.` and /// `a/b` all have `a` and `b` as components, but `./a/b` starts with /// an additional [`CurDir`] component. + /// + /// * A trailing slash is normalized away, `/a/b` and `/a/b/` are equivalent. /// /// Note that no other normalization takes place; in particular, `a/c` /// and `a/b/../c` are distinct, to account for the possibility that `b` From beb6495862942903d71e39e328b62b58cd6d2bb2 Mon Sep 17 00:00:00 2001 From: Steve Klabnik Date: Thu, 10 Jan 2019 15:40:05 -0500 Subject: [PATCH 33/46] note that FromStr does not work for borrowed types Fixes #47757 --- src/libcore/str/mod.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/libcore/str/mod.rs b/src/libcore/str/mod.rs index 689d456d41246..bdde187d931cc 100644 --- a/src/libcore/str/mod.rs +++ b/src/libcore/str/mod.rs @@ -20,8 +20,7 @@ pub mod pattern; #[allow(missing_docs)] pub mod lossy; -/// A trait to abstract the idea of creating a new instance of a type from a -/// string. +/// Parse a value from a string /// /// `FromStr`'s [`from_str`] method is often used implicitly, through /// [`str`]'s [`parse`] method. See [`parse`]'s documentation for examples. @@ -30,6 +29,11 @@ pub mod lossy; /// [`str`]: ../../std/primitive.str.html /// [`parse`]: ../../std/primitive.str.html#method.parse /// +/// `FromStr` does not have a lifetime parameter, and so you can only parse types +/// that do not contain a lifetime parameter themselves. In other words, you can +/// parse an `i32` with `FromStr`, but not a `&i32`. You can parse a struct that +/// contains an `i32`, but not one that contains an `&i32`. +/// /// # Examples /// /// Basic implementation of `FromStr` on an example `Point` type: From e598ea83c88c5dfe203c5f39d391ed01626e4a17 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Thu, 10 Jan 2019 17:08:42 -0500 Subject: [PATCH 34/46] Update src/libstd/path.rs Co-Authored-By: steveklabnik --- src/libstd/path.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libstd/path.rs b/src/libstd/path.rs index d9ca6d3eb718a..5c7bff70a0dcd 100644 --- a/src/libstd/path.rs +++ b/src/libstd/path.rs @@ -2202,7 +2202,7 @@ impl Path { /// beginning of the path. For example, `a/./b`, `a/b/`, `a/b/.` and /// `a/b` all have `a` and `b` as components, but `./a/b` starts with /// an additional [`CurDir`] component. - /// + /// /// * A trailing slash is normalized away, `/a/b` and `/a/b/` are equivalent. /// /// Note that no other normalization takes place; in particular, `a/c` From 27989ec30b0981ef0f972d793e43aa5ce0a2e799 Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Fri, 11 Jan 2019 14:27:12 +1300 Subject: [PATCH 35/46] Remove submodule step from README Since the bootstrap does it now --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 7eb5e8067eda2..cb1f06257ed15 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,6 @@ Read ["Installation"] from [The Book]. 3. Build and install: ```sh - $ git submodule update --init --recursive --progress $ ./x.py build && sudo ./x.py install ``` From 4103e5b34bcd5fff13afe79494d6955d7996c804 Mon Sep 17 00:00:00 2001 From: Nick Cameron Date: Fri, 11 Jan 2019 18:13:45 +1300 Subject: [PATCH 36/46] Add a profiles section to the manifest --- src/tools/build-manifest/src/main.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/tools/build-manifest/src/main.rs b/src/tools/build-manifest/src/main.rs index 28c0b6ccb3187..b00daa716777f 100644 --- a/src/tools/build-manifest/src/main.rs +++ b/src/tools/build-manifest/src/main.rs @@ -131,7 +131,8 @@ struct Manifest { manifest_version: String, date: String, pkg: BTreeMap, - renames: BTreeMap + renames: BTreeMap, + profiles: BTreeMap>, } #[derive(Serialize)] @@ -340,6 +341,7 @@ impl Builder { date: self.date.to_string(), pkg: BTreeMap::new(), renames: BTreeMap::new(), + profiles: BTreeMap::new(), }; self.package("rustc", &mut manifest.pkg, HOSTS); @@ -355,6 +357,20 @@ impl Builder { self.package("llvm-tools-preview", &mut manifest.pkg, TARGETS); self.package("lldb-preview", &mut manifest.pkg, TARGETS); + self.profile("minimal", + &mut manifest.profiles, + &["rustc", "cargo", "rust-std", "rust-mingw"]); + self.profile("default", + &mut manifest.profiles, + &["rustc", "cargo", "rust-std", "rust-mingw", + "rust-docs", "rustfmt-preview", "clippy-preview"]); + self.profile("complete", + &mut manifest.profiles, + &["rustc", "cargo", "rust-std", "rust-mingw", + "rust-docs", "rustfmt-preview", "clippy-preview", + "rls-preview", "rust-src", "llvm-tools-preview", + "lldb-preview", "rust-analysis"]); + manifest.renames.insert("rls".to_owned(), Rename { to: "rls-preview".to_owned() }); manifest.renames.insert("rustfmt".to_owned(), Rename { to: "rustfmt-preview".to_owned() }); manifest.renames.insert("clippy".to_owned(), Rename { to: "clippy-preview".to_owned() }); @@ -453,6 +469,13 @@ impl Builder { return manifest; } + fn profile(&mut self, + profile_name: &str, + dst: &mut BTreeMap>, + pkgs: &[&str]) { + dst.insert(profile_name.to_owned(), pkgs.iter().map(|s| (*s).to_owned()).collect()); + } + fn package(&mut self, pkgname: &str, dst: &mut BTreeMap, From 928efca151b0afcff90771ef94e09f7634646082 Mon Sep 17 00:00:00 2001 From: Jethro Beekman Date: Fri, 11 Jan 2019 15:00:08 +0530 Subject: [PATCH 37/46] Fix undefined behavior --- src/libstd/sys/sgx/ext/arch.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libstd/sys/sgx/ext/arch.rs b/src/libstd/sys/sgx/ext/arch.rs index ba6f9e622ad35..3bd87b5d26574 100644 --- a/src/libstd/sys/sgx/ext/arch.rs +++ b/src/libstd/sys/sgx/ext/arch.rs @@ -36,7 +36,7 @@ pub fn egetkey(request: &Align512<[u8; 512]>) -> Result, u32> : "={eax}"(error) : "{eax}"(ENCLU_EGETKEY), "{rbx}"(request), - "{rcx}"(out.get_mut()) + "{rcx}"(out.as_mut_ptr()) : "flags" ); @@ -66,7 +66,7 @@ pub fn ereport( : "{eax}"(ENCLU_EREPORT), "{rbx}"(targetinfo), "{rcx}"(reportdata), - "{rdx}"(report.get_mut()) + "{rdx}"(report.as_mut_ptr()) ); report.into_inner() From 16a4e477d8f5c3950238aa083781e21d5ef671fb Mon Sep 17 00:00:00 2001 From: Oliver Scherer Date: Fri, 11 Jan 2019 12:19:08 +0100 Subject: [PATCH 38/46] Remove unneeded but benign change --- src/librustc_mir/transform/qualify_consts.rs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/librustc_mir/transform/qualify_consts.rs b/src/librustc_mir/transform/qualify_consts.rs index ddd714fd27e59..193b0fe05f002 100644 --- a/src/librustc_mir/transform/qualify_consts.rs +++ b/src/librustc_mir/transform/qualify_consts.rs @@ -359,7 +359,6 @@ impl<'a, 'tcx> Visitor<'tcx> for Qualifier<'a, 'tcx, 'tcx> { LocalKind::ReturnPointer => { self.not_const(); } - LocalKind::Arg | LocalKind::Var if self.mode == Mode::Fn => { self.add(Qualif::NOT_CONST); } From 434fe4e3569298ea4855f3024466764cc317542c Mon Sep 17 00:00:00 2001 From: Alexander Ronald Altman Date: Fri, 11 Jan 2019 11:06:56 -0600 Subject: [PATCH 39/46] Correct RELEASES.md for 1.32.0 The `into_to_from_bytes` feature was stabilized for `i128` and `u128` just like for the other integer types, but they seem to have been missed. --- RELEASES.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index aae25ab9988e9..a8979b5ea9c83 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -121,6 +121,12 @@ Stabilized APIs - [`i64::from_be_bytes`] - [`i64::from_le_bytes`] - [`i64::from_ne_bytes`] +- [`i128::to_be_bytes`] +- [`i128::to_le_bytes`] +- [`i128::to_ne_bytes`] +- [`i128::from_be_bytes`] +- [`i128::from_le_bytes`] +- [`i128::from_ne_bytes`] - [`isize::to_be_bytes`] - [`isize::to_le_bytes`] - [`isize::to_ne_bytes`] @@ -151,6 +157,12 @@ Stabilized APIs - [`u64::from_be_bytes`] - [`u64::from_le_bytes`] - [`u64::from_ne_bytes`] +- [`u128::to_be_bytes`] +- [`u128::to_le_bytes`] +- [`u128::to_ne_bytes`] +- [`u128::from_be_bytes`] +- [`u128::from_le_bytes`] +- [`u128::from_ne_bytes`] - [`usize::to_be_bytes`] - [`usize::to_le_bytes`] - [`usize::to_ne_bytes`] From 020e1f5b60d406524599bff35b43167f2af4302f Mon Sep 17 00:00:00 2001 From: Andy Russell Date: Fri, 11 Jan 2019 12:40:05 -0500 Subject: [PATCH 40/46] don't unwrap unexpected tokens in `format!` Fixes #57512. --- src/libsyntax_ext/format.rs | 2 +- src/test/ui/macros/format-parse-errors.rs | 1 + src/test/ui/macros/format-parse-errors.stderr | 14 ++++++++++---- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs index 61722ba551653..3e3bca7080fb6 100644 --- a/src/libsyntax_ext/format.rs +++ b/src/libsyntax_ext/format.rs @@ -159,7 +159,7 @@ fn parse_args<'a>( }; let name: &str = &ident.as_str(); - p.expect(&token::Eq).unwrap(); + p.expect(&token::Eq)?; let e = p.parse_expr()?; if let Some(prev) = names.get(name) { ecx.struct_span_err(e.span, &format!("duplicate argument named `{}`", name)) diff --git a/src/test/ui/macros/format-parse-errors.rs b/src/test/ui/macros/format-parse-errors.rs index ba1e441fe339f..96aee5e6aeed5 100644 --- a/src/test/ui/macros/format-parse-errors.rs +++ b/src/test/ui/macros/format-parse-errors.rs @@ -2,6 +2,7 @@ fn main() { format!(); //~ ERROR requires at least a format string argument format!(struct); //~ ERROR expected expression format!("s", name =); //~ ERROR expected expression + format!("s", foo = foo, bar); //~ ERROR expected `=` format!("s", foo = struct); //~ ERROR expected expression format!("s", struct); //~ ERROR expected expression diff --git a/src/test/ui/macros/format-parse-errors.stderr b/src/test/ui/macros/format-parse-errors.stderr index 0463c54890177..a3d2786bce111 100644 --- a/src/test/ui/macros/format-parse-errors.stderr +++ b/src/test/ui/macros/format-parse-errors.stderr @@ -18,20 +18,26 @@ error: expected expression, found `` LL | format!("s", name =); //~ ERROR expected expression | ^ expected expression +error: expected `=`, found `` + --> $DIR/format-parse-errors.rs:5:29 + | +LL | format!("s", foo = foo, bar); //~ ERROR expected `=` + | ^^^ expected `=` + error: expected expression, found keyword `struct` - --> $DIR/format-parse-errors.rs:5:24 + --> $DIR/format-parse-errors.rs:6:24 | LL | format!("s", foo = struct); //~ ERROR expected expression | ^^^^^^ expected expression error: expected expression, found keyword `struct` - --> $DIR/format-parse-errors.rs:6:18 + --> $DIR/format-parse-errors.rs:7:18 | LL | format!("s", struct); //~ ERROR expected expression | ^^^^^^ expected expression error: format argument must be a string literal - --> $DIR/format-parse-errors.rs:9:13 + --> $DIR/format-parse-errors.rs:10:13 | LL | format!(123); //~ ERROR format argument must be a string literal | ^^^ @@ -40,5 +46,5 @@ help: you might be missing a string literal to format with LL | format!("{}", 123); //~ ERROR format argument must be a string literal | ^^^^^ -error: aborting due to 6 previous errors +error: aborting due to 7 previous errors From fdd2f0d8235bb492c9895fb07f677dfab08dc868 Mon Sep 17 00:00:00 2001 From: Alexander Ronald Altman Date: Fri, 11 Jan 2019 13:59:04 -0600 Subject: [PATCH 41/46] Fix new hyperlinks in RELEASES.md --- RELEASES.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/RELEASES.md b/RELEASES.md index a8979b5ea9c83..83c44774da283 100644 --- a/RELEASES.md +++ b/RELEASES.md @@ -220,6 +220,12 @@ Compatibility Notes [`UnsafeCell::get`]: https://doc.rust-lang.org/std/cell/struct.UnsafeCell.html#method.get [`slice::as_ptr`]: https://doc.rust-lang.org/std/primitive.slice.html#method.as_ptr [`char::is_ascii`]: https://doc.rust-lang.org/std/primitive.char.html#method.is_ascii +[`i128::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.from_be_bytes +[`i128::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.from_le_bytes +[`i128::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.from_ne_bytes +[`i128::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.to_be_bytes +[`i128::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.to_le_bytes +[`i128::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i128.html#method.to_ne_bytes [`i16::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.from_be_bytes [`i16::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.from_le_bytes [`i16::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.i16.html#method.from_ne_bytes @@ -252,6 +258,12 @@ Compatibility Notes [`isize::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.isize.html#method.to_ne_bytes [`iter::empty`]: https://doc.rust-lang.org/std/iter/fn.empty.html [`str::as_ptr`]: https://doc.rust-lang.org/std/primitive.str.html#method.as_ptr +[`u128::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.from_be_bytes +[`u128::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.from_le_bytes +[`u128::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.from_ne_bytes +[`u128::to_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.to_be_bytes +[`u128::to_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.to_le_bytes +[`u128::to_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u128.html#method.to_ne_bytes [`u16::from_be_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.from_be_bytes [`u16::from_le_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.from_le_bytes [`u16::from_ne_bytes`]: https://doc.rust-lang.org/stable/std/primitive.u16.html#method.from_ne_bytes From 49e8318b0c4329b668b97b496e3cc044923e4504 Mon Sep 17 00:00:00 2001 From: David Sanders Date: Fri, 11 Jan 2019 13:58:13 -0800 Subject: [PATCH 42/46] Fixing a typographical error. --- src/librustc_mir/diagnostics.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/librustc_mir/diagnostics.rs b/src/librustc_mir/diagnostics.rs index 7e8ac3fb72006..212edaaa1ba66 100644 --- a/src/librustc_mir/diagnostics.rs +++ b/src/librustc_mir/diagnostics.rs @@ -2334,7 +2334,7 @@ local variable that already exists, and hence no temporary is created. Temporaries are not always dropped at the end of the enclosing statement. In simple cases where the `&` expression is immediately stored into a variable, the compiler will automatically extend -the lifetime of the temporary until the end of the enclosinb +the lifetime of the temporary until the end of the enclosing block. Therefore, an alternative way to fix the original program is to write `let tmp = &foo()` and not `let tmp = foo()`: From afcb93811650252f1533d4a1453ab697f787cfec Mon Sep 17 00:00:00 2001 From: varkor Date: Sat, 12 Jan 2019 03:10:59 +0000 Subject: [PATCH 43/46] Stabilise irrefutable if-let and while-let patterns This stabilises RFC 2086 (https://github.com/rust-lang/rust/issues/44495). Co-Authored-By: Sebastian Malton --- .../irrefutable-let-patterns.md | 28 ------- src/librustc/lint/builtin.rs | 2 +- src/librustc_mir/diagnostics.rs | 8 +- src/librustc_mir/hair/pattern/check_match.rs | 49 +++--------- src/libsyntax/feature_gate.rs | 5 +- .../binding/allow_irrefutable_let_patterns.rs | 12 --- src/test/ui/error-codes/E0162.rs | 8 -- src/test/ui/error-codes/E0162.stderr | 9 --- src/test/ui/error-codes/E0165.rs | 9 --- src/test/ui/error-codes/E0165.stderr | 9 --- ...e-gate-without_gate_irrefutable_pattern.rs | 8 -- ...te-without_gate_irrefutable_pattern.stderr | 9 --- src/test/ui/if/if-let.rs | 14 ++-- src/test/ui/if/if-let.stderr | 77 ++++++++++++------- src/test/ui/issues/issue-51714.rs | 2 +- src/test/ui/issues/issue-51714.stderr | 13 ++-- .../pattern/deny-irrefutable-let-patterns.rs | 9 +++ .../deny-irrefutable-let-patterns.stderr | 22 ++++++ .../pattern}/enum-variant-generic-args.rs | 3 +- .../ui/pattern/irrefutable-let-patterns.rs | 11 +++ .../syntax-ambiguity-2015.rs | 1 - .../syntax-ambiguity-2015.stderr | 12 +-- .../syntax-ambiguity-2018.rs | 1 - .../syntax-ambiguity-2018.stderr | 12 +-- ...fail-no_gate_irrefutable_if_let_pattern.rs | 5 -- ...-no_gate_irrefutable_if_let_pattern.stderr | 9 --- ...fail-with_gate_irrefutable_pattern_deny.rs | 7 -- ...-with_gate_irrefutable_pattern_deny.stderr | 10 --- src/test/ui/while-let.rs | 9 ++- src/test/ui/while-let.stderr | 41 ++++++---- 30 files changed, 175 insertions(+), 239 deletions(-) delete mode 100644 src/doc/unstable-book/src/language-features/irrefutable-let-patterns.md delete mode 100644 src/test/run-pass/binding/allow_irrefutable_let_patterns.rs delete mode 100644 src/test/ui/error-codes/E0162.rs delete mode 100644 src/test/ui/error-codes/E0162.stderr delete mode 100644 src/test/ui/error-codes/E0165.rs delete mode 100644 src/test/ui/error-codes/E0165.stderr delete mode 100644 src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.rs delete mode 100644 src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.stderr create mode 100644 src/test/ui/pattern/deny-irrefutable-let-patterns.rs create mode 100644 src/test/ui/pattern/deny-irrefutable-let-patterns.stderr rename src/test/{run-pass => ui/pattern}/enum-variant-generic-args.rs (97%) create mode 100644 src/test/ui/pattern/irrefutable-let-patterns.rs delete mode 100644 src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.rs delete mode 100644 src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.stderr delete mode 100644 src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.rs delete mode 100644 src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.stderr diff --git a/src/doc/unstable-book/src/language-features/irrefutable-let-patterns.md b/src/doc/unstable-book/src/language-features/irrefutable-let-patterns.md deleted file mode 100644 index 46b843778e810..0000000000000 --- a/src/doc/unstable-book/src/language-features/irrefutable-let-patterns.md +++ /dev/null @@ -1,28 +0,0 @@ -# `irrefutable_let_patterns` - -The tracking issue for this feature is: [#44495] - -[#44495]: https://github.com/rust-lang/rust/issues/44495 - ------------------------- - -This feature changes the way that "irrefutable patterns" are handled -in the `if let` and `while let` forms. An *irrefutable pattern* is one -that cannot fail to match -- for example, the `_` pattern matches any -value, and hence it is "irrefutable". Without this feature, using an -irrefutable pattern in an `if let` gives a hard error (since often -this indicates programmer error). But when the feature is enabled, the -error becomes a lint (since in some cases irrefutable patterns are -expected). This means you can use `#[allow]` to silence the lint: - -```rust -#![feature(irrefutable_let_patterns)] - -#[allow(irrefutable_let_patterns)] -fn main() { - // These two examples used to be errors, but now they - // trigger a lint (that is allowed): - if let _ = 5 {} - while let _ = 5 { break; } -} -``` diff --git a/src/librustc/lint/builtin.rs b/src/librustc/lint/builtin.rs index 22854382df15c..c428ff1bd1b37 100644 --- a/src/librustc/lint/builtin.rs +++ b/src/librustc/lint/builtin.rs @@ -286,7 +286,7 @@ declare_lint! { declare_lint! { pub IRREFUTABLE_LET_PATTERNS, - Deny, + Warn, "detects irrefutable patterns in if-let and while-let statements" } diff --git a/src/librustc_mir/diagnostics.rs b/src/librustc_mir/diagnostics.rs index 7e8ac3fb72006..b045b1a6913c9 100644 --- a/src/librustc_mir/diagnostics.rs +++ b/src/librustc_mir/diagnostics.rs @@ -325,11 +325,13 @@ match Some(42) { "##, E0162: r##" +#### Note: this error code is no longer emitted by the compiler. + An if-let pattern attempts to match the pattern, and enters the body if the match was successful. If the match is irrefutable (when it cannot fail to match), use a regular `let`-binding instead. For instance: -```compile_fail,E0162 +```compile_pass struct Irrefutable(i32); let irr = Irrefutable(0); @@ -352,11 +354,13 @@ println!("{}", x); "##, E0165: r##" +#### Note: this error code is no longer emitted by the compiler. + A while-let pattern attempts to match the pattern, and enters the body if the match was successful. If the match is irrefutable (when it cannot fail to match), use a regular `let`-binding inside a `loop` instead. For instance: -```compile_fail,E0165 +```compile_pass,no_run struct Irrefutable(i32); let irr = Irrefutable(0); diff --git a/src/librustc_mir/hair/pattern/check_match.rs b/src/librustc_mir/hair/pattern/check_match.rs index c104af7a7d81b..10213beba2a6d 100644 --- a/src/librustc_mir/hair/pattern/check_match.rs +++ b/src/librustc_mir/hair/pattern/check_match.rs @@ -350,7 +350,6 @@ fn check_arms<'a, 'tcx>(cx: &mut MatchCheckCtxt<'a, 'tcx>, { let mut seen = Matrix::empty(); let mut catchall = None; - let mut printed_if_let_err = false; for (arm_index, &(ref pats, guard)) in arms.iter().enumerate() { for &(pat, hir_pat) in pats { let v = smallvec![pat]; @@ -359,27 +358,12 @@ fn check_arms<'a, 'tcx>(cx: &mut MatchCheckCtxt<'a, 'tcx>, NotUseful => { match source { hir::MatchSource::IfLetDesugar { .. } => { - if cx.tcx.features().irrefutable_let_patterns { - cx.tcx.lint_node( - lint::builtin::IRREFUTABLE_LET_PATTERNS, - hir_pat.id, pat.span, - "irrefutable if-let pattern"); - } else { - if printed_if_let_err { - // we already printed an irrefutable if-let pattern error. - // We don't want two, that's just confusing. - } else { - // find the first arm pattern so we can use its span - let &(ref first_arm_pats, _) = &arms[0]; - let first_pat = &first_arm_pats[0]; - let span = first_pat.0.span; - struct_span_err!(cx.tcx.sess, span, E0162, - "irrefutable if-let pattern") - .span_label(span, "irrefutable pattern") - .emit(); - printed_if_let_err = true; - } - } + cx.tcx.lint_node( + lint::builtin::IRREFUTABLE_LET_PATTERNS, + hir_pat.id, + pat.span, + "irrefutable if-let pattern", + ); } hir::MatchSource::WhileLetDesugar => { @@ -394,21 +378,12 @@ fn check_arms<'a, 'tcx>(cx: &mut MatchCheckCtxt<'a, 'tcx>, }, // The arm with the wildcard pattern. 1 => { - if cx.tcx.features().irrefutable_let_patterns { - cx.tcx.lint_node( - lint::builtin::IRREFUTABLE_LET_PATTERNS, - hir_pat.id, pat.span, - "irrefutable while-let pattern"); - } else { - // find the first arm pattern so we can use its span - let &(ref first_arm_pats, _) = &arms[0]; - let first_pat = &first_arm_pats[0]; - let span = first_pat.0.span; - struct_span_err!(cx.tcx.sess, span, E0165, - "irrefutable while-let pattern") - .span_label(span, "irrefutable pattern") - .emit(); - } + cx.tcx.lint_node( + lint::builtin::IRREFUTABLE_LET_PATTERNS, + hir_pat.id, + pat.span, + "irrefutable while-let pattern", + ); }, _ => bug!(), } diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index cddec3eb23a5a..f31871913f0d2 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -414,9 +414,6 @@ declare_features! ( // `#[doc(alias = "...")]` (active, doc_alias, "1.27.0", Some(50146), None), - // Allows irrefutable patterns in `if let` and `while let` statements (RFC 2086). - (active, irrefutable_let_patterns, "1.27.0", Some(44495), None), - // inconsistent bounds in where clauses (active, trivial_bounds, "1.28.0", Some(48214), None), @@ -684,6 +681,8 @@ declare_features! ( (accepted, underscore_imports, "1.33.0", Some(48216), None), // Allows `#[repr(packed(N))]` attribute on structs. (accepted, repr_packed, "1.33.0", Some(33158), None), + // Allows irrefutable patterns in `if let` and `while let` statements (RFC 2086). + (accepted, irrefutable_let_patterns, "1.33.0", Some(44495), None), // Allows calling `const unsafe fn` inside `unsafe` blocks in `const fn` functions. (accepted, min_const_unsafe_fn, "1.33.0", Some(55607), None), // `#[cfg_attr(predicate, multiple, attributes, here)]` diff --git a/src/test/run-pass/binding/allow_irrefutable_let_patterns.rs b/src/test/run-pass/binding/allow_irrefutable_let_patterns.rs deleted file mode 100644 index d9a42a2963998..0000000000000 --- a/src/test/run-pass/binding/allow_irrefutable_let_patterns.rs +++ /dev/null @@ -1,12 +0,0 @@ -// run-pass -#![feature(irrefutable_let_patterns)] - -// must-compile-successfully-irrefutable_let_patterns_with_gate -#[allow(irrefutable_let_patterns)] -fn main() { - if let _ = 5 {} - - while let _ = 5 { - break; - } -} diff --git a/src/test/ui/error-codes/E0162.rs b/src/test/ui/error-codes/E0162.rs deleted file mode 100644 index d3221f8e1769a..0000000000000 --- a/src/test/ui/error-codes/E0162.rs +++ /dev/null @@ -1,8 +0,0 @@ -struct Irrefutable(i32); - -fn main() { - let irr = Irrefutable(0); - if let Irrefutable(x) = irr { //~ ERROR E0162 - println!("{}", x); - } -} diff --git a/src/test/ui/error-codes/E0162.stderr b/src/test/ui/error-codes/E0162.stderr deleted file mode 100644 index ca5c56cd59d31..0000000000000 --- a/src/test/ui/error-codes/E0162.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0162]: irrefutable if-let pattern - --> $DIR/E0162.rs:5:12 - | -LL | if let Irrefutable(x) = irr { //~ ERROR E0162 - | ^^^^^^^^^^^^^^ irrefutable pattern - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0162`. diff --git a/src/test/ui/error-codes/E0165.rs b/src/test/ui/error-codes/E0165.rs deleted file mode 100644 index 952071c8b9e77..0000000000000 --- a/src/test/ui/error-codes/E0165.rs +++ /dev/null @@ -1,9 +0,0 @@ -struct Irrefutable(i32); - -fn main() { - let irr = Irrefutable(0); - while let Irrefutable(x) = irr { //~ ERROR E0165 - //~| irrefutable pattern - // ... - } -} diff --git a/src/test/ui/error-codes/E0165.stderr b/src/test/ui/error-codes/E0165.stderr deleted file mode 100644 index e0d192ea15290..0000000000000 --- a/src/test/ui/error-codes/E0165.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0165]: irrefutable while-let pattern - --> $DIR/E0165.rs:5:15 - | -LL | while let Irrefutable(x) = irr { //~ ERROR E0165 - | ^^^^^^^^^^^^^^ irrefutable pattern - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0165`. diff --git a/src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.rs b/src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.rs deleted file mode 100644 index cae2f1d2793df..0000000000000 --- a/src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.rs +++ /dev/null @@ -1,8 +0,0 @@ -// gate-test-irrefutable_let_patterns - - -#[allow(irrefutable_let_patterns)] -fn main() { - if let _ = 5 {} - //~^ ERROR irrefutable if-let pattern [E0162] -} diff --git a/src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.stderr b/src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.stderr deleted file mode 100644 index fa8b74ffecf3a..0000000000000 --- a/src/test/ui/feature-gates/feature-gate-without_gate_irrefutable_pattern.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0162]: irrefutable if-let pattern - --> $DIR/feature-gate-without_gate_irrefutable_pattern.rs:6:12 - | -LL | if let _ = 5 {} - | ^ irrefutable pattern - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0162`. diff --git a/src/test/ui/if/if-let.rs b/src/test/ui/if/if-let.rs index 304de457059f3..741685fe9b649 100644 --- a/src/test/ui/if/if-let.rs +++ b/src/test/ui/if/if-let.rs @@ -1,3 +1,5 @@ +// compile-pass + fn macros() { macro_rules! foo{ ($p:pat, $e:expr, $b:block) => {{ @@ -10,20 +12,20 @@ fn macros() { }} } - foo!(a, 1, { //~ ERROR irrefutable if-let + foo!(a, 1, { //~ WARN irrefutable if-let println!("irrefutable pattern"); }); - bar!(a, 1, { //~ ERROR irrefutable if-let + bar!(a, 1, { //~ WARN irrefutable if-let println!("irrefutable pattern"); }); } pub fn main() { - if let a = 1 { //~ ERROR irrefutable if-let + if let a = 1 { //~ WARN irrefutable if-let println!("irrefutable pattern"); } - if let a = 1 { //~ ERROR irrefutable if-let + if let a = 1 { //~ WARN irrefutable if-let println!("irrefutable pattern"); } else if true { println!("else-if in irrefutable if-let"); @@ -33,13 +35,13 @@ pub fn main() { if let 1 = 2 { println!("refutable pattern"); - } else if let a = 1 { //~ ERROR irrefutable if-let + } else if let a = 1 { //~ WARN irrefutable if-let println!("irrefutable pattern"); } if true { println!("if"); - } else if let a = 1 { //~ ERROR irrefutable if-let + } else if let a = 1 { //~ WARN irrefutable if-let println!("irrefutable pattern"); } } diff --git a/src/test/ui/if/if-let.stderr b/src/test/ui/if/if-let.stderr index 3802d7828ae7d..b2a104bfacffc 100644 --- a/src/test/ui/if/if-let.stderr +++ b/src/test/ui/if/if-let.stderr @@ -1,39 +1,62 @@ -error[E0162]: irrefutable if-let pattern - --> $DIR/if-let.rs:13:10 +warning: irrefutable if-let pattern + --> $DIR/if-let.rs:6:13 | -LL | foo!(a, 1, { //~ ERROR irrefutable if-let - | ^ irrefutable pattern - -error[E0162]: irrefutable if-let pattern - --> $DIR/if-let.rs:16:10 +LL | if let $p = $e $b + | ^^ +... +LL | / foo!(a, 1, { //~ WARN irrefutable if-let +LL | | println!("irrefutable pattern"); +LL | | }); + | |_______- in this macro invocation | -LL | bar!(a, 1, { //~ ERROR irrefutable if-let - | ^ irrefutable pattern + = note: #[warn(irrefutable_let_patterns)] on by default -error[E0162]: irrefutable if-let pattern - --> $DIR/if-let.rs:22:12 +warning: irrefutable if-let pattern + --> $DIR/if-let.rs:6:13 | -LL | if let a = 1 { //~ ERROR irrefutable if-let - | ^ irrefutable pattern +LL | if let $p = $e $b + | ^^ +... +LL | / bar!(a, 1, { //~ WARN irrefutable if-let +LL | | println!("irrefutable pattern"); +LL | | }); + | |_______- in this macro invocation -error[E0162]: irrefutable if-let pattern - --> $DIR/if-let.rs:26:12 +warning: irrefutable if-let pattern + --> $DIR/if-let.rs:24:5 | -LL | if let a = 1 { //~ ERROR irrefutable if-let - | ^ irrefutable pattern +LL | / if let a = 1 { //~ WARN irrefutable if-let +LL | | println!("irrefutable pattern"); +LL | | } + | |_____^ -error[E0162]: irrefutable if-let pattern - --> $DIR/if-let.rs:36:19 +warning: irrefutable if-let pattern + --> $DIR/if-let.rs:28:5 | -LL | } else if let a = 1 { //~ ERROR irrefutable if-let - | ^ irrefutable pattern +LL | / if let a = 1 { //~ WARN irrefutable if-let +LL | | println!("irrefutable pattern"); +LL | | } else if true { +LL | | println!("else-if in irrefutable if-let"); +LL | | } else { +LL | | println!("else in irrefutable if-let"); +LL | | } + | |_____^ -error[E0162]: irrefutable if-let pattern - --> $DIR/if-let.rs:42:19 +warning: irrefutable if-let pattern + --> $DIR/if-let.rs:38:12 | -LL | } else if let a = 1 { //~ ERROR irrefutable if-let - | ^ irrefutable pattern +LL | } else if let a = 1 { //~ WARN irrefutable if-let + | ____________^ +LL | | println!("irrefutable pattern"); +LL | | } + | |_____^ -error: aborting due to 6 previous errors +warning: irrefutable if-let pattern + --> $DIR/if-let.rs:44:12 + | +LL | } else if let a = 1 { //~ WARN irrefutable if-let + | ____________^ +LL | | println!("irrefutable pattern"); +LL | | } + | |_____^ -For more information about this error, try `rustc --explain E0162`. diff --git a/src/test/ui/issues/issue-51714.rs b/src/test/ui/issues/issue-51714.rs index b52e3ac6abd84..4885e4a2db7d5 100644 --- a/src/test/ui/issues/issue-51714.rs +++ b/src/test/ui/issues/issue-51714.rs @@ -10,5 +10,5 @@ fn main() { [(); return while let Some(n) = Some(0) {}]; //~^ ERROR return statement outside of function body - //~^^ ERROR irrefutable while-let pattern + //~^^ WARN irrefutable while-let pattern } diff --git a/src/test/ui/issues/issue-51714.stderr b/src/test/ui/issues/issue-51714.stderr index 47a8b415b0cf0..df11f6b7f5a53 100644 --- a/src/test/ui/issues/issue-51714.stderr +++ b/src/test/ui/issues/issue-51714.stderr @@ -22,13 +22,14 @@ error[E0572]: return statement outside of function body LL | [(); return while let Some(n) = Some(0) {}]; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error[E0165]: irrefutable while-let pattern - --> $DIR/issue-51714.rs:11:27 +warning: irrefutable while-let pattern + --> $DIR/issue-51714.rs:11:17 | LL | [(); return while let Some(n) = Some(0) {}]; - | ^^^^^^^ irrefutable pattern + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: #[warn(irrefutable_let_patterns)] on by default -error: aborting due to 5 previous errors +error: aborting due to 4 previous errors -Some errors occurred: E0165, E0572. -For more information about an error, try `rustc --explain E0165`. +For more information about this error, try `rustc --explain E0572`. diff --git a/src/test/ui/pattern/deny-irrefutable-let-patterns.rs b/src/test/ui/pattern/deny-irrefutable-let-patterns.rs new file mode 100644 index 0000000000000..14040c8ada67d --- /dev/null +++ b/src/test/ui/pattern/deny-irrefutable-let-patterns.rs @@ -0,0 +1,9 @@ +#![deny(irrefutable_let_patterns)] + +fn main() { + if let _ = 5 {} //~ ERROR irrefutable if-let pattern + + while let _ = 5 { //~ ERROR irrefutable while-let pattern + break; + } +} diff --git a/src/test/ui/pattern/deny-irrefutable-let-patterns.stderr b/src/test/ui/pattern/deny-irrefutable-let-patterns.stderr new file mode 100644 index 0000000000000..ad8cc2ef8973b --- /dev/null +++ b/src/test/ui/pattern/deny-irrefutable-let-patterns.stderr @@ -0,0 +1,22 @@ +error: irrefutable if-let pattern + --> $DIR/deny-irrefutable-let-patterns.rs:4:5 + | +LL | if let _ = 5 {} //~ ERROR irrefutable if-let pattern + | ^^^^^^^^^^^^^^^ + | +note: lint level defined here + --> $DIR/deny-irrefutable-let-patterns.rs:1:9 + | +LL | #![deny(irrefutable_let_patterns)] + | ^^^^^^^^^^^^^^^^^^^^^^^^ + +error: irrefutable while-let pattern + --> $DIR/deny-irrefutable-let-patterns.rs:6:5 + | +LL | / while let _ = 5 { //~ ERROR irrefutable while-let pattern +LL | | break; +LL | | } + | |_____^ + +error: aborting due to 2 previous errors + diff --git a/src/test/run-pass/enum-variant-generic-args.rs b/src/test/ui/pattern/enum-variant-generic-args.rs similarity index 97% rename from src/test/run-pass/enum-variant-generic-args.rs rename to src/test/ui/pattern/enum-variant-generic-args.rs index 0743f99897922..85599530ea6a4 100644 --- a/src/test/run-pass/enum-variant-generic-args.rs +++ b/src/test/ui/pattern/enum-variant-generic-args.rs @@ -1,4 +1,5 @@ -#![feature(irrefutable_let_patterns)] +// run-pass + #![feature(type_alias_enum_variants)] #![allow(irrefutable_let_patterns)] diff --git a/src/test/ui/pattern/irrefutable-let-patterns.rs b/src/test/ui/pattern/irrefutable-let-patterns.rs new file mode 100644 index 0000000000000..d400ef0bbd64c --- /dev/null +++ b/src/test/ui/pattern/irrefutable-let-patterns.rs @@ -0,0 +1,11 @@ +// run-pass + +#![allow(irrefutable_let_patterns)] + +fn main() { + if let _ = 5 {} + + while let _ = 5 { + break; + } +} diff --git a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.rs b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.rs index 3814fc02745a7..d79798d57e820 100644 --- a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.rs +++ b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.rs @@ -2,7 +2,6 @@ // Enabling `ireffutable_let_patterns` isn't necessary for what this tests, but it makes coming up // with examples easier. -#![feature(irrefutable_let_patterns)] #[allow(irrefutable_let_patterns)] fn main() { diff --git a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.stderr b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.stderr index 1d518215c2c36..2cd59fe56cf2d 100644 --- a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.stderr +++ b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2015.stderr @@ -1,5 +1,5 @@ error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2015.rs:11:47 + --> $DIR/syntax-ambiguity-2015.rs:10:47 | LL | if let Range { start: _, end: _ } = true..true && false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)` @@ -8,7 +8,7 @@ LL | if let Range { start: _, end: _ } = true..true && false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `||` - --> $DIR/syntax-ambiguity-2015.rs:14:47 + --> $DIR/syntax-ambiguity-2015.rs:13:47 | LL | if let Range { start: _, end: _ } = true..true || false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)` @@ -17,7 +17,7 @@ LL | if let Range { start: _, end: _ } = true..true || false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2015.rs:17:50 + --> $DIR/syntax-ambiguity-2015.rs:16:50 | LL | while let Range { start: _, end: _ } = true..true && false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)` @@ -26,7 +26,7 @@ LL | while let Range { start: _, end: _ } = true..true && false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `||` - --> $DIR/syntax-ambiguity-2015.rs:20:50 + --> $DIR/syntax-ambiguity-2015.rs:19:50 | LL | while let Range { start: _, end: _ } = true..true || false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)` @@ -35,7 +35,7 @@ LL | while let Range { start: _, end: _ } = true..true || false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2015.rs:23:19 + --> $DIR/syntax-ambiguity-2015.rs:22:19 | LL | if let true = false && false { } | ^^^^^^^^^^^^^^ help: consider adding parentheses: `(false && false)` @@ -44,7 +44,7 @@ LL | if let true = false && false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2015.rs:26:22 + --> $DIR/syntax-ambiguity-2015.rs:25:22 | LL | while let true = (1 == 2) && false { } | ^^^^^^^^^^^^^^^^^ help: consider adding parentheses: `((1 == 2) && false)` diff --git a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.rs b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.rs index 311953a283e37..687bf659416ab 100644 --- a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.rs +++ b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.rs @@ -2,7 +2,6 @@ // Enabling `ireffutable_let_patterns` isn't necessary for what this tests, but it makes coming up // with examples easier. -#![feature(irrefutable_let_patterns)] #[allow(irrefutable_let_patterns)] fn main() { diff --git a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.stderr b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.stderr index b3579973ca2bd..cbba2d7473334 100644 --- a/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.stderr +++ b/src/test/ui/rfc-2497-if-let-chains/syntax-ambiguity-2018.stderr @@ -1,5 +1,5 @@ error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2018.rs:11:47 + --> $DIR/syntax-ambiguity-2018.rs:10:47 | LL | if let Range { start: _, end: _ } = true..true && false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)` @@ -8,7 +8,7 @@ LL | if let Range { start: _, end: _ } = true..true && false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `||` - --> $DIR/syntax-ambiguity-2018.rs:14:47 + --> $DIR/syntax-ambiguity-2018.rs:13:47 | LL | if let Range { start: _, end: _ } = true..true || false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)` @@ -17,7 +17,7 @@ LL | if let Range { start: _, end: _ } = true..true || false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2018.rs:17:50 + --> $DIR/syntax-ambiguity-2018.rs:16:50 | LL | while let Range { start: _, end: _ } = true..true && false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true && false)` @@ -26,7 +26,7 @@ LL | while let Range { start: _, end: _ } = true..true && false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `||` - --> $DIR/syntax-ambiguity-2018.rs:20:50 + --> $DIR/syntax-ambiguity-2018.rs:19:50 | LL | while let Range { start: _, end: _ } = true..true || false { } | ^^^^^^^^^^^^^ help: consider adding parentheses: `(true || false)` @@ -35,7 +35,7 @@ LL | while let Range { start: _, end: _ } = true..true || false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2018.rs:23:19 + --> $DIR/syntax-ambiguity-2018.rs:22:19 | LL | if let true = false && false { } | ^^^^^^^^^^^^^^ help: consider adding parentheses: `(false && false)` @@ -44,7 +44,7 @@ LL | if let true = false && false { } = note: see rust-lang/rust#53668 for more information error: ambiguous use of `&&` - --> $DIR/syntax-ambiguity-2018.rs:26:22 + --> $DIR/syntax-ambiguity-2018.rs:25:22 | LL | while let true = (1 == 2) && false { } | ^^^^^^^^^^^^^^^^^ help: consider adding parentheses: `((1 == 2) && false)` diff --git a/src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.rs b/src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.rs deleted file mode 100644 index 2899298a0cb1d..0000000000000 --- a/src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.rs +++ /dev/null @@ -1,5 +0,0 @@ -// should-fail-irrefutable_let_patterns -fn main() { - if let _ = 5 {} - //~^ ERROR irrefutable if-let pattern [E0162] -} diff --git a/src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.stderr b/src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.stderr deleted file mode 100644 index 9c9ebc6659b73..0000000000000 --- a/src/test/ui/should-fail-no_gate_irrefutable_if_let_pattern.stderr +++ /dev/null @@ -1,9 +0,0 @@ -error[E0162]: irrefutable if-let pattern - --> $DIR/should-fail-no_gate_irrefutable_if_let_pattern.rs:3:12 - | -LL | if let _ = 5 {} - | ^ irrefutable pattern - -error: aborting due to previous error - -For more information about this error, try `rustc --explain E0162`. diff --git a/src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.rs b/src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.rs deleted file mode 100644 index 1b9b3dc1a4cbe..0000000000000 --- a/src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.rs +++ /dev/null @@ -1,7 +0,0 @@ -#![feature(irrefutable_let_patterns)] - -// should-fail-irrefutable_let_patterns_with_gate -fn main() { - if let _ = 5 {} - //~^ ERROR irrefutable if-let pattern [irrefutable_let_patterns] -} diff --git a/src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.stderr b/src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.stderr deleted file mode 100644 index dc670f0e59081..0000000000000 --- a/src/test/ui/should-fail-with_gate_irrefutable_pattern_deny.stderr +++ /dev/null @@ -1,10 +0,0 @@ -error: irrefutable if-let pattern - --> $DIR/should-fail-with_gate_irrefutable_pattern_deny.rs:5:5 - | -LL | if let _ = 5 {} - | ^^^^^^^^^^^^^^^ - | - = note: #[deny(irrefutable_let_patterns)] on by default - -error: aborting due to previous error - diff --git a/src/test/ui/while-let.rs b/src/test/ui/while-let.rs index 348edc15aca4c..69f9de9497740 100644 --- a/src/test/ui/while-let.rs +++ b/src/test/ui/while-let.rs @@ -1,3 +1,5 @@ +// run-pass + fn macros() { macro_rules! foo{ ($p:pat, $e:expr, $b:block) => {{ @@ -10,16 +12,17 @@ fn macros() { }} } - foo!(a, 1, { //~ ERROR irrefutable while-let + foo!(a, 1, { //~ WARN irrefutable while-let println!("irrefutable pattern"); }); - bar!(a, 1, { //~ ERROR irrefutable while-let + bar!(a, 1, { //~ WARN irrefutable while-let println!("irrefutable pattern"); }); } pub fn main() { - while let a = 1 { //~ ERROR irrefutable while-let + while let a = 1 { //~ WARN irrefutable while-let println!("irrefutable pattern"); + break; } } diff --git a/src/test/ui/while-let.stderr b/src/test/ui/while-let.stderr index 838dd8c14d7b5..3f584006bc1fd 100644 --- a/src/test/ui/while-let.stderr +++ b/src/test/ui/while-let.stderr @@ -1,21 +1,32 @@ -error[E0165]: irrefutable while-let pattern - --> $DIR/while-let.rs:13:10 +warning: irrefutable while-let pattern + --> $DIR/while-let.rs:6:13 | -LL | foo!(a, 1, { //~ ERROR irrefutable while-let - | ^ irrefutable pattern - -error[E0165]: irrefutable while-let pattern - --> $DIR/while-let.rs:16:10 +LL | while let $p = $e $b + | ^^^^^ +... +LL | / foo!(a, 1, { //~ WARN irrefutable while-let +LL | | println!("irrefutable pattern"); +LL | | }); + | |_______- in this macro invocation | -LL | bar!(a, 1, { //~ ERROR irrefutable while-let - | ^ irrefutable pattern + = note: #[warn(irrefutable_let_patterns)] on by default -error[E0165]: irrefutable while-let pattern - --> $DIR/while-let.rs:22:15 +warning: irrefutable while-let pattern + --> $DIR/while-let.rs:6:13 | -LL | while let a = 1 { //~ ERROR irrefutable while-let - | ^ irrefutable pattern +LL | while let $p = $e $b + | ^^^^^ +... +LL | / bar!(a, 1, { //~ WARN irrefutable while-let +LL | | println!("irrefutable pattern"); +LL | | }); + | |_______- in this macro invocation -error: aborting due to 3 previous errors +warning: irrefutable while-let pattern + --> $DIR/while-let.rs:24:5 + | +LL | / while let a = 1 { //~ WARN irrefutable while-let +LL | | println!("irrefutable pattern"); +LL | | } + | |_____^ -For more information about this error, try `rustc --explain E0165`. From 0e1402dcdad5ad0fd5fef161e2dc8c8aed801891 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Sat, 12 Jan 2019 08:59:12 +0100 Subject: [PATCH 44/46] bless ui/while-let --- src/test/ui/while-let.stderr | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/ui/while-let.stderr b/src/test/ui/while-let.stderr index 3f584006bc1fd..6d61143d33c84 100644 --- a/src/test/ui/while-let.stderr +++ b/src/test/ui/while-let.stderr @@ -27,6 +27,7 @@ warning: irrefutable while-let pattern | LL | / while let a = 1 { //~ WARN irrefutable while-let LL | | println!("irrefutable pattern"); +LL | | break; LL | | } | |_____^ From 3dc08ed0688a07004693415155bae18c3e077992 Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Sat, 12 Jan 2019 10:31:52 +0100 Subject: [PATCH 45/46] move const_let accepted gate to avoid future conflict. --- src/libsyntax/feature_gate.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index a7b391f2d1a4c..6c5c7defd4354 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -683,12 +683,12 @@ declare_features! ( (accepted, repr_packed, "1.33.0", Some(33158), None), // Allows calling `const unsafe fn` inside `unsafe` blocks in `const fn` functions. (accepted, min_const_unsafe_fn, "1.33.0", Some(55607), None), - // `#[cfg_attr(predicate, multiple, attributes, here)]` - (accepted, cfg_attr_multi, "1.33.0", Some(54881), None), // Allows let bindings, assignments and destructuring in `const` functions and constants. // As long as control flow is not implemented in const eval, `&&` and `||` may not be used // at the same time as let bindings. (accepted, const_let, "1.33.0", Some(48821), None), + // `#[cfg_attr(predicate, multiple, attributes, here)]` + (accepted, cfg_attr_multi, "1.33.0", Some(54881), None), ); // If you change this, please modify `src/doc/unstable-book` as well. You must From 6c623224dcf6f7cf06afd46b17ce7f665e6b4fda Mon Sep 17 00:00:00 2001 From: Mazdak Farrokhzad Date: Sat, 12 Jan 2019 10:32:27 +0100 Subject: [PATCH 46/46] const_let: --bless with --compare-mode=nll --- ...check-static-values-constraints.nll.stderr | 62 ++++++++++++++++--- .../min_const_fn/min_const_fn.nll.stderr | 8 +-- .../ui/consts/promote_const_let.nll.stderr | 21 ++++++- src/test/ui/issues/issue-18118.nll.stderr | 60 +----------------- 4 files changed, 74 insertions(+), 77 deletions(-) diff --git a/src/test/ui/check-static-values-constraints.nll.stderr b/src/test/ui/check-static-values-constraints.nll.stderr index d2f6c7510a91d..f1a2312490813 100644 --- a/src/test/ui/check-static-values-constraints.nll.stderr +++ b/src/test/ui/check-static-values-constraints.nll.stderr @@ -13,44 +13,80 @@ error[E0010]: allocations are not allowed in statics LL | static STATIC11: Box = box MyOwned; | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:79:37 + | +LL | static STATIC11: Box = box MyOwned; + | ^^^^^^^ + error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants - --> $DIR/check-static-values-constraints.rs:89:32 + --> $DIR/check-static-values-constraints.rs:90:32 | LL | field2: SafeEnum::Variant4("str".to_string()) | ^^^^^^^^^^^^^^^^^ error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:94:5 + --> $DIR/check-static-values-constraints.rs:95:5 | LL | box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:95:9 + | +LL | box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:95:5 + --> $DIR/check-static-values-constraints.rs:97:5 | LL | box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:97:9 + | +LL | box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:99:6 + --> $DIR/check-static-values-constraints.rs:102:6 | LL | &box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:102:10 + | +LL | &box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:100:6 + --> $DIR/check-static-values-constraints.rs:104:6 | LL | &box MyOwned, //~ ERROR allocations are not allowed in statics | ^^^^^^^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:104:10 + | +LL | &box MyOwned, //~ ERROR allocations are not allowed in statics + | ^^^^^^^ + error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:106:5 + --> $DIR/check-static-values-constraints.rs:111:5 | LL | box 3; | ^^^^^ allocation not allowed in statics +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:111:9 + | +LL | box 3; + | ^ + error[E0507]: cannot move out of static item - --> $DIR/check-static-values-constraints.rs:110:45 + --> $DIR/check-static-values-constraints.rs:116:45 | LL | let y = { static x: Box = box 3; x }; | ^ @@ -59,12 +95,18 @@ LL | let y = { static x: Box = box 3; x }; | help: consider borrowing here: `&x` error[E0010]: allocations are not allowed in statics - --> $DIR/check-static-values-constraints.rs:110:38 + --> $DIR/check-static-values-constraints.rs:116:38 | LL | let y = { static x: Box = box 3; x }; | ^^^^^ allocation not allowed in statics -error: aborting due to 10 previous errors +error[E0019]: static contains unimplemented expression type + --> $DIR/check-static-values-constraints.rs:116:42 + | +LL | let y = { static x: Box = box 3; x }; + | ^ + +error: aborting due to 17 previous errors -Some errors occurred: E0010, E0015, E0493, E0507. +Some errors occurred: E0010, E0015, E0019, E0493, E0507. For more information about an error, try `rustc --explain E0010`. diff --git a/src/test/ui/consts/min_const_fn/min_const_fn.nll.stderr b/src/test/ui/consts/min_const_fn/min_const_fn.nll.stderr index 551bc57e5ae7d..91b076097b018 100644 --- a/src/test/ui/consts/min_const_fn/min_const_fn.nll.stderr +++ b/src/test/ui/consts/min_const_fn/min_const_fn.nll.stderr @@ -112,12 +112,6 @@ error: `if`, `match`, `&&` and `||` are not stable in const fn LL | const fn foo30_5(b: bool) { while b { } } //~ ERROR not stable in const fn | ^^^^^^^^^^^ -error: local variables in const fn are unstable - --> $DIR/min_const_fn.rs:99:34 - | -LL | const fn foo30_6() -> bool { let x = true; x } //~ ERROR local variables in const fn - | ^ - error: `if`, `match`, `&&` and `||` are not stable in const fn --> $DIR/min_const_fn.rs:100:44 | @@ -220,7 +214,7 @@ error: function pointers in const fn are unstable LL | const fn no_fn_ptrs2() -> fn() { fn foo() {} foo } | ^^^^ -error: aborting due to 35 previous errors +error: aborting due to 34 previous errors Some errors occurred: E0493, E0515. For more information about an error, try `rustc --explain E0493`. diff --git a/src/test/ui/consts/promote_const_let.nll.stderr b/src/test/ui/consts/promote_const_let.nll.stderr index d8749bb5fd90b..e6ee1523a3b28 100644 --- a/src/test/ui/consts/promote_const_let.nll.stderr +++ b/src/test/ui/consts/promote_const_let.nll.stderr @@ -1,5 +1,5 @@ error[E0597]: `y` does not live long enough - --> $DIR/promote_const_let.rs:6:9 + --> $DIR/promote_const_let.rs:4:9 | LL | let x: &'static u32 = { | ------------ type annotation requires that `y` is borrowed for `'static` @@ -9,6 +9,21 @@ LL | &y //~ ERROR does not live long enough LL | }; | - `y` dropped here while still borrowed -error: aborting due to previous error +error[E0716]: temporary value dropped while borrowed + --> $DIR/promote_const_let.rs:6:28 + | +LL | let x: &'static u32 = &{ //~ ERROR does not live long enough + | ____________------------____^ + | | | + | | type annotation requires that borrow lasts for `'static` +LL | | let y = 42; +LL | | y +LL | | }; + | |_____^ creates a temporary which is freed while still in use +LL | } + | - temporary value is freed at the end of this statement + +error: aborting due to 2 previous errors -For more information about this error, try `rustc --explain E0597`. +Some errors occurred: E0597, E0716. +For more information about an error, try `rustc --explain E0597`. diff --git a/src/test/ui/issues/issue-18118.nll.stderr b/src/test/ui/issues/issue-18118.nll.stderr index d3084b0616776..1920e1637d149 100644 --- a/src/test/ui/issues/issue-18118.nll.stderr +++ b/src/test/ui/issues/issue-18118.nll.stderr @@ -1,68 +1,14 @@ -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:5:17 - | -LL | let p = 3; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:5:17 - | -LL | let p = 3; - | ^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:8:9 - | -LL | &p //~ ERROR `p` does not live long enough - | ^^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: let bindings in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:2:5 - | -LL | / const z: &'static isize = { -LL | | //~^ ERROR let bindings in constants are unstable -LL | | //~| ERROR statements in constants are unstable -LL | | let p = 3; -... | -LL | | //~^ ERROR let bindings in constants are unstable -LL | | }; - | |______^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - -error[E0658]: statements in constants are unstable (see issue #48821) - --> $DIR/issue-18118.rs:2:5 - | -LL | / const z: &'static isize = { -LL | | //~^ ERROR let bindings in constants are unstable -LL | | //~| ERROR statements in constants are unstable -LL | | let p = 3; -... | -LL | | //~^ ERROR let bindings in constants are unstable -LL | | }; - | |______^ - | - = help: add #![feature(const_let)] to the crate attributes to enable - error[E0597]: `p` does not live long enough - --> $DIR/issue-18118.rs:8:9 + --> $DIR/issue-18118.rs:4:9 | LL | &p //~ ERROR `p` does not live long enough | ^^ | | | borrowed value does not live long enough | using this value as a constant requires that `p` is borrowed for `'static` -LL | //~^ ERROR let bindings in constants are unstable LL | }; | - `p` dropped here while still borrowed -error: aborting due to 6 previous errors +error: aborting due to previous error -Some errors occurred: E0597, E0658. -For more information about an error, try `rustc --explain E0597`. +For more information about this error, try `rustc --explain E0597`.