Commit Graph

58664 Commits

Author SHA1 Message Date
Mark-Simulacrum
7bbebb1f54 Change implementation of syntax::util::SmallVector to use data_structures::SmallVec. 2016-11-11 07:38:48 -07:00
bors
ba2e892249 Auto merge of #37447 - estebank:non-duplicate-definition-error, r=nrc
Show one error for duplicated type definitions

For the following code:

``` rustc
struct Bar;
struct Bar;

fn main () {
}
```

show

``` nocode
error[E0428]: a type named `Bar` has already been defined in this module
  --> src/test/compile-fail/E0428.rs:12:1
   |
11 | struct Bar;
   | ----------- previous definition of `Bar` here
12 | struct Bar;
   | ^^^^^^^^^^^

error: aborting due to previous error
```

instead of

``` nocode
error[E0428]: a type named `Bar` has already been defined in this module
  --> src/test/compile-fail/E0428.rs:12:1
   |
11 | struct Bar;
   | ----------- previous definition of `Bar` here
12 | struct Bar;
   | ^^^^^^^^^^^

error[E0428]: a value named `Bar` has already been defined in this module
  --> src/test/compile-fail/E0428.rs:12:1
   |
11 | struct Bar;
   | ----------- previous definition of `Bar` here
12 | struct Bar;
   | ^^^^^^^^^^^

error: aborting due to 2 previous errors
```

Fixes #35767.
2016-11-11 05:55:04 -08:00
Oliver 'ker' Schneider
323c20c8a4 [breaking-change] change the box_free item to accept pointers to unsized types 2016-11-11 13:36:10 +01:00
Ulrik Sverdrup
5058e58676 vec: Write the .extend() specialization in cleaner style
As far as possible, use regular `default fn` specialization in favour of
ad-hoc conditionals.
2016-11-11 12:54:10 +01:00
bors
4da129d984 Auto merge of #37246 - goffrie:no-loop, r=jseyfried
Don't spin expanding stmt macros.

If we can't make progress when parsing a macro expansion as a statement then we should just bail.

This alleviates the symptoms shown in e.g. #37113 and #37234 but it doesn't fix the problem that parsing invalid enum bodies (and others) leaves the parser in a crappy state.

I'm not sold on this strategy (checking `tokens_consumed`), so if anyone has a better idea, I'm all ears!
2016-11-11 02:51:01 -08:00
bors
280362a02d Auto merge of #36615 - sinkuu:e0243_0244, r=nrc
Make E0243/E0244 message consistent with E0107

E0243/E0233 prints `expected {}, found {}` on the span note, while E0107 prints it on the first line. This is confusing when both error occur simultaneously.

This PR makes E0243/E0233 print `expected {}, found {}` on the first line.

Code:

``` rust
struct Foo<'a, 'b> {
    s: &'a str,
    t: &'b str,
}

type Bar<T, U> = Foo<T, U>;
```

rustc output (before):

```
error[E0107]: wrong number of lifetime parameters: expected 2, found 0
 --> test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected 2 lifetime parameters

error[E0244]: wrong number of type arguments
 --> test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected no type arguments, found 2
```

rustc output (after):

```
error[E0107]: wrong number of lifetime parameters: expected 2, found 0
 --> /tmp/test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected 2 lifetime parameters

error[E0244]: wrong number of type arguments: expected 0, found 2
 --> /tmp/test.rs:6:18
  |
6 | type Bar<T, U> = Foo<T, U>;
  |                  ^^^^^^^^^ expected no type arguments
```
2016-11-10 23:44:44 -08:00
Nicholas Nethercote
11c1126688 Avoid unnecessary mk_ty calls in Ty::super_fold_with.
This speeds up compilation of several rustc-benchmarks by 1--2% and the
workload in #36799 by 5%.
2016-11-11 15:56:58 +11:00
bors
3ac9ec7dfd Auto merge of #37691 - alexcrichton:update-compiler-rt, r=brson
std: Update compiler-rt for more ABI fixes

This update of compiler-rt includes rust-lang/compiler-rt#26 which provides a
targeted fix to the powisf2 intrinsics to keep #37559 fixed but also address
the new issue of #37630. I've also [written up my thoughts][1] on why it appears
that this is the correct fix for now (hoepfully at least).

Closes #37630

[1]: https://github.com/rust-lang/compiler-rt/pull/26#issuecomment-259751998
2016-11-10 20:38:40 -08:00
Daniel Keep
455723c638 Add foreign formatting directive detection.
This teaches `format_args!` how to interpret format printf- and
shell-style format directives.  This is used in cases where there are
unused formatting arguments, and the reason for that *might* be because
the programmer is trying to use the wrong kind of formatting string.

This was prompted by an issue encountered by simulacrum on the #rust IRC
channel.  In short: although `println!` told them that they weren't using
all of the conversion arguments, the problem was in using printf-syle
directives rather than ones `println!` would undertand.

