Commit Graph

77873 Commits

Author SHA1 Message Date
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
bors
fc6b2c5fef Auto merge of #50423 - hberntsen:armv5te_unknown_linux_musl, r=alexcrichton
Add armv5te-unknown-linux-musl target

This PR adds the armv5te-unknown-linux-musl target. The following steps should let you produce a fully statically linked binary now:
1. Running `./src/ci/docker/run.sh dist-armv5te-linux-musl`
2. Changing the run.sh script to start bash instead of the build process and running the container
3.
   ```sh
   export USER=root
   export PATH=/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin:/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin:$PATH
   ```
4. Configuring Cargo
   ```yaml
   [target.armv5te-unknown-linux-musl]
   linker = "arm-linux-gnueabi-gcc"
   ```
5. Building a project
   ```sh
   cargo new --bin hello
   cd hello
   cargo build --target=armv5te-unknown-linux-musl --release
   ```
2018-05-05 06:03:47 +00:00
John Kåre Alsaker
c338bd539e Fix libtest-json test 2018-05-05 07:17:45 +02:00
Clar Charr
fc6d6c98de Fixed typos 2018-05-05 00:18:10 -04:00
bors
5d6c757268 Auto merge of #50419 - sinkuu:rustdoc_nested_impl_trait, r=QuietMisdreavus
rustdoc: Resolve nested `impl Trait`s

Fixes #50358.

Populates `cx.impl_trait_bounds` incrementally while `clean`ing generic params, so that a synthetic type-parameter can refer to previous ones.

cc #50366
2018-05-05 03:36:09 +00:00
bors
1d168261a1 Auto merge of #50084 - killercup:compiletest-rustfix, r=Manishearth
First step towards rustfix compiletest mode

This is the first small step towards testing auto-fixable compiler
suggestions using compiletest. Currently, it only checks if next to a
UI test there also happens to a `*.rs.fixed` file, and then uses rustfix
(added as external crate) on the original file, and asserts that it
produces the fixed version.

To show that this works, I've included one such test. I picked this test
case at random (and because it was simple) -- It is not relevant to the
2018 edition. Indeed, in the near future, we want to be able to restrict
rustfix to edition-lints, so this test cast might go away soon.

In case you still think this is somewhat feature-complete, here's a
quick list of things currently missing that I want to add before telling
people they can use this:

- [x] Make this an actual compiletest mode, with `test [fix] …` output
  and everything
- [x] Assert that fixed files still compile
- [x] Assert that fixed files produce no (or a known set of) diagnostics
  output
- [x] Update `update-references.sh` to support rustfix
- [x] Use a published version of rustfix (i.e.: publish a new version
  rustfix that exposes a useful API for this)
2018-05-04 23:15:00 +00:00
Alex Crichton
6f2d023028 Fold rustfix tests back into the UI test suite 2018-05-04 15:01:28 -07:00
Pascal Hertleif
a563027cb8 Use published rustfix 0.2 version 2018-05-04 15:01:28 -07:00
Alex Crichton
fa9e55faeb test: Make a dedicated testsuite for rustfix
This commit adds a dedicated mode to compiletest for running rustfix tests,
adding a new `src/test/rustfix` directory which will execute all tests as a
"rustfix" test, namely requiring that a `*.fixed` is next to the main file which
is the result of the rustfix project's application of fixes.

The `rustfix` crate is pulled in to actually perform the fixing, and the rustfix
compiletest mode will assert a few properties about the fixing:

* The expected fixed output must be the same as rustc's output suggestions
  applied to the original code.
* The fixed code must compile successfully
* The fixed code must have no further diagnostics emitted about it
2018-05-04 15:01:28 -07:00
Pascal Hertleif
b264504403 tidy 2018-05-04 15:01:28 -07:00
Pascal Hertleif
9680f3b381 Skip NLL compiletest in rustfix mode for now 2018-05-04 15:01:28 -07:00
Pascal Hertleif
c02aedfcaf Use rustfix' suggestion fixing API
Uses branch from <https://github.com/rust-lang-nursery/rustfix/pull/63>
until we publish a new release.
2018-05-04 15:01:28 -07:00
Pascal Hertleif
fd6aa149bc First step towards rustfix compiletest mode
This is the first small step towards testing auto-fixable compiler
suggestions using compiletest. Currently, it only checks if next to a
UI test there also happens to a `*.rs.fixed` file, and then uses rustfix
(added as external crate) on the original file, and asserts that it
produces the fixed version.

