Commit Graph

64541 Commits

Author SHA1 Message Date
Corey Farwell
854196a0ed Rollup merge of #42236 - citizen428:docs/unchecked-indexing-slicing, r=GuillaumeGomez
Update documentation for indexing/slicing methods

See #39911

r? @steveklabnik
2017-05-26 10:20:29 -04:00
Corey Farwell
2c3aa9154d Rollup merge of #42230 - venkatagiri:ice_regression_tests, r=Mark-Simulacrum
regression tests for ICEs

closes #36379
closes #37550
closes #37665
closes #38160
closes #38954
closes #39362

r? @Mark-Simulacrum
2017-05-26 10:20:28 -04:00
Corey Farwell
2451f65c5c Rollup merge of #42224 - brson:lockfile, r=nikomatsakis
Remove stray lockfile
2017-05-26 10:20:27 -04:00
Corey Farwell
b872097931 Rollup merge of #42216 - charliesome:associate-type-typo, r=petrochenkov
Fix 'associate type' typo

I came across an error message mentioning an 'associate type'.

Since this is the only instance of this term in rustc (it's 'associated type' everywhere else), I think this might be a typo.
2017-05-26 10:20:26 -04:00
Corey Farwell
21882103d4 Rollup merge of #42215 - callahad:remove-superfluous-semis, r=Mark-Simulacrum
Remove superfluous `;;` sequences

Ran across a doubled `;;` in the docstring for `str::split`. Grep found a few more. :)
2017-05-26 10:20:25 -04:00
Corey Farwell
7e47327d90 Rollup merge of #42169 - scottmcm:new-step-trait-issue, r=alexcrichton
Give step_trait a distinct tracking issue from step_by

iterator_step_by has decoupled their futures, so the tracking issue should split.

Old issue: https://github.com/rust-lang/rust/issues/27741
New issue: https://github.com/rust-lang/rust/issues/42168