Where possible, `format_args!` will tell the programmer what they should
use instead.  For example, it will suggest replacing `%05d` with `{:0>5}`,
or `%2$.*3$s` with `{1:.3$}`.  Even if it cannot suggest a replacement,
it will explicitly note that Rust does not support that style of directive,
and direct the user to the `std::fmt` documentation.
2016-11-11 15:23:15 +11:00
Trotter Cashion
2a832a03c5 Ignore tests failing due to lack of fn main
While the commit message on this one sounds terrible, it's really not so
bad. The issue is that our test runner _expects_ a `fn main() {}` in
code blocks that it'll test, but this code really shouldn't have them.
If it did, then clicking the "play" link in the docs would result in
play.rust-lang.org not treating this code as a test example to be run.
2016-11-10 19:08:45 -08:00
Mark-Simulacrum
c524c50edf compiletest: detect nodejs binary, allow override
Allow passing a custom nodejs directory in configure.
2016-11-10 18:37:41 -07:00
bors
de46bea666 Auto merge of #37104 - luqmana:fixmes, r=eddyb
Clean up some FIXMEs.

Remove some assorted FIXMEs in the codebase.
2016-11-10 17:36:47 -08:00
Esteban Küber
87b6d38654 Don't hint to add lifetime on trait impl
Don't provide hint to add lifetime on impl items that implement a trait.

```rust
use std::str::FromStr;

pub struct Foo<'a> {
    field: &'a str,
}

impl<'a> FromStr for Foo<'a> {
    type Err = ();
    fn from_str(path: &str) -> Result<Self, ()> {
        Ok(Foo { field: path })
    }
}
```

would give the following hint:

```nocode
help: consider using an explicit lifetime parameter as shown: fn from_str(path: &'a str) -> Result<Self, ()>
  --> <anon>:9:5
   |
9  |     fn from_str(path: &str) -> Result<Self, ()> {
   |     ^
```

which is never correct, since then there will be a lifetime mismatch
between the impl and the trait.

Remove this hint for impl items that implement a trait.
2016-11-10 16:22:03 -08:00
Alex Crichton
30502b8205 std: Derive Default for Duration.
Discussed in #37546 the libs team reached the conclusion that a default zero
duration seems like a reasonable implementation of the `Default` trait.

Closes #37546
2016-11-10 16:21:51 -08:00
bors
1473007618 Auto merge of #37186 - jonas-schievink:patch-1, r=brson
proc_macro_plugin: Wrap nonexistent filename in <>

I'm not sure how big of an issue this can become in practice, but `FileMap`s made from something that's not a file are supposed to wrap the file name in `<>`.

For an example fix, see kevinmehall/rust-peg@332fd4dbae. There, it caused cargo to always recompile a crate using rust-peg, even when nothing was changed, because cargo sees that the dummy file doesn't exist.
2016-11-10 14:28:03 -08:00
Guillaume Gomez
fdf482c398 Add missing urls for marker's traits 2016-11-10 23:13:37 +01:00
Guillaume Gomez
c67ff64b6f Add missing urls for FusedIterator and TrustedLen traits 2016-11-10 23:03:15 +01:00
Arthur Silva
dcd80b80ae Remove one bounds check from BufReader
Otherwise the optimizer can't be sure that pos <= cap. Added a paranoid debug_assert to ensure correctness instead.
2016-11-10 22:26:50 +01:00
Luqman Aden
c2f1e5d164 Get rid of superfluous HashMap in LocalCrateContext. We only need the str slice type. 2016-11-10 16:15:06 -05:00
Luqman Aden
34f8e62c6b Remove outdated FIXME: #10604 was fixed by #11717. 2016-11-10 16:12:43 -05:00
Luqman Aden
6076fef6bd ExprAssignable does not need the original Expr so let's just remove outdated FIXME. 2016-11-10 16:12:43 -05:00
Luqman Aden
c96e3524e3 Don't use self type for cat_index on overloaded indexing. Fixes #20649. 2016-11-10 16:12:42 -05:00
Michael Woerister
f2b8d7bb31 ICH: Add test case for if- and if-let-expressions. 2016-11-10 15:06:51 -05:00
bors
3dced6f71e Auto merge of #37645 - jseyfried:fix_crate_var_in_custom_derives, r=nrc
Fix regression involving custom derives on items with `$crate`

The regression was introduced in #37213.

I believe we cannot make the improvements from #37213 work with the current custom derive setup (c.f. https://github.com/rust-lang/rust/issues/37637#issuecomment-258959145) -- we'll have to wait for `TokenStream`'s API to improve.

Fixes #37637.
r? @nrc
2016-11-10 11:25:17 -08:00
Michael Woerister
669102f0f0 ICH: Add test case for call expressions. 2016-11-10 13:26:19 -05:00
Nicolas B. Pierron
4ce4900218 Balance the debug output of Lvalue Subslice 2016-11-10 18:19:05 +00:00
Alex Crichton
2743128876 std: Update compiler-rt for more ABI fixes
This update of compiler-rt includes rust-lang/compiler-rt#26 which provides a
targeted fix to the powisf2 intrinsics to keep #37559 fixed but also address
the new issue of #37630. I've also [written up my thoughts][1] on why it appears
that this is the correct fix for now (hoepfully at least).