To show that this works, I've included one such test. I picked this test
case at random (and because it was simple) -- It is not relevant to the
2018 edition. Indeed, in the near future, we want to be able to restrict
rustfix to edition-lints, so this test cast might go away soon.

In case you still think this is somewhat feature-complete, here's a
quick list of things currently missing that I want to add before telling
people they can use this:

- [ ] Make this an actual compiletest mode, with `test [fix] …` output
  and everything
- [ ] Assert that fixed files still compile
- [ ] Assert that fixed files produce no (or a known set of) diagnostics
  output
- [ ] Update `update-references.sh` to support rustfix
- [ ] Use a published version of rustfix (i.e.: publish a new version
  rustfix that exposes a useful API for this)
2018-05-04 15:01:28 -07:00
Manish Goregaokar
01791dee8a Add test 2018-05-04 14:52:53 -07:00
Manish Goregaokar
ae4b38ea66 Rename idiom lints to migration lints 2018-05-04 14:50:39 -07:00
Manish Goregaokar
baa7b32d4b Mark lints with applicability 2018-05-04 14:31:26 -07:00
Alex Crichton
3e0ed2fc05 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-04 14:12:57 -07:00
Manish Goregaokar
9d34e8dd21 Make extern_absolute_paths only work on the new edition 2018-05-04 13:51:12 -07:00
Manish Goregaokar
dafbdeb384 Add idiom lint for bare extern crate 2018-05-04 11:24:36 -07:00
Manish Goregaokar
b1951f450a Make --edition imply the preview flag 2018-05-04 11:18:33 -07:00
Manish Goregaokar
10f66c7172 Rename breakage lints 2018-05-04 11:01:08 -07:00
Manish Goregaokar
7485903b6b Add catch and proc macros to the edition (fixes #50443) 2018-05-04 10:59:33 -07:00
bors
91db9dcf37 Auto merge of #49870 - pnkfelix:issue-27282-immut-borrow-all-pat-ids-in-guards, r=nikomatsakis
Immutably and implicitly borrow all pattern ids for their guards (NLL only)

This is an important piece of rust-lang/rust#27282.

It applies only to NLL mode. It is a change to MIR codegen that is currently toggled on only when NLL is turned on. It thus affect MIR-borrowck but not the earlier static analyses (such as the type checker).

This change makes it so that any pattern bindings of type T for a match arm will map to a `&T` within the context of the guard expression for that arm, but will continue to map to a `T` in the context of the arm body.

To avoid surfacing this type distinction in the user source code (which would be a severe change to the language and would also require far more revision to the compiler internals), any occurrence of such an identifier in the guard expression will automatically get a deref op applied to it.

So an input like:
```rust
let place = (1, Foo::new());
match place {
  (1, foo) if inspect(foo) => feed(foo),
  ...
}
```
will be treated as if it were really something like:
 ```rust
let place = (1, Foo::new());
match place {
    (1, Foo { .. }) if { let tmp1 = &place.1; inspect(*tmp1) }
                    => { let tmp2 = place.1; feed(tmp2) },
    ...
}
```

And an input like:
```rust
let place = (2, Foo::new());
match place {
    (2, ref mut foo) if inspect(foo) => feed(foo),
    ...
}
```
will be treated as if it were really something like:

```rust
let place = (2, Foo::new());
match place {
    (2, Foo { .. }) if { let tmp1 = & &mut place.1; inspect(*tmp1) }
                    => { let tmp2 = &mut place.1; feed(tmp2) },
    ...
}
```

In short, any pattern binding will always look like *some* kind of `&T` within the guard at least in terms of how the MIR-borrowck views it, and this will ensure that guard expressions cannot mutate their the match inputs via such bindings. (It also ensures that guard expressions can at most *copy* values from such bindings; non-Copy things cannot be moved via these pattern bindings in guard expressions, since one cannot move out of a `&T`.)
2018-05-04 15:00:13 +00:00
bors
0bfe3072cb Auto merge of #50435 - cuviper:rm-lookup_host, r=sfackler
Remove the deprecated std::net::{lookup_host,LookupHost}

These are unstable, and were deprecated by #47510, since Rust 1.25.  The
internal `sys` implementations are still kept to support the call in the
common `resolve_socket_addr`.
2018-05-04 12:12:05 +00:00
Felix S. Klock II
930e76e2af Update mir-opt test to reflect change to MIR code-generation. 2018-05-04 13:17:13 +02:00
Michael Woerister
d0253ad724 bootstrap: Fix LLVM bin path setup for Windows. 2018-05-04 03:20:29 -07:00