]> git.lizzy.rs Git - rust.git/log
rust.git
7 years agoAuto merge of #38858 - ollie27:rustbuild_docs_std, r=alexcrichton
bors [Sat, 7 Jan 2017 04:02:43 +0000 (04:02 +0000)]
Auto merge of #38858 - ollie27:rustbuild_docs_std, r=alexcrichton

rustbuild: Stop building docs for std dependancies

Fixes: #38319
r? @alexcrichton

7 years agoAuto merge of #38855 - Mark-Simulacrum:immediate-fix, r=eddyb
bors [Sat, 7 Jan 2017 02:01:51 +0000 (02:01 +0000)]
Auto merge of #38855 - Mark-Simulacrum:immediate-fix, r=eddyb

Fix ICE on i686 when calling immediate() on OperandValue::Ref in return

Fixes #38727, and adds a test case.

r? @eddyb

7 years agoAuto merge of #38835 - alexcrichton:less-overlapped, r=brson
bors [Fri, 6 Jan 2017 23:49:57 +0000 (23:49 +0000)]
Auto merge of #38835 - alexcrichton:less-overlapped, r=brson

std: Don't pass overlapped handles to processes

This commit fixes a mistake introduced in #31618 where overlapped handles were
leaked to child processes on Windows. On Windows once a handle is in overlapped
mode it should always have I/O executed with an instance of `OVERLAPPED`. Most
child processes, however, are not prepared to have their stdio handles in
overlapped mode as they don't use `OVERLAPPED` on reads/writes to the handle.

Now we haven't had any odd behavior in Rust up to this point, and the original
bug was introduced almost a year ago. I believe this is because it turns out
that if you *don't* pass an `OVERLAPPED` then the system will [supply one for
you][link]. In this case everything will go awry if you concurrently operate on
the handle. In Rust, however, the stdio handles are always locked, and there's
no way to not use them unlocked in libstd. Due to that change we've always had
synchronized access to these handles, which means that Rust programs typically
"just work".

Conversely, though, this commit fixes the test case included, which exhibits
behavior that other programs Rust spawns may attempt to execute. Namely, the
stdio handles may be concurrently used and having them in overlapped mode wreaks
havoc.

[link]: https://blogs.msdn.microsoft.com/oldnewthing/20121012-00/?p=6343

Closes #38811

7 years agoAuto merge of #38815 - cardoe:fix-print, r=nikomatsakis
bors [Fri, 6 Jan 2017 21:23:51 +0000 (21:23 +0000)]
Auto merge of #38815 - cardoe:fix-print, r=nikomatsakis

fix help for the --print option

Since 8285ab5c99, which was merged in with #38061, the help for the
--print option is missing the surrounding [ ] around the possible
options.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
7 years agoAuto merge of #38792 - jseyfried:improve_macros_11_diagnostics, r=nikomatsakis
bors [Fri, 6 Jan 2017 19:23:06 +0000 (19:23 +0000)]
Auto merge of #38792 - jseyfried:improve_macros_11_diagnostics, r=nikomatsakis

proc macros 1.1: improve diagnostics

Fixes #38586.
r? @nrc

7 years agoAuto merge of #38304 - sfackler:no-ipv6only, r=alexcrichton
bors [Fri, 6 Jan 2017 16:55:06 +0000 (16:55 +0000)]
Auto merge of #38304 - sfackler:no-ipv6only, r=alexcrichton

Deprecate TcpListener::set_only_v6

This was supposed to have been removed in #33124 but snuck through :(

Should the docs be removed?

I left the accessor undeprecated since it should actually work, though that method doesn't exist on other networking types.

r? @alexcrichton
cc @rust-lang/libs

7 years agoAuto merge of #38833 - arielb1:constant-mir-overflow, r=eddyb
bors [Fri, 6 Jan 2017 09:43:37 +0000 (09:43 +0000)]
Auto merge of #38833 - arielb1:constant-mir-overflow, r=eddyb

fix promotion of MIR terminators

promotion of MIR terminators used to try to promote the destination it
is trying to promote, leading to stack overflow.

Also clean up the code in `promote_temp` a bit to make it more understandable.

Fixes #37991.

cc @nikomatsakis
r? @eddyb

7 years agoAuto merge of #38793 - jseyfried:fix_macro_export_duplicates, r=nrc
bors [Fri, 6 Jan 2017 06:41:31 +0000 (06:41 +0000)]
Auto merge of #38793 - jseyfried:fix_macro_export_duplicates, r=nrc

Fix regression with duplicate `#[macro_export] macro_rules!`

Fixes #38715.
r? @nrc

