Commit graph

21441 commits

Author SHA1 Message Date
Jeffrey Seyfried
20a90485c0 Add exmaple/test for quote! hygiene. 2017-06-26 02:06:32 +00:00
Jeffrey Seyfried
7d493bdd2a Add LazyTokenStream. 2017-06-26 02:06:31 +00:00
Jeffrey Seyfried
e42836b208 Implement quote! and other proc_macro API. 2017-06-26 02:06:26 +00:00
Jeffrey Seyfried
d4488b7df9 Simplify hygiene::Mark application, and
remove variant `Token::SubstNt` in favor of `quoted::TokenTree::MetaVar`.
2017-06-26 02:05:45 +00:00
Alex Crichton
d24d408af3 std: Fix implementation of Alloc::alloc_one
This had an accidental `u8 as *mut T` where it was intended to have just a
normal pointer-to-pointer cast.

Closes #42827
2017-06-25 11:35:05 -07:00
bors
fc9ccfdbe0 Auto merge of #42865 - ollie27:rustdoc_assoc_consts, r=GuillaumeGomez
rustdoc: Fix a few issues with associated consts

* Make sure private consts are stripped.
* Don't show a code block for the value if there is none.
* Make sure default values are shown in impls.
* Make sure docs from the trait are used if the impl has no docs.
2017-06-25 17:39:26 +00:00
Esteban Küber
c13a913e5b Don't naively point to return type on type error 2017-06-24 19:28:43 -07:00
Steven Fackler
14c2f99f80 Stabilize Command::envs
Closes #38526
2017-06-24 19:19:26 -07:00
Paul Woolcock
8edc3cae3b Add compile-fail test for the new feature gate 2017-06-24 18:41:05 -04:00
Guillaume Gomez
deb1eb6134 wording improvement 2017-06-24 21:28:08 +02:00
Guillaume Gomez
7b8c6a2d30 Add E0607 2017-06-24 21:27:49 +02:00
Guillaume Gomez
30effc14e4 Add E0606 2017-06-24 21:27:45 +02:00
Guillaume Gomez
0e4b8ffccd Add E0605 2017-06-24 21:25:31 +02:00
Guillaume Gomez
d5977df1c1 Add E0604 2017-06-24 21:25:31 +02:00
Esteban Küber
27d4b314c5 Do not specify return type in suggestion for some Tys
Don't specify a suggested return type for `TyAnon`, `TyFnDef`,
`TyFnPtr`, `TyDynamic`, `TyClosure` and `TyProjection`.
2017-06-24 12:16:20 -07:00
Oliver Middleton
927625912a rustdoc: Don't ICE on use *; 2017-06-24 18:16:39 +01:00
Esteban Küber
ecde91a69d Suggest removal of semicolon (instead of being help) 2017-06-24 10:08:51 -07:00
Stepan Koltsov
45af6ee4fc Move global vars changing tests into run-pass
Should fix race #42795
2017-06-24 18:23:39 +03:00
Stjepan Glavina
12205f1450 Improve sort tests and benchmarks 2017-06-24 17:14:42 +02:00
bors
3cf9f5d787 Auto merge of #42541 - gilescope:patch-1, r=alexcrichton
assert_eq failure message easier to read

By having the left and right strings aligned with one another it helps spot the difference between the two far quicker than if they are on the same line.

E.g.
Before:

```
thread 'tests::test_safe_filename' panicked at 'assertion failed: `(left == right)` left:  `"-aandb--S123.html"` right: `"-aandb-S123.html"`',
```

After:

```
thread 'tests::test_safe_filename' panicked at 'assertion failed: `(left == right)`
left:  `"-aandb--S123.html"`
right: `"-aandb-S123.html"`',
```

When the strings are both on the same line it take a lot longer to spot the difference. It is a small change but the small time savings add up with repetition. This would help Rust be an excellent language to write tests in out of the box.

Closes https://github.com/rust-lang/rust/issues/41615
2017-06-24 12:18:40 +00:00
Paul Woolcock
60dd83ea85 add allow_fail test attribute
This change allows the user to add an `#[allow_fail]` attribute to
tests that will cause the test to compile & run, but if the test fails
it will not cause the entire test run to fail. The test output will
show the failure, but in yellow instead of red, and also indicate that
it was an allowed failure.
2017-06-24 06:42:29 -04:00
Esteban Küber
c023856b38 Detect missing ; on methods with return type ()
- Point out the origin of a type requirement when it is the return type
  of a method
- Point out possibly missing semicolon when the return type is () and
  the implicit return makes sense as a statement
- Suggest changing the return type of methods with default return type
- Don't suggest changing the return type on fn main()
- Don't suggest changing the return type on impl fn
2017-06-24 01:09:27 -07:00
bors
b0081b36b4 Auto merge of #42724 - Mark-Simulacrum:tests, r=alexcrichton
Add tests for a few issues.

