]> git.lizzy.rs Git - rust.git/log
rust.git
6 years agoRefactor away `inferred_obligations` from the trait selector
Aravind Gollakota [Sun, 4 Mar 2018 00:47:17 +0000 (18:47 -0600)]
Refactor away `inferred_obligations` from the trait selector

6 years agoAuto merge of #48583 - dotdash:jt_assume, r=alexcrichton
bors [Sat, 3 Mar 2018 14:09:56 +0000 (14:09 +0000)]
Auto merge of #48583 - dotdash:jt_assume, r=alexcrichton

Backport LLVM fixes for a JumpThreading / assume intrinsic bug

This fixes the original cause of #48116 and restores the assume intrinsic that was removed as a workaround.

r? @alexcrichton

6 years agoAuto merge of #48689 - Manishearth:rollup, r=Manishearth
bors [Sat, 3 Mar 2018 07:24:11 +0000 (07:24 +0000)]
Auto merge of #48689 - Manishearth:rollup, r=Manishearth

Rollup (unsupervised)

less risky PRs, to run overnight

6 years agoRollup merge of #48641 - alexcrichton:no-hash-l-paths, r=michaelwoerister
Manish Goregaokar [Sat, 3 Mar 2018 06:01:31 +0000 (22:01 -0800)]
Rollup merge of #48641 - alexcrichton:no-hash-l-paths, r=michaelwoerister

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48635 - scottmcm:faster-zip-nth, r=kennytm
Manish Goregaokar [Sat, 3 Mar 2018 06:01:29 +0000 (22:01 -0800)]
Rollup merge of #48635 - scottmcm:faster-zip-nth, r=kennytm

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48628 - strake:reverse, r=sfackler
Manish Goregaokar [Sat, 3 Mar 2018 06:01:27 +0000 (22:01 -0800)]
Rollup merge of #48628 - strake:reverse, r=sfackler

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48338 - estebank:match-missing-comma, r=petrochenkov
Manish Goregaokar [Sat, 3 Mar 2018 06:01:23 +0000 (22:01 -0800)]
Rollup merge of #48338 - estebank:match-missing-comma, r=petrochenkov

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48328 - frewsxcv:frewsxcv-clarify-error-zero-duration, r=sfackler
Manish Goregaokar [Sat, 3 Mar 2018 06:01:20 +0000 (22:01 -0800)]
Rollup merge of #48328 - frewsxcv:frewsxcv-clarify-error-zero-duration, r=sfackler

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48259 - tinaun:patch-1, r=alexcrichton
Manish Goregaokar [Sat, 3 Mar 2018 06:01:16 +0000 (22:01 -0800)]
Rollup merge of #48259 - tinaun:patch-1, r=alexcrichton

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48477 - Manishearth:dyn-trait-fixes, r=nmatsakis
Manish Goregaokar [Sat, 3 Mar 2018 06:01:04 +0000 (22:01 -0800)]
Rollup merge of #48477 - Manishearth:dyn-trait-fixes, r=nmatsakis

Fixes #47311.
r? @nrc

6 years agoRemove allow(bare_trait_object) from librustc_mir
Manish Goregaokar [Fri, 23 Feb 2018 18:04:46 +0000 (10:04 -0800)]
Remove allow(bare_trait_object) from librustc_mir

6 years agoPerform manual fixups
Manish Goregaokar [Fri, 23 Feb 2018 18:17:07 +0000 (10:17 -0800)]
Perform manual fixups

6 years agoRun Rustfix on librustc_mir
Manish Goregaokar [Fri, 23 Feb 2018 18:15:26 +0000 (10:15 -0800)]
Run Rustfix on librustc_mir

6 years agoRemove allow(bare_trait_object) from librustc
Manish Goregaokar [Fri, 23 Feb 2018 17:52:03 +0000 (09:52 -0800)]
Remove allow(bare_trait_object) from librustc

6 years agoPerform manual fixups
Manish Goregaokar [Fri, 23 Feb 2018 18:02:10 +0000 (10:02 -0800)]
Perform manual fixups

6 years agoRun Rustfix on librustc
Manish Goregaokar [Fri, 23 Feb 2018 17:53:00 +0000 (09:53 -0800)]
Run Rustfix on librustc

