Commit Graph

73171 Commits

Author SHA1 Message Date
Isaac van Bakel
21ddc181f9 Fixed unsize changing adjusted type
If the final type coming out of an Adjust is a ref, it is deconstructed.
Also made some formatting changes.
2018-01-07 01:30:21 +00:00
Isaac van Bakel
8ec3696b37 Made eddyb's suggested change
The adjusted type is now used instead in cases of autoderefs.
2018-01-07 01:30:21 +00:00
Isaac van Bakel
bf199d4965 Added tests for non-obvious builtin indexing
Tests match issues opened on Github.
Tests would not previously compile and pass.
2018-01-07 01:30:21 +00:00
Isaac van Bakel
23bc6418e8 Moved builtin indexing checks to writeback stage
Use of builtin indexing is now only checked after types are fully
resolved.
Types are not correctly checked in case of autoderefs.
2018-01-07 01:30:20 +00:00
bors
6828cf9014 Auto merge of #47235 - kennytm:rollup, r=kennytm
Rollup of 7 pull requests

- Successful merges: #46947, #47170, #47190, #47205, #47217, #47220, #47230
- Failed merges: #47233
2018-01-06 20:41:33 +00:00
kennytm
ce70106138 Rollup merge of #47230 - nerd2:debuginfo_shadow, r=alexcrichton
Debuginfo Shadowed Variable test: fix check numbering

Appears to be a simple fix to restore this test. Ref issue #47163, CC @arielb1
2018-01-07 02:36:07 +08:00
kennytm
f6125846b6 Rollup merge of #47220 - nagisa:nonamellvm, r=rkruppe
Use name-discarding LLVM context

This is only applicable when neither of --emit=llvm-ir or --emit=llvm-bc are not
requested.

In case either of these outputs are wanted, but the benefits of such context are
desired as well, -Zfewer_names option provides the same functionality regardless
of the outputs requested.

Should be a viable fix for https://github.com/rust-lang/rust/issues/46449
2018-01-07 02:36:06 +08:00
kennytm
e7192c1a4b Rollup merge of #47217 - stjepang:set-examples, r=frewsxcv
Write examples for {BTree,Hash}Set::{get,replace,take}
2018-01-07 02:36:05 +08:00
kennytm
c6bf11cf2b Rollup merge of #47205 - eddyb:alloc-id, r=oli-obk
miri: use AllocId instead of u64.

This makes @alexreg's miri allocation -> LLVM global translation more straight-forward.

r? @oli-obk
2018-01-07 02:36:04 +08:00
kennytm
48a0f3a5ca Rollup merge of #47190 - EdSchouten:cloudabi-libpanic, r=alexcrichton
Port libpanic_abort and libpanic_unwind to CloudABI

This change ports both the libpanic* libraries to CloudABI.

The most interesting part of this pull request, however, is that it imports the CloudABI system call API into the Rust tree through a Git submodule. These will also be used by my port of libstd to CloudABI extensively, as that library obviously needs to invoke system calls to implement its primitives.

I have taken the same approach as libc: `src/libcloudabi` + `src/rustc/cloudabi_shim`. If some other naming scheme is preferred, feel free to let me know! As `libcloudabi` is pretty small, maybe it makes sense to copy, instead of using a submodule?
2018-01-07 02:36:03 +08:00
kennytm
b63f89783d Rollup merge of #47170 - eddyb:us-vs-usize, r=nikomatsakis
rustc: use {U,I}size instead of {U,I}s shorthands.

`Us`/`Is` come from a time when `us` and `is` were the literal suffixes that are now `usize` / `isize`.

r? @nikomatsakis
2018-01-07 02:36:02 +08:00
kennytm
d9d5c667d8 Rollup merge of #46947 - tspiteri:checked-div-rem-none, r=frewsxcv
doc: improve None condition doc for `checked_div` and `checked_rem`

This commit improves the condition mentioned in the docs for which `checked_div` and `checked_rem` return `None`.

For signed division, the commit changes "the operation results in overflow" to "the division results in overflow", otherwise there is room for misinterpretation for `checked_rem`: Without considering overflow, `MIN % -1` would be simply zero, allowing the misinterpretation that "the operation" does not result in overflow in this case. This ambiguity is removed using "when the division results in overflow".

For unsigned division, the condition for `None` should be simply when `rhs == 0`, as no other overflow is possible.
2018-01-07 02:36:01 +08:00
bors
72176cf96c Auto merge of #47141 - alexcrichton:bump-bootstrap, r=alexcrichton
Bump to 1.25.0

