Commit Graph

60606 Commits

Author SHA1 Message Date
Alex Crichton
0c7117457d Rollup merge of #39068 - alexcrichton:more-small-tests, r=brson
travis: Add i586 linux and i686 musl

This commit expands the existing x86_64-musl entry in the Travis matrix to also
build/test i586-unknown-linux-gnu and i686-unknown-linux-musl.

cc #38531
Closes #35599
Closes #39053
2017-01-20 08:35:46 -08:00
Alex Crichton
18a39ed66e Rollup merge of #38966 - brson:relnotes, r=brson
1.15 release notes

[Rundered](https://github.com/brson/rust/blob/relnotes/RELEASES.md#version-1150-2017-02-02).

Lots of good stuff this release!

Perf graphs: https://goo.gl/KSVFvF, https://goo.gl/K98g8M, https://goo.gl/H1gSoz, https://goo.gl/yZBV2p, https://goo.gl/ltURbb. Not much change 😿

r? @steveklabnik
2017-01-20 08:35:46 -08:00
Alex Crichton
d4d276faaf Rollup merge of #38842 - abonander:proc_macro_attribute, r=jseyfried
Implement `#[proc_macro_attribute]`

This implements `#[proc_macro_attribute]` as described in https://github.com/rust-lang/rfcs/pull/1566

The following major (hopefully non-breaking) changes are included:

* Refactor `proc_macro::TokenStream` to use `syntax::tokenstream::TokenStream`.
    * `proc_macro::tokenstream::TokenStream` no longer emits newlines between items, this can be trivially restored if desired
    * `proc_macro::TokenStream::from_str` does not try to parse an item anymore, moved to `impl MultiItemModifier for CustomDerive` with more informative error message

* Implement `#[proc_macro_attribute]`, which expects functions of the kind `fn(TokenStream, TokenStream) -> TokenStream`
    * Reactivated `#![feature(proc_macro)]` and gated `#[proc_macro_attribute]` under it
    * `#![feature(proc_macro)]` and `#![feature(custom_attribute)]` are mutually exclusive
    * adding `#![feature(proc_macro)]` makes the expansion pass assume that any attributes that are not built-in, or introduced by existing syntax extensions, are proc-macro attributes

* Fix `feature_gate::find_lang_feature_issue()` to not use `unwrap()`

    * This change wasn't necessary for this PR, but it helped debugging a problem where I was using the wrong feature string.

* Move "completed feature gate checking" pass to after "name resolution" pass

    * This was necessary for proper feature-gating of `#[proc_macro_attribute]` invocations when the `proc_macro` feature flag isn't set.

Prototype/Litmus Test: [Implementation](https://github.com/abonander/anterofit/blob/proc_macro/service-attr/src/lib.rs#L13) -- [Usage](https://github.com/abonander/anterofit/blob/proc_macro/service-attr/examples/post_service.rs#L35)
2017-01-20 08:34:30 -08:00
Alex Crichton
437d2b5e28 Rollup merge of #38761 - frewsxcv:thread-sleep-formatting, r=alexcrichton
Add 'platform-specific' section to `sleep_ms` to match `sleep`.

None
2017-01-20 08:34:30 -08:00
bors
a52da95ced Auto merge of #39062 - martinhath:placement-in-binaryheap, r=nagisa
Implement placement-in protocol for `BinaryHeap`

Related to #30172, and loosley based on #38551.

At the moment, this PR is in a pretty rough state, but I wanted to get some feedback to see if I'm going in the right direction.

I hope the Mentor label of #30172 is still applicable, even though it's a year old 😄
2017-01-20 13:31:10 +00:00
bors
b7ca2b9e14 Auto merge of #38955 - estebank:highlighted-diags, r=nikomatsakis
Teach Diagnostics to highlight text

Support styled `Diagnostic` output:

<img width="469" alt="mismatched types error with colorized types in the note" src="https://cloud.githubusercontent.com/assets/1606434/21871227/93a84198-d815-11e6-88b1-0ede3c7e28ef.png">

Closes #37532 and #38901.

r? @nikomatsakis CC @jonathandturner @nagisa @nrc
2017-01-20 09:33:10 +00:00
bors
b53d374790 Auto merge of #38603 - arielb1:supertrait-self-3, r=nikomatsakis
traits with self-containing supertraits are not object safe

This should be the last time I fix this function.

Fixes #38404.
2017-01-20 04:55:01 +00:00
bors
f0b4207598 Auto merge of #39136 - keeperofdakeys:proc-macro-doc-test, r=alexcrichton
Stop warning when doc testing proc macro crates

Fixes #39064

Add the test option to the session struct that is passed
to phase_2_configure_and_expand function inside the
rustdoc test module.

This prevents the warning code from triggering when
parsing proc_macro_derive attributes, just like when
`--test` is normally invoked.

This change makes the warning disappear, but I'm not sure what else it might change. So this early PR is mainly to run the test suite, and to get feedback.
2017-01-19 21:15:12 +00:00
bors
8e29b4d387 Auto merge of #38465 - japaric:msp430-interrupt, r=eddyb
calling convention for MSP430 interrupts

This calling convention is used to define interrup handlers on MSP430 microcontrollers. Usage looks like this:

``` rust
#[no_mangle]
#[link_section = "__interrupt_vector_10"]
pub static TIM0_VECTOR: unsafe extern "msp430-interrupt" fn() = tim0;

unsafe extern "msp430-interrupt" fn tim0() {
  P1OUT.write(0x00);
}
```

which generates the following assembly:

``` asm
Disassembly of section __interrupt_vector_10:

0000fff2 <TIM0_VECTOR>:
    fff2:       10 c0           interrupt service routine at 0xc010

Disassembly of section .text:

0000c010 <_ZN3msp4tim017h3193b957fd6a4fd4E>:
    c010:       c2 43 21 00     mov.b   #0,     &0x0021 ;r3 As==00
    c014:       00 13           reti
        ...
```
2017-01-19 18:32:12 +00:00
bors
47965f51e6 Auto merge of #39180 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 11 pull requests

- Successful merges: #38457, #38922, #38970, #39039, #39091, #39115, #39121, #39149, #39150, #39151, #39165
- Failed merges:
2017-01-19 16:09:42 +00:00
Jorge Aparicio
e928c75847 add cfail test for the new feature gate 2017-01-19 08:15:05 -05:00
Guillaume Gomez
3946079d37 Rollup merge of #39165 - frewsxcv:slice, r=GuillaumeGomez
A few improvements to the slice docs.

* Simplify `Option::iter_mut` doc example.
* Document 'empty' corner-cases for `slice::{starts_with, ends_with}`.
* Indicate 'true' as code-like.
2017-01-19 11:56:12 +01:00
Guillaume Gomez
87482ee03a Rollup merge of #39151 - canndrew:feature-gate-uninhabited-references, r=brson
Feature gate `&Void`'s uninhabitedness.

Here's a totally crazy PR which should never be merged.
2017-01-19 11:56:11 +01:00
Guillaume Gomez
c593ff4ce5 Rollup merge of #39150 - birkenfeld:slice-doc, r=GuillaumeGomez
collections: update docs of slice get() and friends

Resubmit of #38216.

r? @GuillaumeGomez

BTW, instead of closing a PR just because it is old and the team member who offered to fix it up did not have the time to do so, why not ping them instead? (cc @alexcrichton)
2017-01-19 11:56:09 +01:00
Guillaume Gomez
2c044753f9 Rollup merge of #39149 - circuitfox:E0122-type-def-trait-bounds-where-clause, r=arielb1
E0122 should apply with where clauses

Fixes #39122
2017-01-19 11:56:08 +01:00
Guillaume Gomez
4603c0e37f Rollup merge of #39121 - grimreaper:eax/thethe, r=apasel422
minor typo fix

None
2017-01-19 11:56:06 +01:00
Guillaume Gomez
9aeccf3297 Rollup merge of #39115 - king6cong:master, r=nikomatsakis
consistent doc wording
2017-01-19 11:56:06 +01:00
Guillaume Gomez
ba76f5158c Rollup merge of #39091 - richard-imaoka:E0491-long-explanation, r=GuillaumeGomez
Add error explanation for E0491

Refs #32777

Please let me know if any question or anything doesn't look right about this.
2017-01-19 11:56:04 +01:00
Guillaume Gomez
7985ae0bb1 Rollup merge of #39039 - michaelwoerister:ignore-gdb-version, r=nrc
debuginfo: Ignore optimized enum tests for GDB versions that can't handle them.

Fixes https://github.com/rust-lang/rust/issues/38948.

r? @nrc
cc @Manishearth
2017-01-19 11:56:03 +01:00
Guillaume Gomez
223e084141 Rollup merge of #38970 - apasel422:may-dangle, r=pnkfelix
Deprecate `#[unsafe_destructor_blind_to_params]`

CC #34761

r? @pnkfelix
2017-01-19 11:56:02 +01:00
Guillaume Gomez
cabfb078b0 Rollup merge of #38922 - chris-morgan:fs-markdown-link-fix, r=steveklabnik
Fix a couple of bad Markdown links
2017-01-19 11:56:01 +01:00
Guillaume Gomez
ced04ff5c6 Rollup merge of #38457 - frewsxcv:include, r=GuillaumeGomez
Improvements to 'include' macro documentation.

None
2017-01-19 11:56:00 +01:00
bors
74c42ac173 Auto merge of #38464 - clarcharr:ip_cmp, r=sfackler
PartialEq and PartialOrd between IpAddr and Ipv[46]Addr.

PartialEq was rather useful, so, I figured that I'd implement it. I added PartialOrd for good measure.
2017-01-19 03:34:05 +00:00
Jorge Aparicio
6296d52ba6 calling convention for MSP430 interrupts
This calling convention is used to define interrup handlers on MSP430
microcontrollers. Usage looks like this:

``` rust
#[no_mangle]
#[link_section = "__interrupt_vector_10"]
pub static TIM0_VECTOR: unsafe extern "msp430-interrupt" fn() = tim0;

unsafe extern "msp430-interrupt" fn tim0() {
  P1OUT.write(0x00);
}
```

which generates the following assembly:

``` asm
Disassembly of section __interrupt_vector_10:

0000fff2 <TIM0_VECTOR>:
    fff2:       10 c0           interrupt service routine at 0xc010

Disassembly of section .text:

0000c010 <_ZN3msp4tim017h3193b957fd6a4fd4E>:
    c010:       c2 43 21 00     mov.b   #0,     &0x0021 ;r3 As==00
    c014:       00 13           reti
        ...
```
2017-01-18 20:42:54 -05:00
bors
2263d1ba29 Auto merge of #38712 - clarcharr:duration_sum, r=sfackler
Sum for Duration

Implemented the `Sum` trait for `Duration`. Seems reasonable.
2017-01-19 01:09:46 +00:00
Corey Farwell
c8822da79b A few improvements to the slice docs.
* Simplify `Option::iter_mut` doc example.
* Document 'empty' corner-cases for `slice::{starts_with, ends_with}`.
* Indicate 'true' as code-like.
2017-01-18 19:02:12 -05:00
Josh
d492433744 Add doctest to the proc-macro derive-test 2017-01-19 09:31:55 +11:00
Josh
c759aea5b3 Stop warning when doc testing proc macro crates
Add the actually_rustdoc option to the session that
is passed  to phase_2_configure_and_expand function
inside the rustdoc test module.

This prevents the warning code from triggering when
parsing proc_macro_derive attributes, just like when
`--test` is normally invoked.
2017-01-19 08:31:29 +11:00
Andrew Cann
2c6bc18610 Feature gate &Void's uninhabitedness.
References to empty types are only considered empty if feature(never_type) is
enabled.
2017-01-18 15:05:28 +08:00
Georg Brandl
871357a534 collections: update docs of slice get() and friends
for the new SliceIndex trait.  Also made the docs of the unchecked
versions a bit clearer; they return a reference, not an "unsafe
pointer".
2017-01-18 07:25:09 +01:00
Chris Stankus
5c58653e46 E0122 should apply with where clauses 2017-01-18 00:16:19 -06:00
bors
c8af93f090 Auto merge of #38168 - estebank:help-E0034, r=nrc
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)
  |     ^^^
```

Fix #37767.
2017-01-18 04:45:25 +00:00
bors
be1daa4a18 Auto merge of #39019 - nikomatsakis:issue-38919, r=eddyb
only consider value items when searching for methods, not types

Fixes #38919

r? @eddyb
2017-01-18 02:20:03 +00:00
Niko Matsakis
d82d4b66f2 tolerate None return from get_line 2017-01-17 17:56:03 -05:00
Niko Matsakis
2bade8133c more complete error message 2017-01-17 17:55:49 -05:00
Esteban Küber
fc774e629f Teach Diagnostics to highlight text 2017-01-17 14:28:53 -08:00
Brian Anderson
a0a4af139d 1.15 release notes 2017-01-17 22:20:26 +00:00
bors
c07a6ae77c Auto merge of #37972 - bluss:iter-find-is-on-a-roll, r=sfackler
Improve the slice iterator's searching methods

Improve all, any, find, position, rposition by explicitly unrolling the loop for the slice iterators.

- Introduce a few extension methods and functions for raw pointers make the new code easy to express
- Introduce helper methods `search_while, rsearch_while` that generalize all the searching methods

LLVM doesn't unroll the loop in `.find()` by default (clang is the same), so performance benefits a lot from explicit unrolling here. An iterator method without conditional exits (like `.fold()`) does not need this on the other hand.

One of the raw pointer extension methods is `fn post_inc(&mut self) -> Self` which is the rustic equivalent of “`ptr++`”, and it is a nice way to express the raw pointer loop (see commit 3).

Specific development notes about `search_while`: I tried both computing an end pointer "rounded" to 4, as well as the `ptrdistance >= 4` loop condition, ptrdistance was better. I tried handling the last 0-3 elements unrolled or with a while loop, the loop was better.
2017-01-17 21:52:03 +00:00
Martin Hafskjold Thoresen
90fbe155f2
Fix BinaryHeap place by only constructing vec::PlaceBack once 2017-01-17 19:25:48 +01:00
bors
bd8e9b0c82 Auto merge of #39109 - michaelwoerister:incr-comp-cache-cleanup, r=nikomatsakis
incr.comp.: Delete orphaned work-products.

The new partitioning scheme uncovered a hole in our incr. comp. cache directory garbage collection. So far, we relied on unneeded work products being deleted during the initial cache invalidation phase. However, we the new scheme, we get object files/work products that only contain code from upstream crates. Sometimes this code is not needed anymore (because all callers have been removed from the source) but because nothing that actually influences the contents of these work products had changed, we never deleted them from disk.

r? @nikomatsakis
2017-01-17 18:22:20 +00:00
bors
aedebfe77d Auto merge of #39100 - Mark-Simulacrum:fix-stage1, r=eddyb
Fix stage 1 tests broken because i128 doesn't work in stage 1

Broken by https://github.com/rust-lang/rust/pull/38992.
2017-01-17 14:38:29 +00:00
Richard S. Imaoka
c525094bad Add error explanation for E0491 2017-01-17 22:16:55 +09:00
bors
a167c042ab Auto merge of #39110 - petrochenkov:sum, r=eddyb
Merge ObjectSum and PolyTraitRef in AST/HIR + some other refactoring

`ObjectSum` and `PolyTraitRef` are the same thing (list of bounds), they exist separately only due to parser quirks. The second commit merges them.

The first commit replaces `Path` with `Ty` in (not yet supported) equality predicates. They are parsed as types anyway and arbitrary types can always be disguised as paths using aliases, so this doesn't add any new functionality.

The third commit uses `Vec` instead of `P<[T]>` in AST. AST is not immutable like HIR and `Vec`s are more convenient for it, unnecessary conversions are also avoided.

The last commit renames `parse_ty_sum` (which is used for parsing types in general) into `parse_ty`, and renames `parse_ty` (which is used restricted contexts where `+` is not permitted due to operator priorities or other reasons) into `parse_ty_no_plus`.

This is the first part of https://github.com/rust-lang/rust/issues/39085#issuecomment-272743755 and https://github.com/rust-lang/rust/issues/39080 focused on data changes and mechanical renaming, I'll submit a PR with parser changes a bit later.

r? @eddyb
2017-01-17 12:31:15 +00:00
bors
0825c96b14 Auto merge of #39095 - nagisa:fix-ub-in-testhelp, r=alexcrichton
Fix UB in test helpers

Macro expansion producing defined has undefined behavior in C/C++.
2017-01-17 10:10:32 +00:00
Eitan Adler
1cf9d6a7f2 minor typo fix 2017-01-17 00:18:45 -08:00
bors
7dfcac55bb Auto merge of #39050 - alexcrichton:travis-nightly, r=brson
travis: Pass --release-channel=nightly on deploy

This commit passes the `--release-channel=nightly` flag to all images which have
the `DEPLOY` flag set. This means that we'll name artifacts and the compiler
appropriately.

This reworks a bit how arguments are passed, but for now doesn't change what's
already being passed. Eventually we'll want to avoid enabling debug assertions
and llvm assertions for *all* releases, but I figure we can tackle that a little
bit more down the road.
2017-01-17 08:01:04 +00:00
Vadim Petrochenkov
66ef5f2bb5 Rename ObjectSum into TraitObject in AST/HIR 2017-01-17 10:41:44 +03:00
Austin Bonander
04ecee158c Move "completed feature gate checking" pass to after "name resolution" pass so proc-macro-attribute feature gate check can use resolve 2017-01-16 22:41:23 -08:00
Austin Bonander
68439614ba Fix feature_gate::find_lang_feature_issue() to not use unwrap() 2017-01-16 22:41:22 -08:00
Austin Bonander
375cbd20cf Implement #[proc_macro_attribute]
* Add support for `#[proc_macro]`

* Reactivate `proc_macro` feature and gate `#[proc_macro_attribute]` under it

* Have `#![feature(proc_macro)]` imply `#![feature(use_extern_macros)]`,
error on legacy import of proc macros via `#[macro_use]`
2017-01-16 22:41:22 -08:00