Fixes #41998
Fixes #38381
Fixes #37515
Fixes #37510
Fixes #37366
Fixes #37323
Fixes #37051
Fixes #36839
Fixes #35570
Fixes #34373
Fixes #34222

Certainly not all of the E-needstest issues right now, but I started to get bored.
2017-06-24 07:10:10 +00:00
Zack M. Davis
890a76f479 only set "overruled by outer forbid" once for lint groups, by group name
Previously, conflicting forbid/allow attributes for a lint group would
result in a separate "allow(L) overruled by outer forbid(L)" error for
every lint L in the group. This was needlessly and annoyingly verbose;
we prefer to just have one error pointing out the conflicting
attributes.

Resolves #42873.
2017-06-23 22:36:40 -07:00
Esteban Küber
8e11189cbb Move tests to ui 2017-06-23 18:01:38 -07:00
Oliver Middleton
4488f9bc0f rustdoc: Fix a few issues with associated consts
* Make sure private consts are stripped.
* Don't show a code block for the value if there is none.
* Make sure default values are shown in impls.
* Make sure docs from the trait are used if the impl has no docs.
2017-06-23 18:39:27 +01:00
Mark Simulacrum
2346169f99 Add tests for a few issues. 2017-06-23 07:51:01 -06:00
Mark Simulacrum
9037ef2c78 Rollup merge of #42833 - durka:non-constant-used-with-constant, r=Mark-Simulacrum
change span label for E0435