* Bump the release version to 1.25
* Bump the bootstrap compiler to the recent beta
* Allow using unstable rustdoc features on beta - this fix has been applied to
  the beta branch but needed to go to the master branch as well.
2018-01-06 14:50:14 +00:00
bors
a9a03d9bfb Auto merge of #47099 - SergioBenitez:master, r=jseyfried
Add 'Span::parent()' and 'Span::source()' to proc_macro API.

As the title suggests: a couple of useful methods for `proc_macro`.
2018-01-06 12:02:36 +00:00
Sam
7c971b2ab1 Debuginfo Shadowed Variable test: fix check numbering 2018-01-06 11:10:17 +00:00
bors
90e019bacd Auto merge of #47083 - CAD97:issue-46976, r=nikomatsakis
Issue 46976

ICE is due to an empty path segments, so I set the path to be the same as the in band ty params symbol. (I think this is how regular generics end up being handled?)

Pinging @cramertj, this is your code I'm editing here.
2018-01-06 09:22:16 +00:00
bors
fdc6ca44c3 Auto merge of #47155 - nerd2:debuginfo_test_fix, r=alexcrichton
Restore working debuginfo tests by trimming comments from non-header directive lines

I noticed when adding a debuginfo test that nothing I did caused the test to fail. Tracing back this seems to have been caused by 3e6c83de1d which broke parsing of the command/check lines, leaving all tests passing without any checking. This commit provides a basic (although still not very robust) restoration of tests and a should-fail test which checks the parser is running
2018-01-06 05:20:22 +00:00
bors
8d370ec908 Auto merge of #47225 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 5 pull requests

- Successful merges: #46987, #47165, #47173, #47202, #47216
- Failed merges:
2018-01-06 02:36:41 +00:00
Guillaume Gomez
35d15554bd Rollup merge of #47216 - SergioBenitez:doc-fix, r=Mark-Simulacrum
Clarify appending behavior of 'io::Read::read_to_string()'.

A simple doc clarification.
2018-01-06 02:13:36 +01:00
Guillaume Gomez
b3104178d6 Rollup merge of #47202 - GuillaumeGomez:fix-defocus, r=QuietMisdreavus
Fix search bar defocus

Fixes #47134.

r? @QuietMisdreavus
2018-01-06 02:13:35 +01:00
Guillaume Gomez
21b9822390 Rollup merge of #47173 - dotdash:cleanup, r=michaelwoerister
Remove some outdated LLVM-related code

Ticks two boxes on #46437
2018-01-06 02:13:34 +01:00
Guillaume Gomez
5624ac7c47 Rollup merge of #47165 - mbrubeck:args, r=alexcrichton
[unix] Don't clone command-line args on startup

Fixes part of #47164 and simplifies the `args` code on non-Apple Unix platforms.

Note: This could change behavior for programs that use both `std::env::args` *and* unsafe code that mutates `argv` directly.  However, these programs already behave differently on different platforms.  The new behavior on non-Apple platforms is closer to the existing behavior on Apple platforms.
2018-01-06 02:13:33 +01:00
Guillaume Gomez
67e3a2bb2c Rollup merge of #46987 - frewsxcv:frewsxcv-current-exe, r=QuietMisdreavus
Minor rewrite of env::current_exe docs; clarify symlinks.

- Update example in ‘security’ section to use hard links, like the
  linked securityvulns.com example.
- Weaken language on symbolic links – indicate behavior is
  platform-specific

Fixes https://github.com/rust-lang/rust/issues/43617.
2018-01-06 02:13:32 +01:00
Ed Schouten
91611fc3d0 Let libpanic_abort call into libc's abort() on CloudABI.
Ideally, we should make use of CloudABI's internal proc_raise(SIGABRT)
system call. POSIX abort() requires things like flushing of stdios,
which may not be what we want under panic conditions. Invoking the raw
CloudABI system call would have prevented that.