7 years agoDeprecate TcpListener::set_only_v6
Steven Fackler [Sun, 11 Dec 2016 17:52:36 +0000 (09:52 -0800)]
Deprecate TcpListener::set_only_v6

This was supposed to have been removed in #33124 but snuck through :(

7 years agoAuto merge of #38069 - canndrew:empty-sub-patterns-again, r=nikomatsakis
bors [Fri, 6 Jan 2017 00:17:41 +0000 (00:17 +0000)]
Auto merge of #38069 - canndrew:empty-sub-patterns-again, r=nikomatsakis

Fix handling of empty types in patterns.

Fix for #12609.

7 years agorustbuild: Stop building docs for std dependancies
Oliver Middleton [Thu, 5 Jan 2017 22:26:04 +0000 (22:26 +0000)]
rustbuild: Stop building docs for std dependancies

7 years agoAuto merge of #38689 - pnkfelix:dont-check-stability-on-private-items, r=nikomatsakis
bors [Thu, 5 Jan 2017 21:58:45 +0000 (21:58 +0000)]
Auto merge of #38689 - pnkfelix:dont-check-stability-on-private-items, r=nikomatsakis

Dont check stability for items that are not pub to universe.

Dont check stability for items that are not pub to universe.

In other words, skip it for private and even `pub(restricted)` items, because stability checks are only relevant to things visible in other crates.

Fix #38412.

7 years agoFix ICE on i686 when calling immediate() on OperandValue::Ref in return
Mark Simulacrum [Thu, 5 Jan 2017 19:22:51 +0000 (12:22 -0700)]
Fix ICE on i686 when calling immediate() on OperandValue::Ref in return

7 years agoAuto merge of #38817 - jseyfried:improve_unused_qualification_lint, r=petrochenkov
bors [Thu, 5 Jan 2017 19:56:31 +0000 (19:56 +0000)]
Auto merge of #38817 - jseyfried:improve_unused_qualification_lint, r=petrochenkov

resolve: don't `unused_qualifications`-check global paths

We started `unused_qualifications`-checking global paths in #38014, causing #38682.
Fixes #38682.
r? @nrc

7 years agofix doc test for E0001
Andrew Cann [Thu, 5 Jan 2017 17:00:03 +0000 (01:00 +0800)]
fix doc test for E0001

7 years agoUn-remove E0001, put a notice on it instead
Andrew Cann [Thu, 5 Jan 2017 15:48:02 +0000 (23:48 +0800)]
Un-remove E0001, put a notice on it instead

7 years agoAuto merge of #38152 - arielb1:special-copy, r=nikomatsakis
bors [Thu, 5 Jan 2017 13:05:30 +0000 (13:05 +0000)]
Auto merge of #38152 - arielb1:special-copy, r=nikomatsakis

Fix associated types in copy implementations

Fixes an ICE and an error in checking copy implementations.

r? @nikomatsakis

7 years agoAuto merge of #38776 - eddyb:unsigned-means-unsigned, r=pnkfelix
bors [Thu, 5 Jan 2017 11:06:10 +0000 (11:06 +0000)]
Auto merge of #38776 - eddyb:unsigned-means-unsigned, r=pnkfelix

Properly ban the negation of unsigned integers in type-checking.

Lint-time banning of unsigned negation appears to be vestigial from a time it was feature-gated.
But now it always errors and we do have the ability to deref the checking of e.g. `-0`, through the trait obligation fulfillment context, which will only succeed/error when the `0` gets inferred to a specific type.

The two removed tests are the main reason for finally cleaning this up, they need changing all the time when refactoring the HIR-based `rustc_const_eval` and/or `rustc_passes::consts`, as warnings pile up.

7 years agoAuto merge of #38767 - est31:master, r=eddyb
bors [Thu, 5 Jan 2017 09:02:40 +0000 (09:02 +0000)]
Auto merge of #38767 - est31:master, r=eddyb

Some i128 tests

* Add some FFI tests for i128 on architectures where we have sort of working "C" FFI support. On all other architectures we ignore the test.
* enhance the u128 overflow tests

7 years agoAuto merge of #38756 - Mark-Simulacrum:2nd-trans-cleanup, r=eddyb
bors [Thu, 5 Jan 2017 06:01:24 +0000 (06:01 +0000)]
Auto merge of #38756 - Mark-Simulacrum:2nd-trans-cleanup, r=eddyb

Additional cleanup to rustc_trans

Removes `BlockAndBuilder`, `FunctionContext`, and `MaybeSizedValue`.

`LvalueRef` is used instead of `MaybeSizedValue`, which has the added benefit of making functions operating on `Lvalue`s be able to take just that (since it encodes the type with an `LvalueTy`, which can carry discriminant information) instead of a `MaybeSizedValue` and a discriminant.

