Commit Graph

75203 Commits

Author SHA1 Message Date
flip1995
15ecf06948
Remove isize test 2018-03-02 13:33:06 +01:00
John Kåre Alsaker
fce7201612 Impl !Send and !Sync for SourceFile 2018-03-02 10:48:52 +01:00
John Kåre Alsaker
b74e97cf42 Replace Rc with Lrc for shared data 2018-03-02 10:48:52 +01:00
John Kåre Alsaker
878f5b0514 Fix Decodable impl for Arc 2018-03-02 10:45:32 +01:00
Shotaro Yamada
08504fbb0b Optimize str::repeat 2018-03-02 18:12:22 +09:00
Phlosioneer
2269ff521f Remove print_what_bootstrap_means
It was an existing solution to tell the user why a --help command
takes a long time to process. However, it would only print if the
stage0 rust compiler needed to be downloaded, it came after
update_submodules (which took a long time), and it was immediately
followed by download messages and loading bars, meaning users could
easily gloss over the message.

This commit also moves the help message out of main(), and instead
puts it at the top of bootstrap(). main() is intended to be minimal,
only handling error messages.
2018-03-02 03:29:35 -05:00
bors
9cb18a92ad Auto merge of #48653 - Manishearth:rollup2, r=Manishearth
Another rollup

None
2018-03-02 06:08:15 +00:00
Alex Crichton
fdef6a881e rustbuild: Pass ccache to build scripts
This is a re-attempt at #48192 hopefully this time with 100% less randomly
[blocking builds for 20 minutes][block]. To work around #48192 the sccache
server is started in the `run.sh` script very early on in the compilation
process.

[block]: https://github.com/rust-lang/rust/issues/48192
2018-03-01 21:53:46 -08:00
bors
ddfbf2b0f4 Auto merge of #47861 - sgrif:sg-rebase-chalkify-universe-refactorings, r=nikomatsakis
Rebased refactorings for Chalk

The code is Niko's, I just handled the rebase.

r? @nikomatsakis
2018-03-01 21:14:35 +00:00
Alex Crichton
2e9d9d48d5 rustc: More stable hashes of command line arguments
Currently rustc isn't always the best at producing deterministic builds of a
crate when the source directory of a crate is changed. This is happening due to
what appears two different sources:

* First the `-L` paths passed to rustc are hashed into the crate hash. These
  paths through Cargo are typically absolute paths that can vary if the build
  directory changes.

* Next the paths passed to `--extern` are also hashed which like `-L` can change
  if the build directory changes.

