Commit Graph

74983 Commits

Author SHA1 Message Date
Michal 'vorner' Vaner
433a03e6ff
fixup! Some comments and documentation for name resolution crate 2018-03-24 17:07:58 +01:00
Michal 'vorner' Vaner
68d6eddaf8
Some comments and documentation for name resolution crate 2018-03-12 22:16:28 +01:00
bors
c9b86a9178 Auto merge of #48689 - Manishearth:rollup, r=Manishearth
Rollup (unsupervised)

less risky PRs, to run overnight
2018-03-03 07:24:11 +00:00
Manish Goregaokar
40d2a98503
Rollup merge of #48641 - alexcrichton:no-hash-l-paths, r=michaelwoerister
Fixes #47311.
r? @nrc
2018-03-02 22:01:31 -08:00
Manish Goregaokar
3fa4bff31b
Rollup merge of #48635 - scottmcm:faster-zip-nth, r=kennytm
Fixes #47311.
r? @nrc
2018-03-02 22:01:29 -08:00
Manish Goregaokar
6fa14f0e5f
Rollup merge of #48628 - strake:reverse, r=sfackler
Fixes #47311.
r? @nrc
2018-03-02 22:01:27 -08:00
Manish Goregaokar
8c7c8fb212
Rollup merge of #48338 - estebank:match-missing-comma, r=petrochenkov
Fixes #47311.
r? @nrc
2018-03-02 22:01:23 -08:00
Manish Goregaokar
8bf026df5b
Rollup merge of #48328 - frewsxcv:frewsxcv-clarify-error-zero-duration, r=sfackler
Fixes #47311.
r? @nrc
2018-03-02 22:01:20 -08:00
Manish Goregaokar
65253fd2eb
Rollup merge of #48259 - tinaun:patch-1, r=alexcrichton
Fixes #47311.
r? @nrc
2018-03-02 22:01:16 -08:00
Manish Goregaokar
85a6b928aa
Rollup merge of #48477 - Manishearth:dyn-trait-fixes, r=nmatsakis
Fixes #47311.
r? @nrc
2018-03-02 22:01:04 -08:00
Manish Goregaokar
40f218f703 Remove allow(bare_trait_object) from librustc_mir 2018-03-02 21:02:37 -08:00
Manish Goregaokar
3c95814294 Perform manual fixups 2018-03-02 21:02:37 -08:00
Manish Goregaokar
8d730ed527 Run Rustfix on librustc_mir 2018-03-02 21:02:37 -08:00
Manish Goregaokar
fb7980d796 Remove allow(bare_trait_object) from librustc 2018-03-02 21:02:36 -08:00
Manish Goregaokar
f3cb962f63 Perform manual fixups 2018-03-02 21:02:36 -08:00
Manish Goregaokar
69c53ac904 Run Rustfix on librustc 2018-03-02 21:02:34 -08:00
bors
5f1f628765 Auto merge of #48666 - sgrif:sg-revert-perf-regression, r=nikomatsakis
Revert "correct subtle bug in the type variable code"

This reverts commit ccd92c2a4e.

This commit is the source of a major perf regression, and was not
intended to be included in #47861. At some point I must have
accidentally re-added the commit.

Fixes #48660.

r? @nikomatsakis
2018-03-03 04:54:28 +00:00
bors
e8af0f4c1f Auto merge of #48586 - Zoxc:atomic-rc, r=michaelwoerister
Replace Rc with Lrc for shared data

This replaces `Rc`s reachable from `TyCtxt` with `Lrc`. This has no effect unless `cfg(parallel_queries)` is set. It also contains a fix for the `Decodable` impl for `Arc`.

r? @nikomatsakis
2018-03-03 02:02:45 +00:00
tinaun
1011b8a3f1 Stabilize Unsafe Pointer Methods
also minor doc fixes.

Closes #43941
2018-03-02 19:20:36 -05:00
Sean Griffin
f5f53e9677 Revert "correct subtle bug in the type variable code"
This reverts commit ccd92c2a4e.

This commit is the source of a major perf regression, and was not
intended to be included in #47861. At some point I must have
accidentally re-added the commit.
2018-03-02 06:52:12 -07: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
bors
9cb18a92ad Auto merge of #48653 - Manishearth:rollup2, r=Manishearth
Another rollup

None
2018-03-02 06:08:15 +00: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
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
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