Commit graph

60596 commits

Author SHA1 Message Date
bors b0c52c587f Auto merge of #38909 - clarcharr:char_struct_display, r=alexcrichton
Implement Display for char Escape*, To*case.

See: rust-lang/rfcs#1848.

A good example of where this is useful would be in the example `print!("{}", 'ß'.to_uppercase())`.

Not sure if this requires a formal RFC, but I decided to write the code for it anyway regardless.
2017-01-13 07:24:53 +00:00
Corey Farwell 58a470e344 Minor improvements to docs in std::env structures/functions.
* Call functions "functions" instead of "methods".
* Link structures to their constructor functions
* Add other misc. documentation links
2017-01-12 23:10:38 -05:00
Behnam Esfahbod 6022aeb9ab [libcollections] [doc] Fix typo in documentation 2017-01-12 19:23:35 -08:00
bors 927c55d86b Auto merge of #38748 - alexcrichton:upload, r=brson
travis: Start uploading artifacts on commits

This commit starts adding the infrastructure for uploading release artifacts
from AppVeyor/Travis on each commit. The idea is that eventually we'll upload a
full release to AppVeyor/Travis in accordance with plans [outlined earlier].

Right now this configures Travis/Appveyor to upload all tarballs in the `dist`
directory, and various images are updated to actually produce tarballs in these
directories. These are nowhere near ready to be actual release artifacts, but
this should allow us to play around with it and test it out. Once this commit
lands we should start seeing artifacts uploaded on each commit.

[outlined earlier]: https://internals.rust-lang.org/t/rust-ci-release-infrastructure-changes/4489
2017-01-13 02:56:20 +00:00
Alex Crichton 2c5ae52994 rustbuild: Actually don't build stage0 target rustc
This was attempted in #38853 but erroneously forgot one more case of where the
compiler was compiled. This commit fixes that up and adds a test to ensure this
doesn't sneak back in.
2017-01-12 17:27:36 -08:00
Stjepan Glavina d5c3becf00 Change to_owned to to_string in docs
We should teach conversion from `str` to `String` using `to_string`
rather than the legacy `to_owned`.
2017-01-13 01:57:48 +01:00
bors 1a2ed98d34 Auto merge of #38675 - infinity0:more-jemalloc-fixes, r=alexcrichton
More jemalloc fixes