6 years agoAuto merge of #48666 - sgrif:sg-revert-perf-regression, r=nikomatsakis
bors [Sat, 3 Mar 2018 04:54:28 +0000 (04:54 +0000)]
Auto merge of #48666 - sgrif:sg-revert-perf-regression, r=nikomatsakis

Revert "correct subtle bug in the type variable code"

This reverts commit ccd92c2a4e5ed634bbbd6d3a5bd491c47b80f642.

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

6 years agoAuto merge of #48586 - Zoxc:atomic-rc, r=michaelwoerister
bors [Sat, 3 Mar 2018 02:02:45 +0000 (02:02 +0000)]
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

6 years agoStabilize Unsafe Pointer Methods
tinaun [Fri, 16 Feb 2018 07:14:34 +0000 (02:14 -0500)]
Stabilize Unsafe Pointer Methods

also minor doc fixes.

Closes #43941

6 years agoRevert "correct subtle bug in the type variable code"
Sean Griffin [Fri, 2 Mar 2018 13:52:12 +0000 (06:52 -0700)]
Revert "correct subtle bug in the type variable code"

This reverts commit ccd92c2a4e5ed634bbbd6d3a5bd491c47b80f642.

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.

6 years agoImpl !Send and !Sync for SourceFile
John Kåre Alsaker [Fri, 2 Mar 2018 01:42:22 +0000 (02:42 +0100)]
Impl !Send and !Sync for SourceFile

6 years agoReplace Rc with Lrc for shared data
John Kåre Alsaker [Tue, 27 Feb 2018 16:11:14 +0000 (17:11 +0100)]
Replace Rc with Lrc for shared data

6 years agoFix Decodable impl for Arc
John Kåre Alsaker [Tue, 27 Feb 2018 15:49:34 +0000 (16:49 +0100)]
Fix Decodable impl for Arc

6 years agoAuto merge of #48653 - Manishearth:rollup2, r=Manishearth
bors [Fri, 2 Mar 2018 06:08:15 +0000 (06:08 +0000)]
Auto merge of #48653 - Manishearth:rollup2, r=Manishearth

Another rollup

None

6 years agoAuto merge of #47861 - sgrif:sg-rebase-chalkify-universe-refactorings, r=nikomatsakis
bors [Thu, 1 Mar 2018 21:14:35 +0000 (21:14 +0000)]
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

6 years agorustc: More stable hashes of command line arguments
Alex Crichton [Thu, 1 Mar 2018 15:51:00 +0000 (07:51 -0800)]
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

6 years agoRollup merge of #48570 - Amanieu:aarch64_features, r=alexcrichton
kennytm [Thu, 1 Mar 2018 13:37:18 +0000 (21:37 +0800)]
Rollup merge of #48570 - Amanieu:aarch64_features, r=alexcrichton

Add AArch64 features to whitelist

6 years agoRollup merge of #48626 - teiesti:fix-readme, r=frewsxcv
Manish Goregaokar [Thu, 1 Mar 2018 07:33:35 +0000 (23:33 -0800)]
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

6 years agoRollup merge of #48610 - ishitatsuyuki:ishitatsuyuki-patch-1, r=nikomatsakis
Manish Goregaokar [Thu, 1 Mar 2018 07:33:34 +0000 (23:33 -0800)]
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)

6 years agoRollup merge of #48585 - stjepang:stabilize-localkey-try_with, r=alexcrichton
Manish Goregaokar [Thu, 1 Mar 2018 07:33:33 +0000 (23:33 -0800)]
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

6 years agoRollup merge of #48572 - alexcrichton:noexcept-msvc2, r=eddyb
Manish Goregaokar [Thu, 1 Mar 2018 07:33:32 +0000 (23:33 -0800)]
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.

6 years agoRollup merge of #48522 - etaoins:fix-find-width-of-character-at-span-bounds-check...
Manish Goregaokar [Thu, 1 Mar 2018 07:33:31 +0000 (23:33 -0800)]
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

6 years agoRollup merge of #48500 - petrochenkov:parpat, r=nikomatsakis
Manish Goregaokar [Thu, 1 Mar 2018 07:33:30 +0000 (23:33 -0800)]
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