r? @eddyb

7 years agoAuto merge of #38731 - alexcrichton:supafast-cross-dist, r=brson
bors [Thu, 5 Jan 2017 04:01:35 +0000 (04:01 +0000)]
Auto merge of #38731 - alexcrichton:supafast-cross-dist, r=brson

rustbuild: Quickly `dist` cross-host compilers

This commit optimizes the compile time for creating tarballs of cross-host
compilers and as a proof of concept adds two to the standard Travis matrix. Much
of this commit is further refactoring and refining of the `step.rs` definitions
along with the interpretation of `--target` and `--host` flags. This has gotten
confusing enough that I've also added a small test suite to
`src/bootstrap/step.rs` to ensure what we're doing works and doesn't regress.

After this commit when you execute:

    ./x.py dist --host $MY_HOST --target $MY_HOST

the build system will compile two compilers. The first is for the build platform
and the second is for the host platform. This second compiler is then packaged
up and placed into `build/dist` and is ready to go. With a fully cached LLVM and
docker image I was able to create a cross-host compiler in around 20 minutes
locally.

Eventually we plan to add a whole litany of cross-host entries to the Travis
matrix, but for now we're just adding a few before we eat up all the extra
capacity.

cc #38531

7 years agoAuto merge of #38770 - steveklabnik:doc-custom-derive, r=alexcrichton
bors [Thu, 5 Jan 2017 00:11:37 +0000 (00:11 +0000)]
Auto merge of #38770 - steveklabnik:doc-custom-derive, r=alexcrichton

Document custom derive.

These are some bare-bones documentation for custom derive, needed
to stabilize "macros 1.1",
https://github.com/rust-lang/rust/issues/35900

The book chapter is based off of a blog post by @cbreeden,
https://cbreeden.github.io/Macros11/

Normally, we have a policy of not mentioning external crates in
documentation. However, given that syn/quote are basically neccesary
for properly using macros 1.1, I feel that not including them here
would make the documentation very bad. So the rules should be bent
in this instance.

So far, this PR includes only docs; @alexcrichton said in https://github.com/rust-lang/rust/issues/35900 that he'd be okay with landing them before stabilization; I don't mind either way.

7 years agostd: Don't pass overlapped handles to processes
Alex Crichton [Wed, 4 Jan 2017 23:32:39 +0000 (15:32 -0800)]
std: Don't pass overlapped handles to processes

This commit fixes a mistake introduced in #31618 where overlapped handles were
leaked to child processes on Windows. On Windows once a handle is in overlapped
mode it should always have I/O executed with an instance of `OVERLAPPED`. Most
child processes, however, are not prepared to have their stdio handles in
overlapped mode as they don't use `OVERLAPPED` on reads/writes to the handle.

Now we haven't had any odd behavior in Rust up to this point, and the original
bug was introduced almost a year ago. I believe this is because it turns out
that if you *don't* pass an `OVERLAPPED` then the system will [supply one for
you][link]. In this case everything will go awry if you concurrently operate on
the handle. In Rust, however, the stdio handles are always locked, and there's
no way to not use them unlocked in libstd. Due to that change we've always had
synchronized access to these handles, which means that Rust programs typically
"just work".

Conversely, though, this commit fixes the test case included, which exhibits
behavior that other programs Rust spawns may attempt to execute. Namely, the
stdio handles may be concurrently used and having them in overlapped mode wreaks
havoc.

[link]: https://blogs.msdn.microsoft.com/oldnewthing/20121012-00/?p=6343

Closes #38811

7 years agofix promotion of MIR terminators
Ariel Ben-Yehuda [Wed, 4 Jan 2017 23:19:54 +0000 (01:19 +0200)]
fix promotion of MIR terminators

promotion of MIR terminators used to try to promote the destination it
is trying to promote, leading to stack overflow.

Fixes #37991.

7 years agoDocument custom derive.
Steve Klabnik [Mon, 2 Jan 2017 01:33:37 +0000 (20:33 -0500)]
Document custom derive.

These are some bare-bones documentation for custom derive, needed
to stabilize "macros 1.1",
https://github.com/rust-lang/rust/issues/35900

The book chapter is based off of a blog post by @cbreeden,
https://cbreeden.github.io/Macros11/

Normally, we have a policy of not mentioning external crates in
documentation. However, given that syn/quote are basically neccesary
for properly using macros 1.1, I feel that not including them here
would make the documentation very bad. So the rules should be bent
in this instance.

7 years agoAuto merge of #38783 - alexcrichton:stabilize-proc-macro, r=nikomatsakis
bors [Wed, 4 Jan 2017 20:06:21 +0000 (20:06 +0000)]
Auto merge of #38783 - alexcrichton:stabilize-proc-macro, r=nikomatsakis

