Commit Graph

78166 Commits

Author SHA1 Message Date
Ralf Jung
17206a7e64 PinMut::get_mut can also preserve the lifetime 2018-05-07 13:20:30 +02:00
Ralf Jung
84ce206db6 Change PinMut::map to be able to preserve the original reference's lifetime
Suggested by @dylanede at <https://github.com/rust-lang/rust/issues/49150#issuecomment-381071442>.
2018-05-07 12:51:59 +02:00
Ralf Jung
9f26376281 Rename Pin to PinMut
As discussed at [1] §3 and [2] and [3], a formal look at pinning requires considering a
distinguished "shared pinned" mode/typestate.  Given that, it seems desirable to
at least eventually actually expose that typestate as a reference type.  This
renames Pin to PinMut, freeing the name Pin in case we want to use it for a
shared pinned reference later on.

[1] https://www.ralfj.de/blog/2018/04/10/safe-intrusive-collections-with-pinning.html
[2] https://github.com/rust-lang/rfcs/pull/2349#issuecomment-379250361
[3] https://github.com/rust-lang/rust/issues/49150#issuecomment-380488275
2018-05-07 12:44:26 +02:00
Guillaume Gomez
3ba7c00f94 Prevent infinite recursion of modules 2018-05-07 12:44:03 +02:00
Aaron Power
85f3ecfa9b
Update RELEASES.md 2018-05-07 11:37:36 +01:00
Jorge Aparicio
b61a4c20c6 make the const constructor unstable 2018-05-07 12:11:22 +02:00
bors
c88992d001 Auto merge of #50000 - michaelwoerister:cross-lang-lto, r=alexcrichton
Add some groundwork for cross-language LTO.

Implements part of #49879:
- Adds a `-Z cross-lang-lto` flag to rustc
- Makes sure that bitcode is embedded in object files if the flag is set.

This should already allow for using cross language LTO for staticlibs (where one has to invoke the linker manually anyway). However, `rustc` will not try to enable LTO for its own linker invocations yet.

r? @alexcrichton
2018-05-07 08:41:07 +00:00
Michael Woerister
0bf26bf951 Fix Mac OS section name for LLVM bitcode. 2018-05-07 09:52:38 +02:00
bors
9b97705f9e Auto merge of #50437 - zackmdavis:must_note, r=estebank
in which the must-use additional messaging is tucked into a note

_I_ think it looks better this way! What do _you_ think??

![must_use_note](https://user-images.githubusercontent.com/1076988/39612597-b6dd2dae-4f15-11e8-87ec-ab9da21ef062.png)

r? @estebank
2018-05-07 06:27:01 +00:00
Zack M. Davis
5a5a25c701 in which the must-use additional messaging is tucked into a note
Also, a comment is edited to reflect that spaces around the equals-sign in
attributes is the standard (q.v. rust-lang-nursery/fmt-rfcs@bea80532e7).
2018-05-06 21:51:23 -07:00
bors
760274f7b3 Auto merge of #50434 - nrc:tool-bustage-infra, r=alexcrichton
Ping infra team on all tool bustage

r? @kennytm

cc @rust-lang/core as discussed at today's meeting
2018-05-07 03:47:41 +00:00
Nick Cameron
d4c53ac827 save-analysis: emit correct docs for methods
cc https://github.com/rust-lang-nursery/rls/issues/446
2018-05-07 11:43:34 +12:00
bors
700165d7ae Auto merge of #50468 - nrc:test-rustfmt, r=alexcrichton
Pass a test directory to rustfmt

Another attempt to fix the rustfmt tests. `RUSTFMT_TEST_DIR` is consumed by Rustfmt in the latext commit (thus the Rustfmt update) because we need a place to create temp files that won't be read-only.

r? @alexcrichton
2018-05-06 22:29:01 +00:00
bors
428ea5f6b9 Auto merge of #50309 - samWson:issue-49938, r=eddyb
Issue 49938: Reference tagged unions discr(iminant) as tag

Here the changes reference the Tagged type _discriminant_ as _tag_ instead. This is the correct terminology when referencing how tagged unions are represented in memory.
2018-05-06 17:47:30 +00:00
bors
fb9e058890 Auto merge of #50474 - sinkuu:fix_assert_ice, r=alexcrichton
Fix ICE in assertion macro

Fixes #50471. Needs beta-backport (stable-to-beta/nightly regression).

* `panic` with single argument does not need escaping `{` and `}`
* Instead of unescaping `\u{...}` manually, just use `escape_debug` in pprust
2018-05-06 15:17:13 +00:00
Nikita Popov
9f8f366eea Use ManuallyDrop instead of Option in Hole implementation
The Option is always Some until drop, where it becomes None. Make
this more explicit and avoid unwraps by using ManuallyDrop.

This change should be performance-neutral as LLVM already optimizes
the unwraps away in the inlined code.
2018-05-06 16:55:40 +02:00
bors
2416032bb7 Auto merge of #50420 - chrisvittal:mailmap-chrisvittal, r=oli-obk
Add mailmap entry for Chris Vittal

I use both Chris and Christopher in git configs and other places.
2018-05-06 12:44:15 +00:00
bors
6f721f54c6 Auto merge of #50466 - kennytm:rustbuild-stage0-lib-test, r=Mark-Simulacrum
rustbuild: Allow quick testing of libstd and libcore at stage0

This PR implemented two features:

1. Added a `--no-doc` flag to allow testing a crate *without* doc tests. In this mode, we don't need to build rustdoc, and thus we can skip building the stage2 compiler. (Ideally stage0 test should use the bootstrap rustdoc, but I don't want to mess up the core builder logic here)