Unfortunately, we have to make use of the "cloudabi" crate to invoke raw
CloudABI system calls. This is undesired, as discussed in the pull
request (#47190).
2018-01-05 22:16:54 +01:00
Alex Crichton
fcdca7f2da rustc: Don't ICE if we invalidate an invalid incr dir
This showed up on the Windows bot for testing this PR, and this pr allows
`mark_incr_comp_session_as_invalid` ok if it's already invalid, hopefully
avoiding scary ICEs and instead leaving the nicely printed errors
2018-01-05 10:51:29 -08:00
Simonas Kazlauskas
b719578f48 Use name-discarding LLVM context
This is only applicable when neither of --emit=llvm-ir or --emit=llvm-bc are not
requested.

In case either of these outputs are wanted, but the benefits of such context are
desired as well, -Zfewer_names option provides the same functionality regardless
of the outputs requested.
2018-01-05 19:08:44 +02:00
bors
b98fd524ec Auto merge of #47142 - sdroege:trusted-random-access-chunks, r=kennytm
Implement TrustedRandomAccess for slice::{Chunks, ChunksMut, Windows}

As suggested by @bluss in https://github.com/rust-lang/rust/issues/47115#issuecomment-354888334
2018-01-05 14:17:04 +00:00
Stjepan Glavina
7948f458ab Write examples for {BTree,Hash}Set::{get,replace,take} 2018-01-05 15:02:10 +01:00
Sergio Benitez
d301da55f8 Clarify appending behavior of 'io::Read::read_to_string()'. 2018-01-05 04:24:12 -08:00
Sam
0a24acda18 Disable failing tests temporarily 2018-01-05 10:47:34 +00:00
bors
dd582ac38e Auto merge of #47214 - kennytm:rollup, r=kennytm
Rollup of 10 pull requests

- Successful merges: #47030, #47033, #47110, #47149, #47150, #47160, #47162, #47182, #47198, #47199
- Failed merges:
2018-01-05 10:07:47 +00:00
kennytm
3fcb995759 Rollup merge of #47199 - alexcrichton:stable-no-dev, r=kennytm
rustbuild: Don't allow stable bootstrap from dev

I forgot to update the bootstrap compiler for the 1.23.0 release so let's make
sure it doesn't happen again!
2018-01-05 17:22:13 +08:00
kennytm
71c8e106e3 Rollup merge of #47198 - dzamlo:patch-2, r=frewsxcv
Fix an error in std::process documentation
2018-01-05 17:22:12 +08:00
kennytm
1fea75192e Rollup merge of #47182 - aheart:master, r=steveklabnik
Equivalent example for ? operator

The example with the ? operator in the documentation for try! macro was missing file.write_all.
Now all three examples are consistent.
2018-01-05 17:22:11 +08:00
kennytm
ff2f328d7e Rollup merge of #47162 - stjepang:cleanup-btreeset, r=alexcrichton
Remove `T: Ord` bound from `BTreeSet::{is_empty, len}`

This change makes the API for `BTreeSet` more consistent with `BTreeMap`, where `BTreeMap::{is_empty, len}` don't require `T: Ord` either.

Also, it reduces the number of `impl`s for `BTreeSet`, making the generated documentation look much cleaner. Closes #47138.

cc @rust-lang/libs
2018-01-05 17:22:10 +08:00
kennytm
a5dd5fe007 Rollup merge of #47160 - rust-lang:steveklabnik-patch-1, r=alexcrichton
This isn't in Rust 1.23

r? @alexcrichton
2018-01-05 17:22:09 +08:00
kennytm
5a5b16ad06 Rollup merge of #47150 - dtolnay:join, r=jseyfried
Return None from Span::join if in different files

Fixes #47148. r? @abonander
2018-01-05 17:22:08 +08:00
kennytm
2ac50febbd Rollup merge of #47149 - dtolnay:spans, r=jseyfried
Span::resolved_at and Span::located_at to combine behavior of two spans

Proc macro spans serve two mostly unrelated purposes: controlling name resolution and controlling error messages. It can be useful to mix the name resolution behavior of one span with the line/column error message locations of a different span.

In particular, consider the case of a trait brought into scope within the def_site of a custom derive. I want to invoke trait methods on the fields of the user's struct. If the field type does not implement the right trait, I want the error message to underline the corresponding struct field.

Generating the method call with the def_site span is not ideal -- it compiles and runs but error messages sadly always point to the derive attribute like we saw with Macros 1.1.

```
  |
4 | #[derive(HeapSize)]
  |          ^^^^^^^^
```

Generating the method call with the same span as the struct field's ident or type is not correct -- it shows the right underlines but fails to resolve to the trait in scope at the def_site.

```
  |
7 |     bad: std:🧵:Thread,
  |     ^^^^^^^^^^^^^^^^^^^^^^^^
```

The correct span for the method call is one that combines the def_site's name resolution with the struct field's line/column.

```rust
field.span.resolved_at(Span::def_site())

// equivalently
Span::def_site().located_at(field.span)
```

Adding both because which one is more natural will depend on context.

Addresses https://github.com/rust-lang/rust/issues/38356#issuecomment-354947143. r? @jseyfried
2018-01-05 17:22:07 +08:00
kennytm
26d129ce39 Rollup merge of #47110 - EdSchouten:cloudabi-tls, r=kennytm
Use the right TLS model for CloudABI.

CloudABI doesn't do dynamic linking. For this reason, there is no need
to handle any other TLS model than local-exec. CloudABI's C library
doesn't provide a __tls_get_addr() function to do Dynamic TLS.

By forcing local-exec to be used here, we ensure that we don't generate
function calls to __tls_get_addr().
2018-01-05 17:22:06 +08:00
kennytm
016f7f49c2 Rollup merge of #47033 - EdSchouten:cloudabi-oom, r=kennytm
Disable printing of error message on file descriptor 2 on CloudABI.

As CloudABI is a capability-based runtime environment, file descriptors
are the mechanism that grants rights to a process. These file
descriptors may be passed into processes on startup using a utility
called cloudabi-run. Unlike the POSIX shell, cloudabi-run does not
follow the UNIX model where file descriptors 0, 1 and 2 represent stdin,
stdout and stderr. There can be arbitrary many (or few) file descriptors
that can be provided. For this reason, CloudABI's C library also doesn't
define STD*_FILENO. liblibc should also not declare these.

Disable the code in liballoc_system that tries to print error messages
over file descriptor 2. For now, let's keep this function quiet. We'll
see if we can think of some other way to log this in the future.
2018-01-05 17:22:05 +08:00
kennytm
63c8e0c86b Rollup merge of #47030 - ollie27:stab, r=alexcrichton
Correct a few stability attributes

* The extra impls for `ManuallyDrop` were added in #44310 which was only stabilised in 1.22.0.
* The impls for `SliceIndex` were stabilised in #43373 but as `RangeInclusive` and `RangeToInclusive` are still unstable the impls should remain unstable.
* The `From` impls for atomic integers were added in #45610 but most atomic integers are still unstable.
* The `shared_from_slice2` impls were added in #45990 but they won't be stable until 1.24.0.
* The `Mutex` and `RwLock` impls were added in #46082 but won't be stable until 1.24.0.
2018-01-05 17:22:04 +08:00
bors
8a11b8cdd7 Auto merge of #46907 - varkor:contrib-8, r=nagisa
Allow non-alphabetic underscores in camel case

Certain identifiers, such as `X86_64`, cannot currently be unambiguously represented in camel case (`X8664`, `X86_64`, `X8_664`, etc. are all transformed to the same identifier). This change relaxes the rules so that underscores are permitted between two non-alphabetic characters under `#[forbid(non_camel_case_types)]`. Fixes #34633 and fixes #41621.
2018-01-05 05:20:23 +00:00
Eduard-Mihai Burtescu
0907494ae1 miri: use AllocId instead of u64. 2018-01-05 05:12:38 +02:00
bors
5e66887fed Auto merge of #46739 - arielb1:simple-loops, r=nikomatsakis
[needs perf run] Try to improve LLVM pass ordering

Fixes #45466
2018-01-05 02:31:19 +00:00
Guillaume Gomez
eea860f84c Fix search bar defocus 2018-01-05 01:14:10 +01:00
Matt Brubeck
91c3eee173 [unix] Don't clone command-line args on startup 2018-01-04 15:11:39 -08:00
Alex Crichton
0e795a2106 rustbuild: Don't allow stable bootstrap from dev
I forgot to update the bootstrap compiler for the 1.23.0 release so let's make
sure it doesn't happen again!
2018-01-04 13:14:15 -08:00
Loïc Damien
8fc4a24062
Fix an error in std::process documentation 2018-01-04 22:01:57 +01:00
Ed Schouten
9a8f0a8cb0 Make libpanic_unwind build on CloudABI.
CloudABI uses LLVM's libunwind for stack unwinding. There was a small
bug that went by unnoticed, namely that it was not built with -fno-rtti.
This caused it to (indirectly) depend on the entire C++ runtime.

Now that that issue has been resolved, it is also perfectly fine to make
use of this library for programming languages other than C++.
2018-01-04 17:55:44 +01:00
Alex Crichton
8c9bf663d4 rustc: Don't use relative paths for extended errors
These no longer work now that Cargo changes the cwd of rustc while it's running.
Instead use an absolute path that's set by rustbuild.
2018-01-04 07:21:22 -08:00