rustc: Stabilize the `proc_macro` feature

This commit stabilizes the `proc_macro` and `proc_macro_lib` features in the
compiler to stabilize the "Macros 1.1" feature of the language. Many more
details can be found on the tracking issue, #35900.

Closes #35900

7 years agorustbuild: Quickly `dist` cross-host compilers
Alex Crichton [Sat, 31 Dec 2016 03:50:57 +0000 (19:50 -0800)]
rustbuild: Quickly `dist` cross-host compilers

This commit optimizes the compile time for creating tarballs of cross-host
compilers and as a proof of concept adds two to the standard Travis matrix. Much
of this commit is further refactoring and refining of the `step.rs` definitions
along with the interpretation of `--target` and `--host` flags. This has gotten
confusing enough that I've also added a small test suite to
`src/bootstrap/step.rs` to ensure what we're doing works and doesn't regress.

After this commit when you execute:

    ./x.py dist --host $MY_HOST --target $MY_HOST

the build system will compile two compilers. The first is for the build platform
and the second is for the host platform. This second compiler is then packaged
up and placed into `build/dist` and is ready to go. With a fully cached LLVM and
docker image I was able to create a cross-host compiler in around 20 minutes
locally.

Eventually we plan to add a whole litany of cross-host entries to the Travis
matrix, but for now we're just adding a few before we eat up all the extra
capacity.

cc #38531

7 years agoFix errors introduced during rebase
Mark Simulacrum [Wed, 4 Jan 2017 18:47:43 +0000 (11:47 -0700)]
Fix errors introduced during rebase

7 years agoSimplify handling of dropping structs.
Mark Simulacrum [Wed, 4 Jan 2017 03:54:22 +0000 (20:54 -0700)]
Simplify handling of dropping structs.

7 years agoPull out downcasting into caller of iter_variant
Mark Simulacrum [Wed, 4 Jan 2017 03:16:36 +0000 (20:16 -0700)]
Pull out downcasting into caller of iter_variant

Renames iter_variant to iter_variant_fields to more clearly communicate
the purpose of the function.

7 years agoRemove extraneous setting of builder positions.
Mark Simulacrum [Wed, 4 Jan 2017 03:10:45 +0000 (20:10 -0700)]
Remove extraneous setting of builder positions.

7 years agoSimplify code further
Mark Simulacrum [Mon, 2 Jan 2017 21:47:15 +0000 (14:47 -0700)]
Simplify code further

7 years agoInline and remove Builder::entry_block
Mark Simulacrum [Mon, 2 Jan 2017 20:51:09 +0000 (13:51 -0700)]
Inline and remove Builder::entry_block

7 years agoFix style nit
Mark Simulacrum [Mon, 2 Jan 2017 20:24:04 +0000 (13:24 -0700)]
Fix style nit

7 years agoBuilder.build_new_block -> Builder.build_sibling_block
Mark Simulacrum [Mon, 2 Jan 2017 20:18:38 +0000 (13:18 -0700)]
Builder.build_new_block -> Builder.build_sibling_block

7 years agoInline trans_switch to simplify code
Mark Simulacrum [Mon, 2 Jan 2017 20:05:42 +0000 (13:05 -0700)]
Inline trans_switch to simplify code

7 years agoMove trans_field_ptr and struct_field_ptr to mir/lvalue
Mark Simulacrum [Mon, 2 Jan 2017 19:13:59 +0000 (12:13 -0700)]
Move trans_field_ptr and struct_field_ptr to mir/lvalue

7 years agoMove trans_const to mir::constant
Mark Simulacrum [Mon, 2 Jan 2017 18:00:42 +0000 (11:00 -0700)]
Move trans_const to mir::constant

7 years agoChange trans_field_ptr to utilize LvalueTy to determine discriminant.
Mark Simulacrum [Mon, 2 Jan 2017 16:06:01 +0000 (09:06 -0700)]
Change trans_field_ptr to utilize LvalueTy to determine discriminant.

7 years agoUse LvalueRef instead of MaybeSizedValue
Mark Simulacrum [Sun, 1 Jan 2017 22:50:15 +0000 (15:50 -0700)]
Use LvalueRef instead of MaybeSizedValue

7 years agoSimpliy block creation in MirContext
Mark Simulacrum [Sun, 1 Jan 2017 18:13:50 +0000 (11:13 -0700)]
Simpliy block creation in MirContext

7 years agoAdd Builder::sess and Builder::tcx methods
Mark Simulacrum [Sun, 1 Jan 2017 15:46:34 +0000 (08:46 -0700)]
Add Builder::sess and Builder::tcx methods