r? @alexcrichton (another follow-up to closed PR https://github.com/rust-lang/rust/pull/42110#issuecomment-303176049)
2017-05-26 10:20:25 -04:00
Masaki Hara
99993780dc
Add warning cycle #42238. 2017-05-26 22:21:46 +09:00
bors
c732446edd Auto merge of #42014 - tbu-:pr_scan_not_fused, r=alexcrichton
Remove `FusedIterator` implementation of `iter::Scan`

Fixes #41964.

This is a breaking change.
2017-05-26 12:54:11 +00:00
king6cong
e66388d21f doc rewording 2017-05-26 19:22:25 +08:00
bors
2f278c57ff Auto merge of #42083 - petrochenkov:safeassign, r=nikomatsakis
Make assignments to `Copy` union fields safe

This is an accompanying PR to PR https://github.com/rust-lang/rust/pull/42068 stabilizing FFI unions.

This was first proposed in https://github.com/rust-lang/rust/issues/32836#issuecomment-281296416, see subsequent comments as well.
Assignments to `Copy` union fields do not read any data from the union and are [equivalent](https://github.com/rust-lang/rust/issues/32836#issuecomment-281660298) to whole union assignments, which are safe, so they should be safe as well. This removes a significant number of "false positive" unsafe blocks, in code dealing with FFI unions in particular.

It desirable to make this change now, together with stabilization of FFI unions, because now it affecfts only unstable code, but later it will cause warnings/errors caused by `unused_unsafe` lint in stable code.

cc #32836
r? @nikomatsakis
2017-05-26 10:17:51 +00:00
Michael Kohl
bbf1dc4fad Update documentation for indexing/slicing methods
See #39911
2017-05-26 15:49:35 +07:00
bors
2db17c86e3 Auto merge of #42058 - froydnj:thiscall-support, r=nikomatsakis
add thiscall calling convention support

This support is needed for bindgen to work well on 32-bit Windows, and also enables people to begin experimenting with C++ FFI support on that platform.

Fixes #42044.
2017-05-26 07:36:25 +00:00
Venkata Giri Reddy
2160b4ae58 regression test for #37550 2017-05-25 21:34:16 -04:00
Venkata Giri Reddy
95436c6d89 regression test for #37665
regression test for #37550
2017-05-25 21:33:58 -04:00
bors
4f9c9ed1a5 Auto merge of #40847 - jseyfried:decl_macro, r=nrc
Initial implementation of declarative macros 2.0

Implement declarative macros 2.0 (rust-lang/rfcs#1584) behind `#![feature(decl_macro)]`.
Differences from `macro_rules!` include:
 - new syntax: `macro m(..) { .. }` instead of `macro_rules! m { (..) => { .. } }`
 - declarative macros are items:
```rust
// crate A:
pub mod foo {
    m!(); // use before definition; declaration order is irrelevant
    pub macro m() {} // `pub`, `pub(super)`, etc. work
}
fn main() {
    foo::m!(); // named like other items
    { use foo::m as n; n!(); } // imported like other items
}
pub use foo::m; // re-exported like other items

// crate B:
extern crate A; // no need for `#[macro_use]`
A::foo::m!(); A::m!();
```
 - Racket-like hygiene for items, imports, methods, fields, type parameters, privacy, etc.
   - Intuitively, names in a macro definition are resolved in the macro definition's scope, not the scope in which the macro is used.
   - This [explaination](http://beautifulracket.com/explainer/hygiene.html) of hygiene for Racket applies here (except for the "Breaking Hygiene" section). I wrote a similar [explanation](https://github.com/jseyfried/rfcs/blob/hygiene/text/0000-hygiene.md) for Rust.
   - Generally speaking, if `fn f() { <body> }` resolves, `pub macro m() { <body> } ... m!()` also resolves, even if `m!()` is in a separate crate.
   - `::foo::bar` in a `macro` behaves like `$crate::foo::bar` in a `macro_rules!`, except it can access everything visible from the `macro` (thus more permissive).
   - See [`src/test/{run-pass, compile-fail}/hygiene`](afe7d89858) for examples. Small example:
```rust
mod foo {
    fn f() { println!("hello world"); }
    pub macro m() { f(); }
}
fn main() { foo::m!(); }
```

Limitations:
 - This does not address planned changes to matchers (`expr`,`ty`, etc.), c.f. #26361.
 - Lints (including stability and deprecation) and `unsafe` are not hygienic.
   - adding hygiene here will be mostly or entirely backwards compatible
 - Nested macro definitions (a `macro` inside another `macro`) don't always work correctly when invoked from external crates.
   - pending improvements in how we encode macro definitions in crate metadata
 - There is no way to "escape" hygiene without using a procedural macro.

r? @nrc
2017-05-25 22:31:34 +00:00
Venkata Giri Reddy
9ee9abcdbd regression test for #38160 2017-05-25 17:43:25 -04:00
Venkata Giri Reddy
04ac7c3345 regression test for #39362 2017-05-25 17:36:59 -04:00
Jeffrey Seyfried
dc34ea0929 Fix merge conflicts. 2017-05-25 21:07:45 +00:00
Venkata Giri Reddy
6b151ef841 regression test for #38954 2017-05-25 16:55:25 -04:00
Venkata Giri Reddy
0530339dc3 regression test for #36379 2017-05-25 16:50:26 -04:00
bors
5f39668642 Auto merge of #42220 - alexcrichton:update, r=brson
Update OpenSSL download location

In rustbuild itself we download from our mirror but in the containers we don't
do this yet. The OpenSSL download url changes from time to time (it breaks when
they release a new version) so let's download from our mirror instead.
2017-05-25 19:48:14 +00:00
Brian Anderson
435e1cec9e Remove stray lockfile 2017-05-25 18:48:21 +00:00
Venkata Giri Reddy
c87f6d854b regression test for #39974
closes #39974

r? @Mark-Simulacrum
2017-05-25 13:10:02 -04:00
Alex Crichton
357133b362 Update OpenSSL download location
In rustbuild itself we download from our mirror but in the containers we don't
do this yet. The OpenSSL download url changes from time to time (it breaks when
they release a new version) so let's download from our mirror instead.
2017-05-25 10:08:35 -07:00
bors
deb90c33cc Auto merge of #42052 - kennytm:fix-42007-ice-on-decode-lint-id, r=nikomatsakis
Refactor: Move the mutable parts out of LintStore. Fix #42007.

* #42007 happens because the `Session` `LintStore` is emptied when linting.
* The `Session` `LintStore` is emptied because the checker (`Early`/`LateContext`) wants ownership.
* The checker wants ownership because it wants to mutate the pass objects and lint levels.

The ownership of the whole store is not essential, only the lint levels and pass objects need to be owned. Therefore, these parts are extracted out of the `LintStore` into a separate structure `LintSession`. The "check crates" methods can operate on `&mut LintSession` instead of `&mut LintStore`.

This is a minor *breaking change* for lint writers since the `LintContext` trait is changed: the `mut_lints` and `level_stack` methods are removed. But no one outside of `librustc/lint/context.rs` is using these functions, so it should be safe.
2017-05-25 14:10:10 +00:00
Paul Faria
a563f350b0 Remove irrelevant tests and unused testing attribute 2017-05-25 07:59:13 -04:00
bors
d86d134c38 Auto merge of #41932 - wesleywiser:py-to-rust, r=alexcrichton
Rewrite make-win-dist.py in Rust

Fixes #41568
2017-05-25 10:35:04 +00:00
est31
87950b79de Stabilize non capturing closure to fn coercion 2017-05-25 11:57:55 +02:00
Scott McMurray
ecde1e1d3b Lower ? to Try instead of Carrier
The easy parts of RFC 1859.  (Just the trait and the lowering, none of
the error message improvements nor the insta-stable impl for Option.)
2017-05-25 00:47:30 -07:00
Vadim Petrochenkov
fa13cd3489 Use parameter environment associated with field use, not field definition 2017-05-25 10:46:47 +03:00
bors
d0811c9148 Auto merge of #41145 - matthewjasper:stabilize-relaxed-adts, r=petrochenkov
Stabilize rfc 1506 - Clarified ADT Kinds

Closes #35626

Documentation:

- [ ] Reference rust-lang-nursery/reference#37
- [ ] Book?
- [ ] Rust by example?
2017-05-25 07:24:18 +00:00
Venkata Giri Reddy
5ce2eb1bd8 use shared scripts for init and sccache in cross image 2017-05-25 00:43:21 -06:00
Vadim Petrochenkov
4386f97a93 Make assignments to Copy union fields safe 2017-05-25 09:36:45 +03:00
Jeffrey Seyfried
d940d543df Ignore pretty. 2017-05-25 05:52:15 +00:00
Jeffrey Seyfried
b13392f771 Improve Self. 2017-05-25 05:52:13 +00:00
Jeffrey Seyfried
754fdad4a8 Add tests. 2017-05-25 05:52:12 +00:00
Jeffrey Seyfried
3eb235b45e Improve intercrate hygiene. 2017-05-25 05:52:11 +00:00
Jeffrey Seyfried
dde8dc61dd Improve efficiency. 2017-05-25 05:52:10 +00:00
Jeffrey Seyfried
7fdc1fb2e4 Hygienize lifetimes. 2017-05-25 05:52:09 +00:00
Jeffrey Seyfried
8497061a49 Hygienize librustc_privacy. 2017-05-25 05:52:08 +00:00
Jeffrey Seyfried
bfa2ef62a1 Hygienize librustc_typeck. 2017-05-25 05:52:05 +00:00
Jeffrey Seyfried
1f175fa35d Hygienize librustc_resolve. 2017-05-25 05:51:50 +00:00
Jeffrey Seyfried
1cded8472e Remove trait_item_map, clean up resolver.with_type_parameter_rib(). 2017-05-25 05:51:12 +00:00
Jeffrey Seyfried
2a1d2edb82 Declarative macros 2.0 without hygiene. 2017-05-25 05:51:06 +00:00
Jeffrey Seyfried
9c6430b325 Refactor out ast::MacroDef. 2017-05-25 05:47:25 +00:00
Tatsuyuki Ishi
15c26c92cc bootstrap.py: support verbose for submodules 2017-05-25 14:00:05 +09:00
Tatsuyuki Ishi
46ebd832e3 bootstrap.py: decode to str
Also, improve the split mechanism to address space in paths.
2017-05-25 13:58:10 +09:00
Tatsuyuki Ishi
5bcf06aa18 bootstrap.py: Filter instead of iteration 2017-05-25 13:57:51 +09:00
Tatsuyuki Ishi
1fea55ba51 Format bootstrap.py using autopep8 2017-05-25 13:57:23 +09:00
Tatsuyuki Ishi
d552e34e20 Use the improved submodule handling 2017-05-25 13:57:05 +09:00