2. Moved all libcore tests externally and added a tidy test to ensure we don't accidentally add `#[test]` into libcore.

After this PR, one could run `./x.py test --stage 0 --no-doc src/libstd` to test `libstd` without building the compiler, thus enables us to quickly test new library features.
2018-05-06 06:33:53 +00:00
bors
ce0cb144fb Auto merge of #50453 - alexcrichton:proc-macro-not-send, r=eddyb
proc_macro: Explicitly make everything !Send/Sync

This commit adds explicit imp blocks to ensure that all publicly exported types
(except simple enums) are not `Send` nor `Sync` in the `proc_macro` crate.

cc #38356
2018-05-06 04:15:02 +00:00
Shotaro Yamada
39df2231bb Fix assertion message generation 2018-05-06 12:13:32 +09:00
Samuel Wilson
38a6eca29d issue-49938: Reference tagged unions discr(iminant) as tag
Refer https://github.com/rust-lang/rust/issues/49938

Previously tagged unions' tag was refered to as a discr(iminant).
Here the changes use tag instead which is the correct terminology
when refering to the memory representation of tagged unions.
2018-05-06 14:52:38 +12:00
bors
2c315475ea Auto merge of #50470 - frewsxcv:frewsxcv-update-books, r=Mark-Simulacrum
Update books for the next release.

Continuation from https://github.com/rust-lang/rust/pull/50427
2018-05-05 23:46:16 +00:00
Corey Farwell
7364d26921 Update books for the next release. 2018-05-05 19:02:13 -04:00
bors
f9bfe840f4 Auto merge of #50444 - michaelwoerister:check-parallel-queries-in-ci, r=alexcrichton
Add a CI job that makes sure rustc builds with parallel queries enabled.

This shouldn't take up too much CI time `:)`

cc https://github.com/rust-lang/rust/issues/48607
cc @Zoxc

r? @alexcrichton
2018-05-05 21:09:56 +00:00
Nick Cameron
df97dd1d05 Pass a test directory to rustfmt 2018-05-06 08:39:37 +12:00
kennytm
05af55bd80
s/DocTestsOption/DocTests/g 2018-05-06 03:30:42 +08:00
kennytm
169f58b712
Added some simple documentation. 2018-05-06 03:29:19 +08:00
bors
24c5f153fd Auto merge of #50276 - Zoxc:build-cleanup, r=alexcrichton
Misc tweaks

This:
- ~~Add explicit dependencies on `getops`~~
- Fixes the libtest-json test when `RUST_BACKTRACE=1` is set
- ~~Sets `opt-level` to `3`~~
- Removes the use of `staged_api` from `rustc_plugin`
- ~~Enables the Windows Error Reporting dialog when running rustc during bootstrapping~~
- Disables Windows Error Reporting dialog when running compiletest tests
- Enables backtraces when running rustc during bootstrapping
- ~~Removes the `librustc` dependency on `libtest`~~
- Triggers JIT debugging on Windows if rustc panics during bootstrapping