7 years agoAdd method, new_block, to MirContext for block construction.
Mark Simulacrum [Sun, 1 Jan 2017 08:29:23 +0000 (01:29 -0700)]
Add method, new_block, to MirContext for block construction.

This makes a slow transition to block construction happening only from
MirContext easier.

7 years agoPurge FunctionContext
Mark Simulacrum [Sun, 1 Jan 2017 07:42:09 +0000 (00:42 -0700)]
Purge FunctionContext

7 years agoReplace BlockAndBuilder with Builder.
Mark Simulacrum [Sat, 31 Dec 2016 23:00:24 +0000 (16:00 -0700)]
Replace BlockAndBuilder with Builder.

7 years agoAdd test for i128 ffi usage
est31 [Sun, 1 Jan 2017 22:06:57 +0000 (23:06 +0100)]
Add test for i128 ffi usage

7 years agoenhance u128 overflow tests
est31 [Sun, 1 Jan 2017 18:53:12 +0000 (19:53 +0100)]
enhance u128 overflow tests

7 years agoAuto merge of #38414 - estebank:doc-dissambiguate, r=steveklabnik
bors [Wed, 4 Jan 2017 17:11:02 +0000 (17:11 +0000)]
Auto merge of #38414 - estebank:doc-dissambiguate, r=steveklabnik

Rustdoc: disambiguate Implementors when the type name is not unique