r? @Mark-Simulacrum
2017-06-23 06:02:15 -06:00
kennytm
2c89165814
Modify --explain to handle hidden code (# ...) and indented code blocks. 2017-06-23 15:31:53 +08:00
bors
737962056a Auto merge of #42304 - Mark-Simulacrum:issue-37157, r=nikomatsakis
Print the two types in the span label for transmute errors.

Fixes #37157. I'm not entirely happy with the changes here but overall it's better in my opinion; we certainly avoid the odd language in that issue, which changes to:

```
error[E0512]: transmute called with differently sized types: <C as TypeConstructor<'a>>::T (size can vary because of <C as TypeConstructor>::T) to <C as TypeConstructor<'b>>::T (size can vary because of <C as TypeConstructor>::T)
 --> test.rs:8:5
  |
8 |     ::std::mem::transmute(x)
  |     ^^^^^^^^^^^^^^^^^^^^^ transmuting between <C as TypeConstructor<'a>>::T and <C as TypeConstructor<'b>>::T

error: aborting due to previous error(s)
```
2017-06-23 00:32:40 +00:00
bors
bd62230fbd Auto merge of #42614 - GuillaumeGomez:new-error-codes, r=pnkfelix
New error codes

Part of #42229.

cc @Susurrus @frewsxcv @QuietMisdreavus
2017-06-22 21:46:08 +00:00
Alex Burka
369d4f1883 remove duplicate E0435 test 2017-06-22 19:13:09 +00:00
Alex Burka
0883ce1b43 change span label for E0435 (fix #41871) 2017-06-22 19:10:56 +00:00
bors
ab5bec2553 Auto merge of #42634 - Zoxc:for-desugar2, r=nikomatsakis
Change the for-loop desugar so the `break` does not affect type inference. Fixes #42618

Rewrite the `for` loop desugaring to avoid contaminating the inference results. Under the older desugaring, `for x in vec![] { .. }` would erroneously type-check, even though the type of `vec![]` is unconstrained. (written by @nikomatsakis)
2017-06-22 15:24:58 +00:00
Yorwba
8205c348b4 Note different versions of same crate when absolute paths of different types match. 2017-06-22 22:01:22 +08:00
bors
80271e8edf Auto merge of #42682 - alexcrichton:jobserver, r=michaelwoerister
Integrate jobserver support to parallel codegen

This commit integrates the `jobserver` crate into the compiler. The crate was
previously integrated in to Cargo as part of rust-lang/cargo#4110. The purpose
here is to two-fold:

* Primarily the compiler can cooperate with Cargo on parallelism. When you run
  `cargo build -j4` then this'll make sure that the entire build process between
  Cargo/rustc won't use more than 4 cores, whereas today you'd get 4 rustc
  instances which may all try to spawn lots of threads.

* Secondarily rustc/Cargo can now integrate with a foreign GNU `make` jobserver.
  This means that if you call cargo/rustc from `make` or another
  jobserver-compatible implementation it'll use foreign parallelism settings
  instead of creating new ones locally.

As the number of parallel codegen instances in the compiler continues to grow
over time with the advent of incremental compilation it's expected that this'll
become more of a problem, so this is intended to nip concurrent concerns in the
bud by having all the tools to cooperate!

Note that while rustc has support for itself creating a jobserver it's far more
likely that rustc will always use the jobserver configured by Cargo. Cargo today
will now set a jobserver unconditionally for rustc to use.
2017-06-22 00:32:42 +00:00
bors
6de26f42de Auto merge of #42771 - arielb1:no-inline-unwind, r=nagisa
mark calls in the unwind path as !noinline

The unwind path is always cold, so that should not have bad performance
implications.  This avoids catastrophic exponential inlining, and also
decreases the size of librustc.so by 1.5% (OTOH, the size of `libstd.so`
increased by 0.5% for some reason).

Fixes #41696.

r? @nagisa
2017-06-21 21:29:45 +00:00
Ariel Ben-Yehuda
7769c9a7ec coerce fields to the expected field type
Fully fixes #31260.

This needs a crater run.
2017-06-21 20:28:09 +03:00
bors
622e7e6487 Auto merge of #42802 - frewsxcv:rollup, r=frewsxcv
Rollup of 4 pull requests

- Successful merges: #42397, #42620, #42762, #42766
- Failed merges:
2017-06-21 15:26:55 +00:00
Corey Farwell
d33e2c5181 Rollup merge of #42620 - wesleywiser:compile_error, r=brson
Add compile_error!

Related to #40872
2017-06-21 10:40:15 -04:00
Corey Farwell
292fcc880f Rollup merge of #42397 - sfackler:syncsender-sync, r=alexcrichton
Implement Sync for SyncSender

r? @alexcrichton
2017-06-21 10:40:14 -04:00
Alex Crichton
201f06988f Integrate jobserver support to parallel codegen
This commit integrates the `jobserver` crate into the compiler. The crate was
previously integrated in to Cargo as part of rust-lang/cargo#4110. The purpose
here is to two-fold:

* Primarily the compiler can cooperate with Cargo on parallelism. When you run
  `cargo build -j4` then this'll make sure that the entire build process between
  Cargo/rustc won't use more than 4 cores, whereas today you'd get 4 rustc
  instances which may all try to spawn lots of threads.

* Secondarily rustc/Cargo can now integrate with a foreign GNU `make` jobserver.
  This means that if you call cargo/rustc from `make` or another
  jobserver-compatible implementation it'll use foreign parallelism settings
  instead of creating new ones locally.

As the number of parallel codegen instances in the compiler continues to grow
over time with the advent of incremental compilation it's expected that this'll
become more of a problem, so this is intended to nip concurrent concerns in the
bud by having all the tools to cooperate!

Note that while rustc has support for itself creating a jobserver it's far more
likely that rustc will always use the jobserver configured by Cargo. Cargo today
will now set a jobserver unconditionally for rustc to use.
2017-06-21 07:16:43 -07:00
Ariel Ben-Yehuda
3ac976861d avoid translating roots with predicates that do not hold
Fixes #37725.
2017-06-21 16:16:19 +03:00
bors
39220a9d9f Auto merge of #42751 - arielb1:fast-representable, r=eddyb
Memoize types in `is_representable` to avoid exponential worst-case

I could have made representability a cached query, but that would have
been added complexity for not much benefit - outside of the exponential
worst-case, this pass is fast enough already.

Fixes #42747.

r? @eddyb
2017-06-21 12:28:48 +00:00
bors
03198da2ad Auto merge of #42750 - arielb1:unwind-stack, r=eddyb
Update LLVM to pick StackColoring improvement

Fixes #40883.

r? @eddyb
2017-06-21 10:06:13 +00:00
bors
37a991abc0 Auto merge of #42664 - alexcrichton:moar-crates, r=eddyb
Remove in-tree flate/getopts crates

Remove `src/libflate` in favor of `flate2` on crates.io and `src/libgetopts` in favor of `getopts` on crates.io. The replacements have slightly different APIs and the usage in the compiler has been updated to reflect this.

This uncovered an unfortunate limitation of the compiler today to deal with linking everything correctly, and the workaround can be found documented in `src/librustc/Cargo.toml`.
2017-06-21 06:27:36 +00:00
bors
bb143890a4 Auto merge of #42076 - alex-ozdemir:master, r=nrc
Clearer Error Message for Duplicate Definition

Clearer use of the error message and span labels to communicate duplication definitions/imports.

fixes #42061
2017-06-21 00:06:02 +00:00
Corey Farwell
f9edbcccc5 Rollup merge of #42756 - sanxiyn:name-for-must-use, r=estebank
Show type name for unused_must_use lint

Fix #42688.
2017-06-20 16:28:31 -04:00
Alex Crichton
5c3d0e6de3 Switch to the crates.io getopts crate
This commit deletes the in-tree `getopts` crate in favor of the crates.io-based
`getopts` crate. The main difference here is with a new builder-style API, but
otherwise everything else remains relatively standard.
2017-06-20 12:43:12 -07:00
Ariel Ben-Yehuda
0b93798959 mark calls in the unwind path as !noinline
The unwind path is always cold, so that should not have bad performance
implications.  This avoids catastrophic exponential inlining, and also
decreases the size of librustc.so by 1.5% (OTOH, the size of `libstd.so`
increased by 0.5% for some reason).

Fixes #41696.
2017-06-20 22:02:49 +03:00