Closes #37630

[1]: https://github.com/rust-lang/compiler-rt/pull/26#issuecomment-259751998
2016-11-10 09:23:29 -08:00
Tim Neumann
0254f12224 rustbuild: support RelWithDebInfo for llvm 2016-11-10 17:30:06 +01:00
bors
bc1cc1db6d Auto merge of #37687 - nox:patch-1, r=eddyb
Work around a borrow surviving too long (fixes #37686)
2016-11-10 08:18:21 -08:00
Trotter Cashion
4cf764470a Remove extraneous word 2016-11-10 07:55:20 -08:00
Trotter Cashion
dd9280920f Change project path for consistency
I had used `/tmp/adder` for my previous commits. Flipped over to
`/home/you/projects/adder` for consistency with other parts of testing.md
2016-11-10 07:52:51 -08:00
Trotter Cashion
35903bb9aa Remove mod tests from earlier sections
The narrative flows better if we follow what @steveklabnik is doing in
rust-lang/book#288. Therefore, I completely copied it.
2016-11-10 07:48:01 -08:00
Trotter Cashion
d9c60ca06c Instruct play.rust-lang.org to treat code as tests
Without these changes, play.rust-lang.org (as of today) would wrap
our examples in `fn main() {}`. This prevents the user from being able
to easily run the tests.
2016-11-10 07:30:20 -08:00
Eduard Burtescu
3f9eba1c7c rustc: clean up lookup_item_type and remove TypeScheme. 2016-11-10 16:49:53 +02:00
Anthony Ramine
84239dfc4a Work around a borrow surviving too long (fixes #37686) 2016-11-10 14:43:46 +01:00
bors
187d989602 Auto merge of #37542 - jseyfried:custom_derive_reexports, r=nrc
Support `#[macro_reexport]`ing custom derives

This is gated behind `#![feature(macro_reexport)]` and `#![feature(proc_macro)]`.
r? @nrc
2016-11-10 05:10:04 -08:00
Jeffrey Seyfried
67eeb0a720 Add regression test. 2016-11-10 11:21:23 +00:00
Jeffrey Seyfried
f35eff2c57 Test #[macro_reexport]ing custom derives. 2016-11-10 11:19:38 +00:00
Jeffrey Seyfried
0a998b86e9 Support #[macro_reexport]ing custom derives. 2016-11-10 11:19:34 +00:00
Jeffrey Seyfried
11195676a0 Elimite $crate before invokng custom derives. 2016-11-10 10:23:35 +00:00
Jeffrey Seyfried
ad53452398 Merge branch 'refactor_macro_reexports' into custom_derive_reexports 2016-11-10 10:08:00 +00:00
bors
ab03f85522 Auto merge of #37463 - jseyfried:refactor_macro_reexports, r=nrc
macros: improve reexports

This PR
- avoids building multiple module graphs for a crate that is referenced by multiple `extern crate` items,
- registers `#[no_link] extern crate`s to avoid loading the same crate metadata twice,
- stability checks `#[no_link] extern crate`s,
  - [breaking-chage]: `#[no_link] #[macro_use] extern crate syntax;` is allowed on stable today
- fixes `$crate` in `#[macro_reexport]`ed macros,
  - [breaking-change] for `#[feature(macro_reexport)]` (technically)
- allows selective macro importing (i.e. `#[macro_use(foo, bar)]`) from custom derive crates, and
- refactors the crate metadata to support re-exported macros in arbitrary modules (not yet needed).

r? @nrc
2016-11-10 02:05:45 -08:00
Jeffrey Seyfried
a0a9f8ca1b Fix fallout in librustdoc. 2016-11-10 10:04:43 +00:00
Jeffrey Seyfried
872943c317 Improve macro reexports. 2016-11-10 10:04:24 +00:00
Juan Gomez
365ea800bd Set max_atomic_width to 0 because there's no atomic instructions on ARMv5 2016-11-10 10:53:44 +01:00
Jeffrey Seyfried
85f74c0eea Add variants Def::Macro and Namespace::MacroNS. 2016-11-10 09:21:44 +00:00
Jeffrey Seyfried
dd0781ea25 Register and stability check #[no_link] crates. 2016-11-10 09:21:29 +00:00
Jeffrey Seyfried
a1d45d94b0 Refactor explicitly_linked: bool -> dep_kind: DepKind. 2016-11-10 09:21:04 +00:00
Jeffrey Seyfried
c102d7fb68 Clean up CrateSource. 2016-11-10 09:20:59 +00:00
Jeffrey Seyfried
624a9b7311 Avoid building multiple reduced graphs for a crate
that is referenced by multiple `extern crate` items.
2016-11-10 09:20:55 +00:00