Presentation [goes from](https://doc.rust-lang.org/stable/std/iter/trait.ExactSizeIterator.html#implementors):

<img width="492" alt="" src="https://cloud.githubusercontent.com/assets/1606434/21276752/b2b50474-c387-11e6-96e1-9766851da269.png">

to:

<img width="787" alt="" src="https://cloud.githubusercontent.com/assets/1606434/21276763/bb37f6b0-c387-11e6-8596-9163cb254674.png">

on cases where there're multiple implementors with the same name.

Fixes #37762.

7 years agoAuto merge of #38670 - dotdash:transmute_align, r=eddyb
bors [Wed, 4 Jan 2017 14:26:17 +0000 (14:26 +0000)]
Auto merge of #38670 - dotdash:transmute_align, r=eddyb

Fix transmute::<T, U> where T requires a bigger alignment than U

For transmute::<T, U> we simply pointercast the destination from a U
pointer to a T pointer, without providing any alignment information,
thus LLVM assumes that the destination is aligned to hold a value of
type T, which is not necessarily true. This can lead to LLVM emitting
machine instructions that assume said alignment, and thus cause aborts.

To fix this, we need to provide the actual alignment to store_operand()
and in turn to store() so they can set the proper alignment information
on the stores and LLVM can emit the proper machine instructions.

Fixes #32947

7 years agotypeck::coherence::builtin - sort impls in the DefId order
Ariel Ben-Yehuda [Wed, 4 Jan 2017 09:54:57 +0000 (11:54 +0200)]
typeck::coherence::builtin - sort impls in the DefId order

this makes error messages consistent across architectures

7 years agoAuto merge of #38773 - sanxiyn:rustdoc-ice, r=steveklabnik
bors [Wed, 4 Jan 2017 09:24:24 +0000 (09:24 +0000)]
Auto merge of #38773 - sanxiyn:rustdoc-ice, r=steveklabnik

Avoid rustdoc ICE when an unstable feature is used

Fix #36159.

7 years agoFix regression with duplicate `#[macro_export] macro_rules!`.
Jeffrey Seyfried [Tue, 3 Jan 2017 00:36:34 +0000 (00:36 +0000)]
Fix regression with duplicate `#[macro_export] macro_rules!`.

7 years agoAuto merge of #38552 - eddyb:bad-blocks, r=arielb1
bors [Wed, 4 Jan 2017 06:29:14 +0000 (06:29 +0000)]
Auto merge of #38552 - eddyb:bad-blocks, r=arielb1

Don't leak the compiler's internal representation of scopes in error messages.

Fixes #37884 (actually fixes #27942, which was made worse by #37412) by handling more node types.
Ideally we'd turn the unknown node type situations into ICEs and fix them as they show up in errors.
But we might want to backport this patch so I was less aggressive.

7 years agoDon't `unused_qualifications`-check global paths.
Jeffrey Seyfried [Tue, 3 Jan 2017 02:47:18 +0000 (02:47 +0000)]
Don't `unused_qualifications`-check global paths.

7 years agofix help for the --print option
Doug Goldstein [Wed, 4 Jan 2017 05:44:10 +0000 (23:44 -0600)]
fix help for the --print option

Since 8285ab5c99, which was merged in with #38061, the help for the
--print option is missing the surrounding [ ] around the possible
options.

Signed-off-by: Doug Goldstein <cardoe@cardoe.com>
7 years agoAuto merge of #38707 - redox-os:master, r=brson
bors [Wed, 4 Jan 2017 04:28:15 +0000 (04:28 +0000)]
Auto merge of #38707 - redox-os:master, r=brson

Add socket timeout and ttl support in `sys::redox`

This adds support for `read_timeout`, `write_timeout`, and `ttl` on `TcpStream`, `TcpListener`, and `UdpSocket` in the `sys::redox` module.

The DNS lookup has been set to use a 5 second timeout by default.

7 years agoUpdate for changes to TraitItem on master.
Eduard-Mihai Burtescu [Wed, 4 Jan 2017 02:36:20 +0000 (04:36 +0200)]
Update for changes to TraitItem on master.

7 years agoDon't leak the compiler's internal representation of scopes in error messages.
Eduard-Mihai Burtescu [Thu, 22 Dec 2016 17:46:08 +0000 (19:46 +0200)]
Don't leak the compiler's internal representation of scopes in error messages.

7 years agoFix build after rebase
Andrew Cann [Wed, 4 Jan 2017 03:07:32 +0000 (11:07 +0800)]
Fix build after rebase

7 years agoAuto merge of #38809 - alexcrichton:rustbuild-fresh, r=brson
bors [Wed, 4 Jan 2017 01:51:06 +0000 (01:51 +0000)]
Auto merge of #38809 - alexcrichton:rustbuild-fresh, r=brson

rustbuild: Fix a few rebuilding issues

Did a bit of investigation and found a few small unrelated issues, but this should help clean up a lot of errors we've been seeing locally.

7 years agoAuto merge of #38066 - bluss:string-slice-error, r=sfackler
bors [Tue, 3 Jan 2017 23:51:42 +0000 (23:51 +0000)]
Auto merge of #38066 - bluss:string-slice-error, r=sfackler

Use more specific panic message for &str slicing errors

Separate out of bounds errors from character boundary errors, and print
more details for character boundary errors.

It reports the first error it finds in:

1. begin out of bounds
2. end out of bounds
3. begin <= end violated
3. begin not char boundary
5. end not char boundary.

Example:

    &"abcαβγ"[..4]

    thread 'str::test_slice_fail_boundary_1' panicked at 'byte index 4 is not
    a char boundary; it is inside 'α' (bytes 3..5) of `abcαβγ`'

Fixes #38052

7 years agoRevert cargo.lock
Jeremy Soller [Tue, 3 Jan 2017 22:47:14 +0000 (15:47 -0700)]
Revert cargo.lock

7 years agoRemove -lc, -lm from the target spec - the cross compiler will link those
Jeremy Soller [Tue, 3 Jan 2017 22:42:41 +0000 (15:42 -0700)]
Remove -lc, -lm from the target spec - the cross compiler will link those

7 years agorustbuild: Update where we look for mtime changes
Alex Crichton [Tue, 3 Jan 2017 22:16:05 +0000 (14:16 -0800)]
rustbuild: Update where we look for mtime changes

Recent versions of Cargo lift less output up into the "main" directory, so let's
look more inside the `deps` folder for changes to propagate differences.

Closes #38744
Closes #38746

7 years agorustbuild: Allow create_sysroot in stage0
Alex Crichton [Tue, 3 Jan 2017 22:07:30 +0000 (14:07 -0800)]
rustbuild: Allow create_sysroot in stage0

Despite what the comment says, we actually need to do this. We're not cleaning
out the stage0 compiler's sysroot, but rather just our own sysroot that we
assembled previously.

7 years agosimplify Copy implementation error reporting
Ariel Ben-Yehuda [Tue, 3 Jan 2017 21:54:12 +0000 (23:54 +0200)]
simplify Copy implementation error reporting

Span the affected fields instead of reporting the field/variant name.

7 years agorustfmt coherence::builtin
Ariel Ben-Yehuda [Tue, 3 Jan 2017 19:51:28 +0000 (21:51 +0200)]
rustfmt coherence::builtin

7 years agonormalize field types in copy implementations
Ariel Ben-Yehuda [Sun, 4 Dec 2016 00:04:08 +0000 (02:04 +0200)]
normalize field types in copy implementations

Fixes #34377.

7 years agocoherence: check builtin impls after the specialization graph is ready
Ariel Ben-Yehuda [Sat, 3 Dec 2016 23:32:49 +0000 (01:32 +0200)]
coherence: check builtin impls after the specialization graph is ready

Fixes #33187.

7 years agocoherence: code cleanup
Ariel Ben-Yehuda [Sat, 3 Dec 2016 22:58:13 +0000 (00:58 +0200)]
coherence: code cleanup

7 years agocoherence: move the builtin trait checks to their own module
Ariel Ben-Yehuda [Sat, 3 Dec 2016 22:28:30 +0000 (00:28 +0200)]
coherence: move the builtin trait checks to their own module

no functional changes

7 years agoProperly ban the negation of unsigned integers in type-checking.
Eduard-Mihai Burtescu [Tue, 3 Jan 2017 19:48:17 +0000 (21:48 +0200)]
Properly ban the negation of unsigned integers in type-checking.

7 years agoRegression test and exploratory unit test.
Felix S. Klock II [Tue, 3 Jan 2017 14:54:38 +0000 (09:54 -0500)]
Regression test and exploratory unit test.

7 years agoDont check stability for items that are not pub to universe.
Felix S. Klock II [Thu, 29 Dec 2016 21:00:53 +0000 (16:00 -0500)]
Dont check stability for items that are not pub to universe.

Includes special case handling for trait methods.

Fix #38412.

7 years agoAuto merge of #38473 - zackmdavis:issue_kebab, r=sanxiyn
bors [Tue, 3 Jan 2017 09:42:22 +0000 (09:42 +0000)]
Auto merge of #38473 - zackmdavis:issue_kebab, r=sanxiyn

prefer hyphens in test files named after issue numbers

We have a lot of tests with filenames honoring particular issues by
number. Typically, these are called issue-${issue_no}.rs (note the
hyphen):

```
$ find . -regextype posix-egrep -regex '.*/issue-[0-9]*.rs' | wc
   1289    1289   35935
```

We also had a much smaller number of files that are like this, but don't
have a hyphen in between the substring `issue` and the number:

```
$ find . -regextype posix-egrep -regex '.*/issue[0-9]*.rs'
./debuginfo/issue14411.rs
./debuginfo/issue12886.rs
./debuginfo/issue13213.rs
./debuginfo/issue22656.rs
./debuginfo/issue7712.rs
./compile-fail/issue32829.rs
./run-pass/issue24353.rs
./run-pass/issue34796.rs
./run-pass/issue18173.rs
./run-pass/issue22346.rs
./run-pass/auxiliary/issue13507.rs
./run-pass/issue26127.rs
./run-pass/issue22008.rs
./run-pass/issue34569.rs
./run-pass/issue29927.rs
./run-pass/issue36260.rs
```

Some would argue that the inconsistency is æsthetically displeasing,
hence this trivial patch. (Note that run-pass/auxiliary/issue13507.rs
has an excuse; it's `use`d in run-pass/issue-13507-2.rs; the matter of
there being two different compile-fail tests with different name
conventions for issue no. 32829 is also neglected here for the sake of
keeping this trivial cleanup patch as trivial as possible for ease of
review.)

7 years agoFix make tidy
Andrew Cann [Sat, 31 Dec 2016 01:17:51 +0000 (09:17 +0800)]
Fix make tidy

7 years agoChange file structure, add comments for inhabitedness.rs
Andrew Cann [Sat, 31 Dec 2016 00:51:25 +0000 (08:51 +0800)]
Change file structure, add comments for inhabitedness.rs

7 years agoSpelling. s/forrest/forest
Andrew Cann [Fri, 30 Dec 2016 23:35:43 +0000 (07:35 +0800)]
Spelling. s/forrest/forest

7 years agofix comment that got split in two
Niko Matsakis [Fri, 30 Dec 2016 15:51:32 +0000 (10:51 -0500)]
fix comment that got split in two

7 years agoFix build after rebase.
Andrew Cann [Thu, 29 Dec 2016 09:08:33 +0000 (17:08 +0800)]
Fix build after rebase.

Mostly just rename stuff.
Visibility checks use DefIds rather than NodeIds now.

7 years agoRemove E0001 diagnostic
Andrew Cann [Thu, 29 Dec 2016 04:38:02 +0000 (12:38 +0800)]
Remove E0001 diagnostic

7 years agoAmend compile-fail tests
Andrew Cann [Thu, 29 Dec 2016 04:17:40 +0000 (12:17 +0800)]
Amend compile-fail tests

7 years agoDisable unreachable patterns error entirely
Andrew Cann [Sun, 11 Dec 2016 16:01:12 +0000 (00:01 +0800)]
Disable unreachable patterns error entirely

7 years agoFix inhabitedness bug
Andrew Cann [Sun, 11 Dec 2016 15:47:51 +0000 (23:47 +0800)]
Fix inhabitedness bug

7 years agoRefactor is_uninhabited
Andrew Cann [Sun, 11 Dec 2016 14:30:14 +0000 (22:30 +0800)]
Refactor is_uninhabited

We now cache the inhabitedness of types in the GlobalCtxt.

Rather than calculating whether a type is visibly uninhabited from a given
NodeId we calculate the full set of NodeIds from which a type is visibly
uninhabited then cache that set. We can then use that to answer queries about
the inhabitedness of a type relative to any given node.

7 years agoAdd drain method to AccumulateVec/ArrayVec
Andrew Cann [Sun, 11 Dec 2016 14:25:26 +0000 (22:25 +0800)]
Add drain method to AccumulateVec/ArrayVec

You can now call .drain(..) on SmallVec, AccumulateVec and ArrayVec

7 years agoFix test I broke
Andrew Cann [Sun, 11 Dec 2016 14:23:18 +0000 (22:23 +0800)]
Fix test I broke

7 years agoFix build after rebase
Andrew Cann [Sat, 3 Dec 2016 04:56:20 +0000 (12:56 +0800)]
Fix build after rebase

7 years agoFix build after rebase
Andrew Cann [Thu, 1 Dec 2016 04:41:21 +0000 (12:41 +0800)]
Fix build after rebase

7 years agoAuto merge of #38791 - dylanmckay:foreign-item-dc, r=eddyb
bors [Tue, 3 Jan 2017 07:41:43 +0000 (07:41 +0000)]
Auto merge of #38791 - dylanmckay:foreign-item-dc, r=eddyb

Don't warn about dead foreign items if the 'allow(dead_code)' attribute is present

This functionality was missing, and should have existed previously.

Fixes #38780

7 years agoStyle fix
Andrew Cann [Thu, 1 Dec 2016 03:56:55 +0000 (11:56 +0800)]
Style fix

7 years agoImprove error message, fix and add tests.
Andrew Cann [Thu, 1 Dec 2016 03:37:03 +0000 (11:37 +0800)]
Improve error message, fix and add tests.

Changes the non-exhaustive match error message to generate more general
witnesses.

7 years agoMore pattern matching for empty types changes
Andrew Cann [Wed, 30 Nov 2016 17:12:03 +0000 (01:12 +0800)]
More pattern matching for empty types changes

Fix is_uninhabited for enum types. It used to assume that an enums variant's
fields were all private.

Fix MIR generation for irrefutable Variant pattern matches. This allows code
like this to work:

    let x: Result<32, !> = Ok(123);
    let Ok(y) = x;

Carry type information on dummy wildcard patterns. Sometimes we need to expand
these patterns into their constructors and we don't want to be expanding a
TyError into a Constructor::Single.

7 years agoMake is_useful handle empty types properly
Andrew Cann [Tue, 29 Nov 2016 07:10:26 +0000 (15:10 +0800)]
Make is_useful handle empty types properly

7 years agoStart enabling empty types in pattern matching.
Andrew Cann [Mon, 28 Nov 2016 10:38:27 +0000 (18:38 +0800)]
Start enabling empty types in pattern matching.

Remove the assumption at the start of is_useful that any suitably-long array of
wildcard patterns is useful relative the any empty vector. Instead we just
continue to recurse column-wise over the matrix.

This assumption is false in the presence of empty types.
eg. in the simplest case:

let x: ! = ...;
match x {
    // This pattern should not be considered useful by the algorithm
    _   => ...
}

7 years agoAuto merge of #38782 - clarcharr:stupid, r=GuillaumeGomez
bors [Tue, 3 Jan 2017 02:21:00 +0000 (02:21 +0000)]
Auto merge of #38782 - clarcharr:stupid, r=GuillaumeGomez

Reword 'stupid' and 'crazy' in docs.

These terms are not very descriptive and are better reworded as something else.

7 years agoAdd regression test.
Jeffrey Seyfried [Tue, 3 Jan 2017 02:11:32 +0000 (02:11 +0000)]
Add regression test.

7 years agoFold all spans in the AST.
Jeffrey Seyfried [Tue, 3 Jan 2017 01:33:40 +0000 (01:33 +0000)]
Fold all spans in the AST.

7 years agoDon't warn about dead foreign items if the 'allow(dead_code)' attribute is present
Dylan McKay [Tue, 3 Jan 2017 01:54:15 +0000 (14:54 +1300)]
Don't warn about dead foreign items if the 'allow(dead_code)' attribute is present

This functionality was missing, and should have existed previously.

Fixes #38780

7 years agoReword 'stupid' and 'crazy' in docs.
Clar Charr [Mon, 2 Jan 2017 20:47:00 +0000 (15:47 -0500)]
Reword 'stupid' and 'crazy' in docs.