6 years agoRollup merge of #48446 - mark-i-m:e0245, r=mark-i-m
Manish Goregaokar [Thu, 1 Mar 2018 07:33:28 +0000 (23:33 -0800)]
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

6 years agoRollup merge of #48405 - kennytm:autotoolstate-follow-up, r=Mark-Simulacrum
Manish Goregaokar [Thu, 1 Mar 2018 07:33:26 +0000 (23:33 -0800)]
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.

6 years agoBump ena
Sean Griffin [Wed, 28 Feb 2018 17:27:18 +0000 (10:27 -0700)]
Bump ena

6 years agoFix breakage in rustdoc
Sean Griffin [Tue, 27 Feb 2018 19:09:40 +0000 (12:09 -0700)]
Fix breakage in rustdoc

6 years agoFix bad rebase
Sean Griffin [Mon, 26 Feb 2018 22:14:24 +0000 (15:14 -0700)]
Fix bad rebase

6 years agoRe-add some removed uses of `Kind`
Sean Griffin [Mon, 29 Jan 2018 21:06:28 +0000 (14:06 -0700)]
Re-add some removed uses of `Kind`

Additional uses of this item were added to these files in #45701 and #46479

6 years agoRemove dead code
Sean Griffin [Mon, 29 Jan 2018 20:46:52 +0000 (13:46 -0700)]
Remove dead code

These modules were replaced with re-exports from ena

6 years agochange skolemizations to use universe index
Sean Griffin [Mon, 29 Jan 2018 20:45:12 +0000 (13:45 -0700)]
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.

6 years agofix tests in `librustc_driver`
Niko Matsakis [Tue, 31 Oct 2017 19:24:55 +0000 (15:24 -0400)]
fix tests in `librustc_driver`

6 years agofix tidy error
Niko Matsakis [Tue, 31 Oct 2017 15:40:24 +0000 (11:40 -0400)]
fix tidy error

6 years agochange skolemizations to use universe index
Niko Matsakis [Mon, 31 Jul 2017 04:40:24 +0000 (07:40 +0300)]
change skolemizations to use universe index

6 years agoadd universes to type inference variables
Niko Matsakis [Mon, 17 Jul 2017 20:16:14 +0000 (16:16 -0400)]
add universes to type inference variables

6 years agoremove unnecessary clause propagating divergence
Niko Matsakis [Sun, 16 Jul 2017 17:32:34 +0000 (13:32 -0400)]
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.

6 years agohave `probe()` return `TypeVariableValue`
Niko Matsakis [Sun, 16 Jul 2017 14:18:55 +0000 (10:18 -0400)]
have `probe()` return `TypeVariableValue`

6 years agocorrect subtle bug in the type variable code
Niko Matsakis [Sun, 16 Jul 2017 12:49:21 +0000 (08:49 -0400)]
correct subtle bug in the type variable code

6 years agostore type values in the unification table directly
Niko Matsakis [Sun, 16 Jul 2017 12:32:21 +0000 (08:32 -0400)]
store type values in the unification table directly

6 years agoobtain `UnificationTable` and `snapshot_vec` from `ena` instead
Niko Matsakis [Sun, 16 Jul 2017 11:07:51 +0000 (07:07 -0400)]
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.

6 years agokill supporting code from type-variable defaults
Niko Matsakis [Sun, 16 Jul 2017 08:55:48 +0000 (04:55 -0400)]
kill supporting code from type-variable defaults

This was all unused anyway.