- Disable jemalloc on s390x as well (closes #38596)
- Disable jemalloc tests on platforms where it is disabled (closes #38612)
2017-01-13 00:56:45 +00:00
Alex Crichton 318767266f travis: Start uploading artifacts on commits
This commit starts adding the infrastructure for uploading release artifacts
from AppVeyor/Travis on each commit. The idea is that eventually we'll upload a
full release to AppVeyor/Travis in accordance with plans [outlined earlier].

Right now this configures Travis/Appveyor to upload all tarballs in the `dist`
directory, and various images are updated to actually produce tarballs in these
directories. These are nowhere near ready to be actual release artifacts, but
this should allow us to play around with it and test it out. Once this commit
lands we should start seeing artifacts uploaded on each commit.

[outlined earlier]: https://internals.rust-lang.org/t/rust-ci-release-infrastructure-changes/4489
2017-01-12 15:29:04 -08:00
Alex Crichton 6ae6160e42 travis: Attempt to debug OSX linker segfaults
This commit attempts to debug the segfaults that we've been seeing on OSX on
Travis. I have no idea what's going on here mostly, but let's try to look at
core dumps and get backtraces to see what's going on. This commit itself is
mostly a complete shot in the dark, I'm not sure if this even works...

cc #38878
2017-01-12 14:59:57 -08:00
est31 c6f99b4aea Also mark the struct_field_attributes regression test
Rebase on top of PR 38814 made required this.
2017-01-12 23:55:32 +01:00
Esteban Küber f595ea2584 E0034: provide disambiguated syntax for candidates
For a given file

```rust
trait A { fn foo(&self) {} }
trait B : A { fn foo(&self) {} }

fn bar<T: B>(a: &T) {
  a.foo()
}
```

provide the following output

```
error[E0034]: multiple applicable items in scope
 --> file.rs:6:5
  |
6 |   a.foo(1)
  |     ^^^ multiple `foo` found
  |
note: candidate #1 is defined in the trait `A`
 --> file.rs:2:11
  |
2 | trait A { fn foo(&self, a: usize) {} }
  |           ^^^^^^^^^^^^^^^^^^^^^^^^^^
help: to use it here write `A::foo(&a, 1)` instead
 --> file.rs:6:5
  |
6 |   a.foo(1)
  |     ^^^
note: candidate #2 is defined in the trait `B`
 --> file.rs:3:15
  |
3 | trait B : A { fn foo(&self, a: usize) {} }
  |               ^^^^^^^^^^^^^^^^^^^^^^^^^^
help: to use it here write `B::foo(&a, 1)` instead
 --> file.rs:6:5
  |
6 |   a.foo(1)
  |     ^^^
```
2017-01-12 14:54:05 -08:00
est31 bdee52e94d Add docs 2017-01-12 23:53:02 +01:00
est31 6a29fab274 Mark even more tests as gate tests
Now, no feature outside of the whitelist is
without a test marked as its gate test.
2017-01-12 23:53:02 +01:00
est31 404572921d Use a whitelist and print nice hints 2017-01-12 23:53:02 +01:00
est31 3f6964e22d Automatically treat test files "feature-gate-$f.rs" as gate tests for feature $f 2017-01-12 23:53:02 +01:00
est31 6795ddf342 Don't require gate tests for removed features 2017-01-12 23:53:02 +01:00
est31 0bcd3b2e79 Add gate-test- to some already existing tests 2017-01-12 23:53:02 +01:00
est31 a13cecacb4 Require compile-fail tests for new lang features
Its non trivial to test lang feature gates, and people
forget to add such tests. So we extend the features lint
of the tidy tool to ensure that all new lang features
contain a new compile-fail test.

Of course, one could drop this requirement and just
grep all tests in run-pass for #![feature(abc)] and
then run this test again, removing the mention,
requiring that it fails.

But this only tests for the existence of a compilation
failure. Manual tests ensure that also the correct lines
spawn the error, and also test the actual error message.

For library features, it makes no sense to require such
a test, as here code is used that is generic for all
library features.
2017-01-12 23:53:02 +01:00
est31 e8b6d3cc9e Use only one feature struct, and use hash maps in both occasions 2017-01-12 23:53:02 +01:00
bors dd8e68d0da Auto merge of #38650 - infinity0:master, r=alexcrichton
Detect mips CPUs in ./configure

This mirrors existing logic already in src/bootstrap/bootstrap.py
2017-01-12 22:52:32 +00:00
Michael Woerister 482fa0f932 incr.comp.: Add some caching to Predecessors construction. 2017-01-12 17:06:42 -05:00
Michael Woerister cde366d329 Add some more info to -Zincremental-info 2017-01-12 17:03:32 -05:00
Niko Matsakis 8848c38758 only consider value items when searching for methods, not types 2017-01-12 16:05:44 -05:00
bors e357178146 Auto merge of #38814 - Ralith:cfg-fields, r=jseyfried
syntax: enable attributes and cfg on struct fields

This enables conditional compilation of field initializers in a struct literal, simplifying construction of structs whose fields are themselves conditionally present. For example, the intializer for the constant in the following becomes legal, and has the intuitive effect:

```rust
struct Foo {
    #[cfg(unix)]
    bar: (),
}

const FOO: Foo = Foo {
    #[cfg(unix)]
    bar: (),
};
```

It's not clear to me whether this calls for the full RFC process, but the implementation was simple enough that I figured I'd begin the conversation with code.
2017-01-12 20:44:02 +00:00
Michael Woerister 71274ac9ad Mark some BitVector methods with #[inline] 2017-01-12 15:13:02 -05:00
Ximin Luo cadebc7571 Disable jemalloc tests on platforms where it is disabled (closes #38612)
See also #37392
2017-01-12 21:10:31 +01:00
Ximin Luo 246e7492af Add mips architectures to conditional-compile test 2017-01-12 19:33:45 +01:00
Ximin Luo 5740f94fed Detect mips CPUs in ./configure
This mirrors existing logic already in src/bootstrap/bootstrap.py
2017-01-12 19:33:45 +01:00
Ximin Luo 417953f238 Disable jemalloc on s390x as well (closes #38596)
See also #37320 and #37392
2017-01-12 19:33:40 +01:00
bors 27b9e6d450 Auto merge of #38569 - chris-morgan:rustdoc-highlight-kw-2, r=steveklabnik
Fix rustdoc highlighting of `&` and `*`

Whitespace tokens were included, so the span check used with `&` was incorrect, and it was never highlighted as kw-2 (RefKeyword).

The `*` in `*foo` and `*const T` should also be highlighted kw-2, so I added them. Note that this *will* cause mishighlighting of code like `1*2`, but that should have been written `1 * 2`. Same deal with `1&2`.
2017-01-12 18:32:28 +00:00
bors ac5046cf67 Auto merge of #38779 - Craig-Macomber:bench, r=alexcrichton
Do not run outer setup part of benchmarks multiple times to fix issue 20142

Fix #20142

This is my first real rust code, so I expect the quality is quite bad. Please let me know in which ways it is horrible and I'll fix it.

Previously the whole benchmark function was rerun many times, but with this change, only the callback passed to iter is rerun. This improves performances by saving benchmark startup time. The setup used to be called a minimum of 101 times, and now only runs once.

I wasn't sure exactly what should be done for the case where iter is never called, so I left a FIXME for that: currently it does not error, and I added tests to cover that.

I have left the algorithm and statistics unchanged: I don't like how the minimum number of runs is 301 (that's bad for very slow benchmarks) but I consider such changes out of scope for this fix.
2017-01-12 14:42:02 +00:00
Guillaume Gomez 6f58b7f0ab Fix linker failure 2017-01-12 14:45:25 +01:00
bors 139d7412cd Auto merge of #38654 - alexcrichton:rustbuild-destdir, r=brson
rustbuild: Implement DESTDIR support

This commit primarily starts supporting the `DESTDIR` environment variable like
the old build system. Along the way this brings `config.toml` up to date with
support in `config.mk` with install options supported.

Closes #38441
2017-01-12 08:31:50 +00:00
Vadim Petrochenkov 2092682191 resolve: Do not use "resolve"/"resolution" in error messages 2017-01-12 10:08:27 +03:00
Benjamin Saunders 7972c1905b syntax: struct field attributes and cfg 2017-01-11 21:33:17 -08:00
bors 408c2f7827 Auto merge of #37926 - bluss:from-utf8-small-simplification, r=sfackler
UTF-8 validation: Compute block end upfront

Simplify the conditional used for ensuring that the whole word loop is
only used if there are at least two whole words left to read.

This makes the function slightly smaller and simpler, a 0-5% reduction
in runtime for various test cases.
2017-01-12 05:14:50 +00:00
bors 2782e8f8fc Auto merge of #38867 - alexcrichton:ignore-test-on-windows, r=brson
std: Ignore close_read_wakes_up on Windows

It looks like in practice at least this test will not pass on Windows.
Empirically it is prone to blocking forever, presumably because a call to
`shutdown` doesn't actually wake up other threads on Windows.

We don't document this as a guarantee for `shutdown`, nor do we internally rely
on it. This test originated in a time long since passed when it was leveraged
for canceling I/O, but nowadays there's nothing fancy happening in the standard
library so it's not really a productive test anyway, hence just ignoring it on
Windows.

Closes #31657
2017-01-12 03:13:48 +00:00
bors 1ca100d042 Auto merge of #38605 - estebank:fix-38371, r=nikomatsakis
Suggest solutions for `fn foo(&foo: Foo)`

For a given file:

```rust
struct Foo {}

fn foo(&foo: Foo) {}
```

suggest:

```
error[E0308]: mismatched types
 --> file.rs:3:8
  |
3 | fn foo(&foo: Foo) {}
  |        ^^^^ expected struct `Foo`, found reference
  |
  = note: expected type `Foo`
  = note:    found type `&_`
  = help: did you mean `foo: &Foo`?
```

Fix #38371.
2017-01-12 01:01:06 +00:00
Federico Mena Quintero ff5ba731a0 Document the optional extra arguments to assert_eq!() / assert_ne!()
And clarify that those arguments in assert!() are in fact formattable.
2017-01-11 18:10:26 -06:00
Guillaume Gomez 28d1ac3191 Add missing links and examples for path modules and structs 2017-01-11 23:26:27 +01:00
bors b27c709560 Auto merge of #38313 - jseyfried:self_imports, r=nrc
resolve: clean up the semantics of `self` in an import list

Change `self` in an import list `use foo::bar::{self, ...};` to import `bar` only in the type namespace. Today, `bar` is imported in every namespace in which `foo::bar` is defined.

This is a [breaking-change], see https://github.com/rust-lang/rust/issues/38293#issue-194817974 for examples of code that would break.

Fixes #38293.
r? @nrc
2017-01-11 20:12:26 +00:00
Clar Charr 3a79f2e2f1 Implement Display for char Escape*, To*case. 2017-01-11 12:39:56 -05:00
Simonas Kazlauskas e97f104da6 Fix two const-eval issues related to i128 negation
First issue here was the fact that we’d only allow negating integers in i64 range in case the
integer was not infered yes. While this is not the direct cause of the issue, its still good to fix
it.

The real issue here is the code handling specifically the `min_value` literals. While I128_OVERFLOW
has the expected value (0x8000_..._0000), match using this value as a pattern is handled
incorrectly by the stage1 compiler (it seems to be handled correctly, by the stage2 compiler). So
what we do here is extract this pattern into an explicit `==` until the next snapshot.

Fixes #38987
2017-01-11 19:38:44 +02:00
Ben Wiederhake 09df83b247 Fix some typos in Nomicon 2017-01-11 18:07:08 +01:00
Vadim Petrochenkov bf02534750 Fix docs for min/max algorithms 2017-01-11 19:02:30 +03:00
bors 513d942a7e Auto merge of #38989 - arielb1:constant-mir-overflow2, r=eddyb
fix function arguments in constant promotion

we can't create the target block until *after* we promote the arguments - otherwise the arguments will be promoted into the target block. oops.

Fixes #38985.

This is a regression introduced in the beta-nominated #38833, so beta-nominating this one too (sorry @brson).

r? @eddyb
2017-01-11 15:45:28 +00:00
bors 52c03d1d61 Auto merge of #38984 - alexcrichton:less-debuginfo, r=brson
rustbuild: Don't enable debuginfo in rustc

In #37280 we enabled line number debugging information in release artifacts,
primarily to close out #36452 where debugging information was critical for MSVC
builds of Rust to be useful in production. This commit, however, apparently had
some unfortunate side effects.

Namely it was noticed in #37477 that if `RUST_BACKTRACE=1` was set then any
compiler error would take a very long time for the compiler to exit. The cause
of the problem here was somewhat deep:

* For all compiler errors, the compiler will `panic!` with a known value. This
  tears down the main compiler thread and allows cleaning up all the various
  resources. By default, however, this panic output is suppressed for "normal"
  compiler errors.
* When `RUST_BACKTRACE=1` was set this caused every compiler error to generate a
  backtrace.
* The libbacktrace library hits a pathological case where it spends a very long
  time in its custom allocation function, `backtrace_alloc`, because the
  compiler has so much debugging information. More information about this can be
  found in #29293 with a summary at the end of #37477.

To solve this problem this commit simply removes debuginfo from the compiler but
not from the standard library. This should allow us to keep #36452 closed while
also closing #37477. I've measured the difference to be orders of magnitude
faster than it was before, so we should see a much quicker time-to-exit after a
compile error when `RUST_BACKTRACE=1` is set.

Closes #37477
Closes #37571
2017-01-11 13:42:52 +00:00
bors 0d03d51cc0 Auto merge of #38925 - petrochenkov:varass, r=jseyfried
Fix ICE when variant is used as a part of associated path

Fixes https://github.com/rust-lang/rust/issues/38862
r? @jseyfried
2017-01-11 09:22:56 +00:00
Ariel Ben-Yehuda 61b0b212f9 fix function arguments in constant promotion
we can't create the target block until *after* we promote the arguments
- otherwise the arguments will be promoted into the target block. oops.

Fixes #38985.
2017-01-11 09:50:24 +02:00
Tyler Julian 30380137f8 std/net/udp: Improve set_nonblocking test 2017-01-10 22:06:17 -08:00