r? @alexcrichton
2018-05-05 18:58:17 +00:00
John Kåre Alsaker
e24cbe2da0 Misc tweaks 2018-05-05 20:36:46 +02:00
kennytm
02f6a0335f
Some final touches to ensure ./x.py test --stage 0 src/lib* works 2018-05-06 02:34:07 +08:00
kennytm
f24915b67f
Added a tidy test to ensure libcore cannot contain any tests. 2018-05-06 02:34:07 +08:00
kennytm
13e07a4e18
Move the tests in src/libcore/slice/memchr.rs as well. 2018-05-06 02:34:07 +08:00
Lukas Kalbertodt
10ab98da8c
Fix warning in core::time tests 2018-05-06 02:34:07 +08:00
Lukas Kalbertodt
3ddd67ba53
Move libcore/time tests from time.rs to tests/time.rs
All other tests of libcore reside in the tests/ directory,
too. Apparently the tests of `time.rs` weren't run before, at
least not by `x.py test src/libcore`.
2018-05-06 02:34:07 +08:00
kennytm
be9d6690b2
Added test case. 2018-05-06 02:34:07 +08:00
est31
6c8ec842cc Remove some transmutes 2018-05-05 20:14:53 +02:00
kennytm
1733f5e1c0
Added ./x.py test --no-doc option.
This enables `./x.py test --stage 0 src/libstd --no-doc` and ensures the
stage2-rustc and rustdoc need to be built.
2018-05-06 01:27:22 +08:00
bors
fa30ae5c7e Auto merge of #50441 - kornelski:debughint, r=kornelski
Suggest more helpful formatting string

Based on [user feedback](https://users.rust-lang.org/t/ux-feedback-from-a-rust-newbie/17220) the minimal suggestion of `:?` is unclear.

Also `{:#?}` is much more readable than the standard debug, so this PR suggests it to help surface this nice feature.
2018-05-05 14:29:42 +00:00
bors
2d847dc90f Auto merge of #50370 - nikomatsakis:nll-alias-analysis-flat, r=pnkfelix
introduce `-Znll-facts` to dump base-facts for the NLL analysis

r? @pnkfelix
2018-05-05 11:05:23 +00:00
Kornel
1e38eee63b Suggest more helpful formatting string 2018-05-05 11:50:02 +01:00
Guillaume Gomez
d0840fd63b Fix paths search 2018-05-05 12:44:10 +02:00
Niko Matsakis
b36cbcb0c4 add a comment about Locations::All 2018-05-05 06:03:25 -04:00
Niko Matsakis
9788479784 remove #[allow(dead_code)] 2018-05-05 06:03:25 -04:00
Niko Matsakis
eaac10ec0d add -Znll-facts switch that dumps facts for new analysis 2018-05-05 06:03:25 -04:00
Niko Matsakis
74bb9171cc add location table
This will be used in fact generation.
2018-05-05 05:03:56 -04:00
Niko Matsakis
53eb9e582f add Locations::All as a concept
In particular, type annotations given by the user must hold at all
points in the program. This doesn't affect current analysis but
will affect fact generation later.
2018-05-05 05:03:56 -04:00
Niko Matsakis
81905a15c1 use crate visibility modifier 2018-05-05 05:03:56 -04:00
Niko Matsakis
2b4675b1fc add Location::START const 2018-05-05 05:03:56 -04:00
bors
e471c206cf Auto merge of #50418 - nnethercote:cmt, r=eddyb
Avoid many `cmt` allocations.

`cmt` is a ref-counted wrapper around `cmt_` The use of refcounting
keeps `cmt` handling simple, but a lot of `cmt` instances are very
short-lived, and heap-allocating the short-lived ones takes up time.

This patch changes things in the following ways.

- Most of the functions that produced `cmt` instances now produce `cmt_`
  instances. The `Rc::new` calls that occurred within those functions
  now occur at their call sites (but only when necessary, which isn't
  that often).

- Many of the functions that took `cmt` arguments now take `&cmt_`
  arguments. This includes all the methods in the `Delegate` trait.

As a result, the vast majority of the heap allocations are avoided. In
an extreme case, the number of calls to malloc in tuple-stress drops
from 9.9M to 7.9M, a drop of 20%. And the compile times for many runs of
coercions, deep-vector, and tuple-stress drop by 1--2%.
2018-05-05 08:52:28 +00:00
F001
160063aad2 make String::new() const 2018-05-05 16:38:27 +08:00