6 years agokill custom type inference defaults (these don't really work anyway)
Niko Matsakis [Sat, 15 Jul 2017 22:24:51 +0000 (18:24 -0400)]
kill custom type inference defaults (these don't really work anyway)

6 years agomake `Default` Copy and Clone
Niko Matsakis [Sat, 15 Jul 2017 18:52:32 +0000 (14:52 -0400)]
make `Default` Copy and Clone

6 years agouse `{}` for `Known` variant just for more parity
Niko Matsakis [Sat, 15 Jul 2017 18:47:49 +0000 (14:47 -0400)]
use `{}` for `Known` variant just for more parity

6 years agointroduce `UniverseIndex` into `ParamEnv`
Niko Matsakis [Sat, 15 Jul 2017 11:23:28 +0000 (07:23 -0400)]
introduce `UniverseIndex` into `ParamEnv`

Always using root environment for now.

6 years agoadd some comments to `Obligation`
Niko Matsakis [Sat, 15 Jul 2017 10:47:30 +0000 (06:47 -0400)]
add some comments to `Obligation`

6 years agointroduce `Universe` struct
Niko Matsakis [Sat, 15 Jul 2017 10:41:19 +0000 (06:41 -0400)]
introduce `Universe` struct

6 years agoAuto merge of #46785 - leodasvacas:type-check-defaults-at-declaration, r=nikomatsakis
bors [Thu, 1 Mar 2018 13:19:18 +0000 (13:19 +0000)]
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>`.

6 years agoFix braces
Scott McMurray [Thu, 1 Mar 2018 10:29:46 +0000 (02:29 -0800)]
Fix braces

6 years agoAdd a Zip::nth test for side effects
Scott McMurray [Thu, 1 Mar 2018 10:17:50 +0000 (02:17 -0800)]
Add a Zip::nth test for side effects

6 years agoSpecialize Zip::nth for TrustedRandomAccess
Scott McMurray [Thu, 1 Mar 2018 09:57:25 +0000 (01:57 -0800)]
Specialize Zip::nth for TrustedRandomAccess

Makes the bench asked about on URLO 58x faster :)

6 years agoAdd ignore-pretty for issue-48506.rs
Ryan Cumming [Thu, 1 Mar 2018 06:51:14 +0000 (17:51 +1100)]
Add ignore-pretty for issue-48506.rs

The out-of-line module #37195

6 years agoimpl Default + Hash for ::core::cmp::Reverse
M Farkas-Dyck [Thu, 1 Mar 2018 05:00:48 +0000 (21:00 -0800)]
impl Default + Hash for ::core::cmp::Reverse

6 years agoFix link to rustc guide in README.md
Tobias Stolzmann [Thu, 1 Mar 2018 02:04:26 +0000 (03:04 +0100)]
Fix link to rustc guide in README.md

6 years agoAuto merge of #48349 - nrc:update, r=alexcrichton
bors [Thu, 1 Mar 2018 02:11:35 +0000 (02:11 +0000)]
Auto merge of #48349 - nrc:update, r=alexcrichton

Update RLS

r? @alexcrichton

6 years agoAuto merge of #48615 - Manishearth:rollup, r=Manishearth
bors [Wed, 28 Feb 2018 23:10:14 +0000 (23:10 +0000)]
Auto merge of #48615 - Manishearth:rollup, r=Manishearth

Rollup of 10 pull requests

- Successful merges: #48355, #48359, #48380, #48419, #48420, #48461, #48522, #48570, #48572, #48603
- Failed merges:

6 years agoRollup merge of #48603 - pthariensflame:patch-1, r=frewsxcv
Manish Goregaokar [Wed, 28 Feb 2018 23:09:31 +0000 (15:09 -0800)]
Rollup merge of #48603 - pthariensflame:patch-1, r=frewsxcv

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48461 - Manishearth:epoch-dyn-trait, r=nmatsakis
Manish Goregaokar [Wed, 28 Feb 2018 23:09:29 +0000 (15:09 -0800)]
Rollup merge of #48461 - Manishearth:epoch-dyn-trait, r=nmatsakis

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48420 - teiesti:path_parents, r=BurntSushi
Manish Goregaokar [Wed, 28 Feb 2018 23:09:27 +0000 (15:09 -0800)]
Rollup merge of #48420 - teiesti:path_parents, r=BurntSushi

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48380 - nikomatsakis:issue-48251-master, r=acrichto
Manish Goregaokar [Wed, 28 Feb 2018 23:09:26 +0000 (15:09 -0800)]
Rollup merge of #48380 - nikomatsakis:issue-48251-master, r=acrichto

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48359 - jsgf:remap-path-prefix, r=sanxiyn
Manish Goregaokar [Wed, 28 Feb 2018 23:09:24 +0000 (15:09 -0800)]
Rollup merge of #48359 - jsgf:remap-path-prefix, r=sanxiyn

Fixes #47311.
r? @nrc

6 years agoRollup merge of #48355 - mikhail-m1:subslice_pattern_array_drop2, r=nikomatsakis
Manish Goregaokar [Wed, 28 Feb 2018 23:09:22 +0000 (15:09 -0800)]
Rollup merge of #48355 - mikhail-m1:subslice_pattern_array_drop2, r=nikomatsakis

Fixes #47311.
r? @nrc

6 years agoFix a bug introduced in previous commit
Stjepan Glavina [Wed, 28 Feb 2018 23:07:27 +0000 (00:07 +0100)]
Fix a bug introduced in previous commit

6 years agoSupport parentheses in patterns under feature gate
Vadim Petrochenkov [Sat, 24 Feb 2018 12:27:06 +0000 (15:27 +0300)]
Support parentheses in patterns under feature gate

Improve recovery for trailing comma after `..`

6 years agorustc: Tweak funclet cleanups of ffi functions
Alex Crichton [Tue, 27 Feb 2018 02:59:47 +0000 (18:59 -0800)]
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.

6 years agoUpdate LLVM submodule a bit further
Alex Crichton [Wed, 28 Feb 2018 21:21:14 +0000 (13:21 -0800)]
Update LLVM submodule a bit further

6 years agoFix a few run-pass tests
Stjepan Glavina [Wed, 28 Feb 2018 19:50:26 +0000 (20:50 +0100)]
Fix a few run-pass tests

6 years agofix rebase
Esteban Küber [Wed, 28 Feb 2018 18:56:07 +0000 (10:56 -0800)]
fix rebase

6 years agoRemove E0245; improve E0404 explanation
Mark Mansi [Thu, 22 Feb 2018 23:50:06 +0000 (17:50 -0600)]
Remove E0245; improve E0404 explanation

6 years agoUpdate issue-48551.rs
Niko Matsakis [Wed, 28 Feb 2018 18:04:12 +0000 (13:04 -0500)]
Update issue-48551.rs

6 years agoRemove thread_local_state
Stjepan Glavina [Wed, 28 Feb 2018 17:59:12 +0000 (18:59 +0100)]
Remove thread_local_state

6 years agoUpdate UI test
leonardo.yvens [Wed, 28 Feb 2018 15:59:30 +0000 (12:59 -0300)]
Update UI test

6 years agoadd a comment
Niko Matsakis [Tue, 27 Feb 2018 22:36:33 +0000 (17:36 -0500)]
add a comment

6 years agoCheck only concrete defaults for well formedness
leonardo.yvens [Wed, 14 Feb 2018 22:55:37 +0000 (20:55 -0200)]
Check only concrete defaults for well formedness

6 years agoCheck only predicates with a single param with a concrete default.
leonardo.yvens [Fri, 9 Feb 2018 10:42:11 +0000 (08:42 -0200)]
Check only predicates with a single param with a concrete default.

This is the most conservative possible and should be always correct.

6 years agoMark non-defaulted params as TyError to avoid a custom visitor.
leonardo.yvens [Tue, 6 Feb 2018 14:32:22 +0000 (12:32 -0200)]
Mark non-defaulted params as TyError to avoid a custom visitor.

6 years agoAdd tests for dependent defaults.
leonardo.yvens [Mon, 5 Feb 2018 23:51:58 +0000 (21:51 -0200)]
Add tests for dependent defaults.

6 years agoCheck WF of predicates with defaults only if all params have defaults
leonardo.yvens [Mon, 22 Jan 2018 15:36:51 +0000 (13:36 -0200)]
Check WF of predicates with defaults only if all params have defaults

6 years agoCheck WF of predicate with defaults only if all in LHS have default
leonardo.yvens [Sun, 21 Jan 2018 14:09:06 +0000 (12:09 -0200)]
Check WF of predicate with defaults only if all in LHS have default

 Given a trait predicate, if all params appearing in the LHS have
defaults then it should be a backwards compatible predicate. We verify
that by checking the WF of predicate with all defaults substituted
simultaneously.

6 years agoExpand comments, address nits.
leonardo.yvens [Sat, 20 Jan 2018 15:33:44 +0000 (13:33 -0200)]
Expand comments, address nits.

6 years agouse `map_bound` instead of `skip_binder`
leonardo.yvens [Tue, 16 Jan 2018 21:20:26 +0000 (19:20 -0200)]
use `map_bound` instead of `skip_binder`

6 years agoGo back to checking only the LHS of trait predicates.
leonardo.yvens [Sat, 23 Dec 2017 13:29:01 +0000 (11:29 -0200)]
Go back to checking only the LHS of trait predicates.

6 years agodefault WF: Substitute defaults individually in the clauses.
leonardo.yvens [Thu, 21 Dec 2017 15:36:16 +0000 (13:36 -0200)]
default WF: Substitute defaults individually in the clauses.

6 years agodefault WF: Leverage type substitution, less workarounding
leonardo.yvens [Thu, 21 Dec 2017 13:25:32 +0000 (11:25 -0200)]
default WF: Leverage type substitution, less workarounding

`Predicate` is `TypeFoldable`, use that. Be less clever with the
workaround.

6 years agoCheck WF of defaults even when there are no bounds.
leonardo.yvens [Mon, 18 Dec 2017 14:40:15 +0000 (12:40 -0200)]
Check WF of defaults even when there are no bounds.

6 years agoType check defaults.
leonardo.yvens [Fri, 15 Dec 2017 18:04:25 +0000 (16:04 -0200)]
Type check defaults.

And refactor duplicated code.

6 years agoAdd AArch64 features
Amanieu d'Antras [Tue, 27 Feb 2018 02:05:58 +0000 (02:05 +0000)]
Add AArch64 features

6 years agoRemove the v7 feature from AArch64
Amanieu d'Antras [Mon, 26 Feb 2018 23:46:33 +0000 (23:46 +0000)]
Remove the v7 feature from AArch64

It isn't a valid LLVM feature for this architecture.

6 years agoAdd std::path::Path::ancestors
Tobias Stolzmann [Wed, 28 Feb 2018 14:29:16 +0000 (15:29 +0100)]
Add std::path::Path::ancestors

Squashed commit of the following:

commit 1b5d55e26f667b1a25c83c5db0cbb072013a5122
Author: Tobias Stolzmann <tobias.stolzmann@gmail.com>
Date:   Wed Feb 28 00:06:15 2018 +0100

    Bugfix

commit 4265c2db0b0aaa66fdeace5d329665fd2d13903a
Author: Tobias Stolzmann <tobias.stolzmann@gmail.com>
Date:   Tue Feb 27 22:59:12 2018 +0100

    Rename std::path::Path::parents into std::path::Path::ancestors

commit 2548e4b14d377d20adad0f08304a0dd6f8e48e23
Author: Tobias Stolzmann <tobias.stolzmann@gmail.com>
Date:   Tue Feb 27 12:50:37 2018 +0100

    Add tracking issue

commit 3e2ce51a6eea0e39af05849f76dd2cefd5035e86
Author: Tobias Stolzmann <tobias.stolzmann@gmail.com>
Date:   Mon Feb 26 15:05:15 2018 +0100

    impl FusedIterator for Parents

commit a7e096420809740311e19d963d4aba6df77be2f9
Author: Tobias Stolzmann <tobias.stolzmann@gmail.com>
Date:   Mon Feb 26 14:38:41 2018 +0100

    Clarify that the iterator returned will yield at least one value

commit 796a36ea203cd197cc4c810eebd21c7e3433e6f1
Author: Tobias Stolzmann <tobias.stolzmann@gmail.com>
Date:   Thu Feb 22 14:01:21 2018 +0100

    Fix examples

commit e279383b21f11c97269cb355a5b2a0ecdb65bb0c
Author: Tobias Stolzmann <tobias.stolzmann@gmail.com>
Date:   Thu Feb 22 04:47:24 2018 +0100

    Add std::path::Path::parents

6 years agoAdd regression test for #48551
Tatsuyuki Ishi [Wed, 28 Feb 2018 12:56:37 +0000 (21:56 +0900)]
Add regression test for #48551