This commit fixes these two sources of nondeterminism by ensuring that avoiding
tracking the hashes of these arguments on the command line. For `-L` paths
they're either related to loading crates (whose hashes are tracked elsewhere) or
native librarise used in the linking phase (which isn't incremental). The
`--extern` paths are similar in that they're related to crate resolution which
is already tracked independently of the command line arguments.

Closes #48019
2018-03-01 12:05:53 -08:00
Santiago Pastorino
99c42dccfa
rustfmt over error_reporting, explain_borrow and region_infer mods 2018-03-01 16:43:03 -03:00
Santiago Pastorino
ff7dca50a4
Make explain borrow work for Universal lifetimes 2018-03-01 16:42:44 -03:00
Santiago Pastorino
834e39289d
Refactor note_and_explain_region to call note_and_explain_free_region 2018-03-01 16:40:35 -03:00
kennytm
2b3c815ddf Rollup merge of #48570 - Amanieu:aarch64_features, r=alexcrichton
Add AArch64 features to whitelist
2018-03-01 09:29:43 -08:00
Manish Goregaokar
a080d7b2b2 Rollup merge of #48626 - teiesti:fix-readme, r=frewsxcv
Fix link to rustc guide in README.md

This is a follow-up to #48479 and fixes a minor bug with the link to the rustc guide in the README.

r? @nikomatsakis

cc @mark-i-m
2018-03-01 09:29:42 -08:00
Manish Goregaokar
cf0638cfde Rollup merge of #48610 - ishitatsuyuki:ishitatsuyuki-patch-1, r=nikomatsakis
Add regression test for #48551

[Issue link](https://github.com/rust-lang/rust/issues/48551)
2018-03-01 09:29:42 -08:00
Manish Goregaokar
b812b77094 Rollup merge of #48585 - stjepang:stabilize-localkey-try_with, r=alexcrichton
Stabilize LocalKey::try_with

The `LocalKey::try_with` method is now stabilized.

`LocalKey::state` and `LocalKeyState` marked as deprecated. Although, is there any reason to keep them - should we perhaps remove them completely?

Closes #27716

r? @alexcrichton
2018-03-01 09:29:41 -08:00
Manish Goregaokar
8025e1555c Rollup merge of #48572 - alexcrichton:noexcept-msvc2, r=eddyb
rustc: Tweak funclet cleanups of ffi functions

This commit is targeted at addressing #48251 by specifically fixing a case where
a longjmp over Rust frames on MSVC runs cleanups, accidentally running the
"abort the program" cleanup as well. Added in #46833 `extern` ABI functions in
Rust will abort the process if Rust panics, and currently this is modeled as a
normal cleanup like all other destructors.

Unfortunately it turns out that `longjmp` on MSVC is implemented with SEH, the
same mechanism used to implement panics in Rust. This means that `longjmp` over
Rust frames will run Rust cleanups (even though we don't necessarily want it
to). Notably this means that if you `longjmp` over a Rust stack frame then that
probably means you'll abort the program because one of the cleanups will abort
the process.

After some discussion on IRC it turns out that `longjmp` doesn't run cleanups
for *caught* exceptions, it only runs cleanups for cleanup pads. Using this
information this commit tweaks the codegen for an `extern` function to
a catch-all clause for exceptions instead of a cleanup block. This catch-all is
equivalent to the C++ code:

    try {
        foo();
    } catch (...) {
        bar();
    }

and in fact our codegen here is designed to match exactly what clang emits for
that C++ code!

With this tweak a longjmp over Rust code will no longer abort the process. A
longjmp will continue to "accidentally" run Rust cleanups (destructors) on MSVC.
Other non-MSVC platforms will not rust destructors with a longjmp, so we'll
probably still recommend "don't have destructors on the stack", but in any case
this is a more surgical fix than #48567 and should help us stick to standard
personality functions a bit longer.
2018-03-01 09:29:40 -08:00
Manish Goregaokar
75b8c10391 Rollup merge of #48522 - etaoins:fix-find-width-of-character-at-span-bounds-check, r=estebank
Fix find_width_of_character_at_span bounds check

Commit 0bd96671f0 added bounds checking of our current target byte position to prevent infinite loops. Unfortunately it was comparing the file-relative `target` versus the global `file_start_pos` and `file_end_pos`.

The result is failing to detect multibyte characters unless their file-relative offset fit within their global offset. This causes other parts of the compiler to generate spans pointing to the middle of a
multibyte character which will ultimately panic in `bytepos_to_file_charpos`.

Fix by comparing the `target` to the total file size when moving forward and doing checked subtraction when moving backwards. This should preserve the intent of the bounds check while removing the offset confusion.

cc @davidtwco

Fixes #48508
2018-03-01 09:29:40 -08:00
Manish Goregaokar
38f4d557d0 Rollup merge of #48500 - petrochenkov:parpat, r=nikomatsakis
Support parentheses in patterns under feature gate

This is a prerequisite for any other extensions to pattern syntax - `|` with multiple patterns, type ascription, `..PAT` in slice patterns.

Closes https://github.com/rust-lang/rfcs/issues/554
2018-03-01 09:29:39 -08:00
Manish Goregaokar
39d5e1cba6 Rollup merge of #48446 - mark-i-m:e0245, r=mark-i-m
Remove E0245; improve E0404

Fix #36337

Somehow this is currently breaking --explain, but I don't understand how.

r? @estebank
2018-03-01 09:29:38 -08:00
Manish Goregaokar
eadea4ab1a Rollup merge of #48405 - kennytm:autotoolstate-follow-up, r=Mark-Simulacrum
Auto-toolstate management follow-up.

Tracking comment: https://github.com/rust-lang/rust/issues/45861#issuecomment-367302777

* Fixed rust-lang-nursery/rust-toolstate#1, a proper link to the PR will be included.
* Fixed rust-lang-nursery/rust-toolstate#2, a comment will be posted to the PR if the toolstate changed
* Toolstate regression will be rejected at the last week of the 6-week cycle (currently entirely date-based).
* Implemented https://internals.rust-lang.org/t/the-current-submodule-setup-is-not-tenable/6593, moved doc tests of Nomicon, Reference, Rust-by-Example and The Book to the "tools" job and thus allowed to fail like other external tools.
2018-03-01 09:29:37 -08:00
Segev Finer
5332d9a8e8 Document why we download rust-mingw 2018-03-01 18:33:14 +02:00
Sean Griffin
fec4d3b711 Bump ena 2018-03-01 08:04:26 -07:00
Sean Griffin
a6d85332f4 Fix breakage in rustdoc 2018-03-01 08:04:26 -07:00
Sean Griffin
e9eb1a6adc Fix bad rebase 2018-03-01 08:04:26 -07:00
Sean Griffin
4fb201dee5 Re-add some removed uses of Kind
Additional uses of this item were added to these files in #45701 and #46479
2018-03-01 08:04:26 -07:00
Sean Griffin
c30183873e Remove dead code
These modules were replaced with re-exports from ena
2018-03-01 08:04:26 -07:00
Sean Griffin
755bdaa190 change skolemizations to use universe index
These changes were meant to be in
2b18d8fe9dc05415a8e6b7cadf879c7f7ebe020a (rebased from
12a230562ece9b0d29018a436676141054dc53b7), but I messed up the rebase a
bit as the file had been moved.
2018-03-01 08:04:26 -07:00
Niko Matsakis
17df455c2e fix tests in librustc_driver 2018-03-01 08:04:26 -07:00
Niko Matsakis
a985634fc0 fix tidy error 2018-03-01 08:04:26 -07:00
Niko Matsakis
35e78b5cdd change skolemizations to use universe index 2018-03-01 08:04:26 -07:00
Niko Matsakis
13efaf0481 add universes to type inference variables 2018-03-01 08:04:26 -07:00
Niko Matsakis
44d992984a remove unnecessary clause propagating divergence
This should not be needed: the new variable will be related to the old
ones, so if they are constrained, so is the new variable; if they are
not, and hence default to diverging, so will the new variable.
2018-03-01 08:04:26 -07:00
Niko Matsakis
69fe43c97e have probe() return TypeVariableValue 2018-03-01 08:04:26 -07:00
Niko Matsakis
ccd92c2a4e correct subtle bug in the type variable code 2018-03-01 08:04:26 -07:00
Niko Matsakis
57a593fcbb store type values in the unification table directly 2018-03-01 08:04:26 -07:00
Niko Matsakis
c7953bb6d6 obtain UnificationTable and snapshot_vec from ena instead
The ena version has an improved interface. I suspect
`librustc_data_structures` should start migrating out to crates.io in
general.
2018-03-01 08:04:26 -07:00
Niko Matsakis
b680b12e94 kill supporting code from type-variable defaults
This was all unused anyway.
2018-03-01 08:04:26 -07:00
Niko Matsakis
047a8d0161 kill custom type inference defaults (these don't really work anyway) 2018-03-01 08:04:26 -07:00
Niko Matsakis
7112d6584c make Default Copy and Clone 2018-03-01 08:04:26 -07:00
Niko Matsakis
d516b263c6 use {} for Known variant just for more parity 2018-03-01 08:04:26 -07:00
Niko Matsakis
d4df52cacb introduce UniverseIndex into ParamEnv
Always using root environment for now.
2018-03-01 08:04:26 -07:00
Niko Matsakis
e7efce2361 add some comments to Obligation 2018-03-01 08:04:26 -07:00
Niko Matsakis
803bd76127 introduce Universe struct 2018-03-01 08:04:26 -07:00
Segev Finer
39d0b054ce Restore the download of rust-mingw
The build might otherwise break due to mixing MinGW object files from
rust-std and the local MinGW which might be newer/older than the version
used to build rust-std.

Fixes #48272
2018-03-01 15:20:07 +02:00
bors
3eeb5a665e Auto merge of #46785 - leodasvacas:type-check-defaults-at-declaration, r=nikomatsakis
[Underspecified semantics] Type check defaults at declaration.

Fixes  #46669. See the test for code that compiles on stable but will no longer compile. This falls under a "Underspecified language semantics" fix. **Needs crater**.

On type and trait declarations, we currently allow anything that name checks as a type parameter default. That allows the user to write a default that can never be applied, or even a default that may conditionally be applied depending on the type of another parameter. Mostly this just defers the error to use sites, but also allows clever hacks such as `Foo<T, U = <T as Iterator>::Item>` where `U` will be able to apply it's default only when `T: Iterator`. Maybe that means this bug is a feature, but it's a fiddly behaviour that seems undesirable.

This PR validates defaults at declaration sites by ensuring all predicates on the parameter are valid for the default. With the exception of `Self: Sized` which we don't want to check to allow things like `trait Add<RHS = Self>`.
2018-03-01 13:19:18 +00:00
Lukas Lueg
f7693c0633 Fix spelling s/casted/cast/ 2018-03-01 12:54:16 +01:00
Scott McMurray
5105fc1681 Fix braces 2018-03-01 02:29:46 -08:00
Scott McMurray
11fefeb61c Add a Zip::nth test for side effects 2018-03-01 02:17:50 -08:00