Commit Graph

45404 Commits

Author SHA1 Message Date
bors 8228240ca8 Auto merge of #27520 - brson:bump, r=alexcrichton
This probably wants to go in tomorrow. If it lands today then there will be one day where nightly is on 1.4 and stable is still on 1.1. Not a big deal either way.
2015-08-05 05:37:47 +00:00
bors 6a3545ef05 Auto merge of #27439 - vberger:more_perseverant_resolve, r=nrc
(This is a second try at #26242. This time I think things should be ok.)

The current algorithm handling import resolutions works sequentially, handling imports in the order they appear in the source file, and blocking/bailing on the first one generating an error/being unresolved.

This can lead to situations where the order of the `use` statements can make the difference between "this code compiles" and "this code fails on an unresolved import" (see #18083 for example). This is especially true when considering glob imports.

This PR changes the behaviour of the algorithm to instead try to resolve all imports in a module. If one fails, it is recorded and the next one is tried (instead of directly giving up). Also, all errors generated are stored (and not reported directly).

The main loop of the algorithms guaranties that the algorithm will always finish: if a round of resolution does not resolve anything new, we are stuck and give up. At this point, the new version of the algorithm will display all errors generated by the last round of resolve. This way we are sure to not silence relevant errors or help messages, but also to not give up too early.

**As a consequence, the import resolution becomes independent of the order in which the `use` statements are written in the source files.** I personally don't see any situations where this could be a problem, but this might need some thought.

I passed `rpass` and `cfail` tests on my computer, and now am compiling a full stage2 compiler to ensure the crates reporting errors in my previous attempts still build correctly. I guess once I have checked it, this will need a crater run?

Fixes #18083.

r? @alexcrichton , cc @nrc @brson
2015-08-05 03:52:39 +00:00
bors dbe415a4a7 Auto merge of #27393 - alexcrichton:no-std-changes, r=brson
This commit is an implementation of [RFC 1184][rfc] which tweaks the behavior of
the `#![no_std]` attribute and adds a new `#![no_core]` attribute. The
`#![no_std]` attribute now injects `extern crate core` at the top of the crate
as well as the libcore prelude into all modules (in the same manner as the
standard library's prelude). The `#![no_core]` attribute disables both std and
core injection.

[rfc]: https://github.com/rust-lang/rfcs/pull/1184

Closes #27394
2015-08-05 02:00:46 +00:00
Matt Friedman eaf27799bb add `meta` designator to macro reference 2015-08-04 20:04:11 -05:00
Ivan Jager 2accd295c6 Fix some grammar in The Advanced Rust Programming Language 2015-08-04 18:40:13 -05:00
Jared Roesch 471370a16b Fix last nits 2015-08-04 16:05:07 -07:00
Jared Roesch 2919e32686 Address final nits 2015-08-04 16:05:07 -07:00
Jared Roesch f004079de2 Actually commit tests 2015-08-04 16:05:07 -07:00
Jared Roesch 89d401f6ab Address nits 2015-08-04 16:05:07 -07:00
Jared Roesch 15e7aa79f5 Add feature gate 2015-08-04 16:05:07 -07:00
Jared Roesch 0bb5a1a824 Tidy test case 2015-08-04 16:05:07 -07:00
Jared Roesch 8602a7d898 Update and add test case
Test case from here: 9e93fef3c0
2015-08-04 16:05:07 -07:00
Jared Roesch 9fb11fe9f2 Extend macro machinery to expand macros in types
Reapplied the changes from 7aafe24139
to a clean branch of master
2015-08-04 16:05:06 -07:00
Jared Roesch edca562c87 Make parser recognize macro invocations in types
Reapplied the changes from 8b07abaa6e
to a clean branch of master
2015-08-04 16:05:06 -07:00
Jared Roesch ad5927870c Add a macro invocation to the type AST
Reapplied the changes from dc64b731d7
to a clean branch of master
2015-08-04 16:05:06 -07:00
bors efdbc0ec7e Auto merge of #27351 - pnkfelix:dst-size-and-align-issue-27023, r=nikomatsakis
Change the behavior of the glue code emitted for `size_and_align_of_dst`.

This thus changes the behavior of `std::mem::size_of_val` and `std::mem::align_of_val`.  It tries to move us towards a world where the following property holds:

Given type `T` implements `Trait` and a value `b: Box<T>`, where `std::mem::size_of::<T>()` returns `k`, then:

 * `std::mem::size_of_val(b)` returns `k`
 * `std::mem::size_of_val(b as Box<Trait>)` returns `k`

Note that one might legitimately question whether the above property *should* hold.  The property certainly does not hold today, as illustrated by #27023.

(A follow-up task is to make various tests that check that the above property holds for a wide variety of types ... I chose not to invest effort in writing such a test before we actually determine that the above property is desirable.)

nmatsakis and pnkfelix agree that this PR does not require an RFC.  cc @rust-lang/lang (since others may disagree).

(It also *might* break code, though it is hard for me to imagine that it could break code that wasn't already going to assert-fail when run in e.g. debug builds...)

Fix issue #27023

Also, this (or something like it) is a prerequisite for *fixing`make check` on `--enable-optimize --enable-debug` builds*
2015-08-04 22:55:31 +00:00
Alexis Beingessner 67455e29a1 Fix variance ordering
I thought this was actually a huge error and I'd have to rewrite a bunch but
it looks like everything else was correct.

Closes #27457
2015-08-04 15:25:37 -07:00
bors 6afb8f58d1 Auto merge of #26470 - l0kod:process-session-leader, r=alexcrichton
Add a new method `CommandExt::session_leader(&mut self, on: bool)` to create a new session (cf. `setsid(2)`) for the child process. This means that the child is the leader of a new process group. The parent process remains the child reaper of the new process.

This is not enough to create a daemon process. The *init* process should be the child reaper of a daemon. This can be achieved if the parent process exit. Moreover, a daemon should not have a controlling terminal. To acheive this, a session leader (the child) must spawn another process (the daemon) in the same session.

cc rust-lang/rfcs#941
cc #17176
2015-08-04 21:15:54 +00:00
Alex Crichton 0d8340327c syntax: Don't assume `std` exists for tests
This commit removes the injection of `std::env::args()` from `--test` expanded
code, relying on the test runner itself to call this funciton. This is more
hygienic because we can't assume that `std` exists at the top layer all the
time, and it meaks the injected test module entirely self contained.
2015-08-04 14:02:36 -07:00
Steve Klabnik 5af1b3f3a3 Improve docs for mem::forget()
We were burying the reason to use this function below a bunch of caveats about
its usage. That's backwards. Why a function should be used belongs at the top of
the docs, not the bottom.

Also, add some extra links to related functions mentioned in the body.
2015-08-04 16:45:32 -04:00
Brian Anderson ac085a6a9e Bump to 1.4 2015-08-04 12:47:00 -07:00
bors eb11d65d08 Auto merge of #27515 - Eljay:rustdoc-search, r=alexcrichton
Some small changes to (hopefully) make search more useful:

* Less strict filtering, e.g:
    * searching for "fn: foo" now matches methods and trait functions as well.
    * searching for types also matches primitive types.
    * searching for const will also match associated constants (but there aren't any in std yet)
* Changed searching for types to use the actual keyword "type" instead of the strange C-like "typedef".
* Added const and macro to allowed keywords.
2015-08-04 19:37:50 +00:00
Chris Nixon d5b522e20e Tweaked concurrency.md 2015-08-04 20:36:28 +01:00
Jan Likar c1f938d7b8 Rearrange sections in "Patterns"
- Move "Destructuring" after "Multiple patterns", because some of
    later sections include examples which make use of destructuring.

  - Move "Ignoring bindings" after "Destructoring", because the former
    features Result<T,E> destructuring. Some of examples in later
    sections use "_" and "..", so "Ignoring bindings" must be
    positioned before them.

  - Fix #27347 by moving "Ref and mut ref" before "Ranges" and
    "Bindings", because "Bindings" section includes a somewhat
    difficult example, which also makes use of "ref" and "mut ref"
    operators.
2015-08-04 20:22:42 +02:00
bors c980aba9a8 Auto merge of #27508 - friedm:remove_integer_suffixes, r=alexcrichton
For #27501  

r? @steveklabnik
2015-08-04 16:31:16 +00:00
Alex Crichton 4ac7e87c7c std: Ignore test_process_mask on OSX
The investigation into #14232 discovered that it's possible that signal delivery
to a newly spawned process is racy on OSX. This test has been failing spuriously
on the OSX bots for some time now, so ignore it as we don't currently know a
solution and it looks like it may be out of our control.
2015-08-04 09:04:53 -07:00
Eljay acf9d6768e Improve rustdoc search type filtering. 2015-08-04 16:40:23 +01:00
Guillaume Gomez 028aba38ff Add E0102 error explanation 2015-08-04 15:15:45 +02:00
bors 4b79add086 Auto merge of #27512 - Manishearth:rollup, r=Manishearth
- Successful merges: #27397, #27398, #27460, #27470, #27491, #27498, #27502
- Failed merges:
2015-08-04 12:31:32 +00:00
Manish Goregaokar 614f640856 Rollup merge of #27502 - rust-lang:grammer, r=brson
this grammar isn't correct

this should also get backported to beta

/cc @brson
2015-08-04 18:00:53 +05:30
Manish Goregaokar 0bf16ffe1c Rollup merge of #27498 - nagisa:eeeeeeh, r=Gankro
r? @Gankro
2015-08-04 18:00:53 +05:30
Manish Goregaokar 6be272cff5 Rollup merge of #27491 - GuillaumeGomez:patch-4, r=Manishearth 2015-08-04 18:00:53 +05:30
Manish Goregaokar 33663f0bd5 Rollup merge of #27470 - cactorium:e0074toe0077, r=alexcrichton
For https://github.com/rust-lang/rust/issues/24407
2015-08-04 18:00:52 +05:30
Manish Goregaokar 5f841eb824 Rollup merge of #27460 - JanLikar:master, r=steveklabnik
- Fix #26968 by noting the difference between ".." and "_" more explicitly

  - Change one of the examples to show the match-all behaviour of ".."

  - Merge "Ignoring variants" and "Ignoring bindings" sections into the latter

r? @steveklabnik
2015-08-04 18:00:52 +05:30
Manish Goregaokar f7eecc93f3 Rollup merge of #27398 - tshepang:patch-5, r=steveklabnik 2015-08-04 18:00:52 +05:30
Manish Goregaokar 3e3a9b4eec Rollup merge of #27397 - Dangthrimble:master, r=steveklabnik
Clarifications for those new to Rust and Cargo:
* It's a good idea to get rid of the original `main.exe` in project root
* Slight clarification on the use of `main.rs` vs `lib.rs`
* Clarify that the TOML file needs to be in project root
2015-08-04 18:00:52 +05:30
Guillaume Gomez 050b8d370b Add E0412 error explanation 2015-08-04 12:02:30 +02:00
bors f971f86238 Auto merge of #27507 - eefriedman:link-section, r=alexcrichton
Fixes #27467.
2015-08-04 09:02:43 +00:00
bors 7a7789df11 Auto merge of #27444 - Gankro:nomicon, r=brson
Closes #27412 

r? @brson
2015-08-04 06:27:22 +00:00
Victor Berger 58e35d7c2a Addressing nits & tests explanations. 2015-08-04 08:14:32 +02:00
bors ebc3a87fb4 Auto merge of #27500 - michaelwoerister:bring-gdb-pp-tests-back, r=alexcrichton
This test case has been removed a while ago because it allegedly was broken. But I don't think it is (at least I couldn't reproduce any failure on Linux). Let's give it another chance `:)`
2015-08-04 03:51:32 +00:00
Matt Friedman f53ba18f43 remove unneeded integer suffixes from concurrency chapter 2015-08-03 19:48:14 -05:00
Eli Friedman c40703f9b3 Fix link_section regression.
Fixes #27467.
2015-08-03 17:33:23 -07:00
Alex Crichton 5cccf3cd25 syntax: Implement #![no_core]
This commit is an implementation of [RFC 1184][rfc] which tweaks the behavior of
the `#![no_std]` attribute and adds a new `#![no_core]` attribute. The
`#![no_std]` attribute now injects `extern crate core` at the top of the crate
as well as the libcore prelude into all modules (in the same manner as the
standard library's prelude). The `#![no_core]` attribute disables both std and
core injection.

[rfc]: https://github.com/rust-lang/rfcs/pull/1184
2015-08-03 17:23:01 -07:00
bors 38517944f0 Auto merge of #26783 - eddyb:methrec, r=huonw
After #26694, the overloaded operator and "impl not known at method lookup time" cases started triggering the lint.
I've also added checks for overloaded autoderef and method calls via paths (i.e. `T::method()`).
All new 8 test cases did not trigger the lint before #26694.
r? @huonw
2015-08-03 23:47:02 +00:00
Eduard Burtescu 585f0e928b rustc_lint: handle more method calls in unconditional_recursion. 2015-08-04 01:17:56 +03:00
Eduard Burtescu a34b0a4691 rustc: replace def::MethodProvenance with ty::ImplOrTraitItemContainer. 2015-08-04 01:16:53 +03:00
bors ceded6adb3 Auto merge of #27210 - vadimcn:win64-eh-pers, r=alexcrichton
After this change, the only remaining symbol we are pulling from libgcc on Win64 is `__chkstk_ms` - the stack probing routine.
2015-08-03 22:12:46 +00:00
Steve Klabnik b5a7827505 delete some old tests
These are for syntaxes that haven't existed for a long time.
2015-08-03 17:25:56 -04:00
Jonathan Hansford c54df0e454 required -> used; you -> we 2015-08-03 21:37:15 +01:00