Commit Graph

53675 Commits

Author SHA1 Message Date
bors f1776fe244 Auto merge of #33927 - Manishearth:rollup, r=Manishearth
Rollup of 15 pull requests

- Successful merges: #33820, #33821, #33822, #33824, #33825, #33831, #33832, #33848, #33849, #33852, #33854, #33856, #33859, #33860, #33861
- Failed merges:
2016-05-28 07:22:51 -07:00
Manish Goregaokar fe9a91589e Rollup merge of #33856 - GuillaumeGomez:fmt_error, r=alexcrichton
Implement Error trait for fmt::Error type

Fixes #33827.

r? @alexcrichton

Just one last thing: I added a feature name, but don't hesitate to ask me to change it if you think it doesn't fit well.
2016-05-28 19:52:16 +05:30
Manish Goregaokar 81aeb0cdde Rollup merge of #33854 - petrochenkov:prefvis, r=eddyb
Apply visit_path to import prefixes by default

Overriding `visit_path` is not enough to visit all paths, some import prefixes are not visited and `visit_path_list_item` need to be overridden as well. This PR removes this catch, it should be less error prone this way. Also, the prefix is visited once now, not repeatedly for each path list item.

r? @eddyb
2016-05-28 19:52:16 +05:30
Manish Goregaokar edd7d422b7 Rollup merge of #33852 - arielb1:autoderef-iterator, r=eddyb
refactor autoderef to avoid prematurely registering obligations

Refactor `FnCtxt::autoderef` to use an external iterator and to not
register any obligation from the main autoderef loop, but rather to
register them after (and if) the loop successfully completes.

Fixes #24819
Fixes #25801
Fixes #27631
Fixes #31258
Fixes #31964
Fixes #32320
Fixes #33515
Fixes #33755

r? @eddyb
2016-05-28 19:52:16 +05:30
Manish Goregaokar 6e897d78ae Rollup merge of #33849 - ranma42:escape-iters-count, r=alexcrichton
Implement `count` for `EscapeUnicode`

and cleanup the code for `count` for `EscapeDefault` (instead of repeating the `match` for `size_hint` and `count`).

This PR marks EscapeUnicode and EscapeDefault as ExactSizeIterator. The constraints for the trait implementations held even before this PR, but I am not sure if this is something we want to guarantee/expose (I would love feedback on this, especially on what would be the appropriate way to handle stabilisation, if needed).

Part of #24214, split from #31049.

The test for `count` was added in #33103.
2016-05-28 19:52:16 +05:30
Manish Goregaokar 320dd04fab Rollup merge of #33832 - alexcrichton:android-memalign, r=luqmana
std: Use memalign, not posix_memalign, on Android

We've gotten requests to move our Android support as far back as API level 9
where unfortunately the `posix_memalign` API wasn't implemented yet. Thankfully,
however, the `memalign` API was and it appears to be usable with `free` on the
Android platform (see comments included in commit).

This should help fix some of the last few test failures when compiling against
API level 9.
2016-05-28 19:52:16 +05:30
Manish Goregaokar 0a6bf3744b Rollup merge of #33831 - diwic:patch-1, r=aturon
panic.rs: fix docs (recover -> catch_unwind)

The current docs are a bit inconsistent. First, change all references of "recover" to "catch_unwind" because the function was renamed. Second, consistently use the term "unwind safe" instead of "panic safe", "exception safe" and "recover safe" (all these terms were used previously).
2016-05-28 19:52:16 +05:30
Manish Goregaokar 0ed494e92e Rollup merge of #33822 - soltanmm:dot-vec-div-mag-square, r=nikomatsakis
Propagate obligations through projection

Up next: generating region obligations in inference.

r? @nikomatsakis
2016-05-28 19:52:15 +05:30
Manish Goregaokar fe19b473d2 Rollup merge of #33820 - jonathandturner:format_readability_updates, r=nikomatsakis
Increase spacing in error format for readability.

Two small tweaks that seem to help readability quite a bit:
* Add spacing header<->snippet, but use the |> on the side for visual consistency
* Fix #33819
* Fix #33763
* Move format-sensitive test (issue-26480 in cfail) to ui test

r? @nikomatsakis
2016-05-28 19:52:15 +05:30
bors 7d68b3d106 Auto merge of #33818 - alexcrichton:bump, r=nikomatsakis
mk: Bump version number

The 1.10 betas are now under way so we're now working on the 1.11 release.
2016-05-28 01:59:04 -07:00
bors f89c0c2f4b Auto merge of #33800 - nrc:save-fn-name, r=eddyb
save-analysis: use a function's short name
2016-05-27 20:45:46 -07:00
bors 8b012ed142 Auto merge of #33706 - jseyfried:refactor_cfg, r=nrc
Perform `cfg` attribute processing during macro expansion and fix bugs

This PR refactors `cfg` attribute processing and fixes bugs. More specifically:
 - It merges gated feature checking for stmt/expr attributes, `cfg_attr` processing, and `cfg` processing into a single fold.
  - This allows feature gated `cfg` variables to be used in `cfg_attr` on unconfigured items. All other feature gated attributes can already be used on unconfigured items.
 - It performs `cfg` attribute processing during macro expansion instead of after expansion so that macro-expanded items are configured the same as ordinary items. In particular, to match their non-expanded counterparts,
  - macro-expanded unconfigured macro invocations are no longer expanded,
  - macro-expanded unconfigured macro definitions are no longer usable, and
  - feature gated `cfg` variables on macro-expanded macro definitions/invocations are now errors.

This is a [breaking-change]. For example, the following would break:
```rust
macro_rules! m {
    () => {
        #[cfg(attr)]
        macro_rules! foo { () => {} }
        foo!(); // This will be an error

        macro_rules! bar { () => { fn f() {} } }
        #[cfg(attr)] bar!(); // This will no longer be expanded ...
        fn g() { f(); } // ... so that `f` will be unresolved.

        #[cfg(target_thread_local)] // This will be a gated feature error
        macro_rules! baz { () => {} }
    }
}

m!();
```

r? @nrc
2016-05-27 17:46:14 -07:00
Jeffrey Seyfried 53ab137841 Comment methods in `CfgFolder` 2016-05-27 23:57:02 +00:00
Jeffrey Seyfried 6b3edc2f89 Test that unconfigured macro-expanded macro invocations are not expanded. 2016-05-27 23:57:01 +00:00
bors 7bddce693c Auto merge of #33798 - locallycompact:lc/misleading-intentation, r=alexcrichton
Fix misleading intentation errors on gcc 6.0

Currently building with latest gcc results in the following error:

    compile: x86_64-unknown-linux-gnu/rt/miniz.o
    /home/lc/rust/src/rt/miniz.c: In function ‘tinfl_decompress’:
    /home/lc/rust/src/rt/miniz.c:578:9: error: this ‘for’ clause does not guard... [-Werror=misleading-indentation]
             for ( i = 0; i <= 143; ++i) *p++ = 8; for ( ; i <= 255; ++i) *p++ = 9; for ( ; i <= 279; ++i) *p++ = 7; for ( ; i <= 287; ++i) *p++ = 8;
             ^~~
    /home/lc/rust/src/rt/miniz.c:578:47: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘for’
             for ( i = 0; i <= 143; ++i) *p++ = 8; for ( ; i <= 255; ++i) *p++ = 9; for ( ; i <= 279; ++i) *p++ = 7; for ( ; i <= 287; ++i) *p++ = 8;
                                                   ^~~
    /home/lc/rust/src/rt/miniz.c: In function ‘tdefl_find_match’:
    /home/lc/rust/src/rt/miniz.c:1396:5: error: this ‘if’ clause does not guard... [-Werror=misleading-indentation]
         if (!dist) break; p = s; q = d->m_dict + probe_pos; for (probe_len = 0; probe_len < max_match_len; probe_len++) if (*p++ != *q++) break;
         ^~
    /home/lc/rust/src/rt/miniz.c:1396:23: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the ‘if’
         if (!dist) break; p = s; q = d->m_dict + probe_pos; for (probe_len = 0; probe_len < max_match_len; probe_len++) if (*p++ != *q++) break;
                           ^

This patch stops this.
2016-05-27 14:49:10 -07:00
bors 17b6261cc4 Auto merge of #33795 - srinivasreddy:lib_coll_test, r=nrc
run rustfmt on libcollections test module
2016-05-27 11:51:53 -07:00
bors ab7c35fa0f Auto merge of #33900 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 10 pull requests

- Successful merges: #33753, #33815, #33829, #33858, #33865, #33866, #33870, #33874, #33891, #33898
- Failed merges:
2016-05-27 03:56:19 -07:00
Guillaume Gomez 2c4fd94636 Rollup merge of #33898 - srinivasreddy:rustfmt_liblog, r=Manishearth
rustfmt on liblog
2016-05-27 10:50:05 +02:00
Guillaume Gomez ee0821a371 Rollup merge of #33891 - polachok:faster-ipv4-cmp, r=bluss
Make Ipv4Addr cmp() faster

Closes #33885
2016-05-27 10:50:05 +02:00
Guillaume Gomez 6636dcc2ca Rollup merge of #33874 - Byron:patch-1, r=alexcrichton
Add `make tips` as useful make target

By accident, I found the `make tips` target, which helped me to gain more insight on how to work with the system more quickly.
2016-05-27 10:50:05 +02:00
Guillaume Gomez c04e838eb5 Rollup merge of #33870 - jseyfried:ice-issue-33569, r=pnkfelix
Fix ICE on parsing a bad metavariable in a macro definition

Fixes #33569, fixes #33728.
r? @pnkfelix
2016-05-27 10:50:04 +02:00
Guillaume Gomez 43b430ed35 Rollup merge of #33866 - GuillaumeGomez:err-codes, r=jonathandturner
Add new error code tests

r? @steveklabnik
2016-05-27 10:50:04 +02:00
Guillaume Gomez 4ffebe72bf Rollup merge of #33865 - GuillaumeGomez:E0084, r=jonathandturner
Improve E0084 error explanation

r? @Manishearth

cc @steveklabnik
2016-05-27 10:50:03 +02:00
Guillaume Gomez caa732a725 Rollup merge of #33858 - liigo:patch-7, r=GuillaumeGomez
Point out the clone operation in summary line docs of `Vec::extend_from_slice`
2016-05-27 10:50:03 +02:00
Guillaume Gomez 98e768fa84 Rollup merge of #33829 - GuillaumeGomez:stability-css, r=steveklabnik
Fix invalid background color in stability elements

r? @steveklabnik
2016-05-27 10:50:03 +02:00
Guillaume Gomez 967c3880d8 Rollup merge of #33815 - carols10cents:trait-documentation-clarifications, r=steveklabnik
Trait documentation clarifications

Hi! I've felt a bit of friction lately in figuring out how to write custom implementations of the `derive`able traits, so I decided to add to the docs :)

The docs for `Copy` are already excellent-- clear, useful sections that I only reordered a bit-- they're now:

* General explanation
* When can my type be `Copy`?
* When can my type _not_ be `Copy`?
* When should my type be `Copy`?
* Derivable
* How can I implement `Copy`?

I didn't add all these sections for all the traits, but I did make sure all the derivable traits had a consistent "Derivable" section that explained what the derived implementation does and a "How can I implement" section that has an example.

Please check me for correctness-- I tried to do research to make sure I was saying accurate things but I'm still learning! ❤️ I'd also love suggestions on information to add that is still missing-- I think these traits are important and deserve to have awesome docs!
2016-05-27 10:50:03 +02:00
Guillaume Gomez 575149561e Rollup merge of #33753 - mmatyas:armtestfix, r=alexcrichton
Fix `asm-misplaced-option` on ARM/AArch64

This fixes rust-lang/rust#33737. Of course, since we don't run `make check` for ARM cross builds, you probably won't notice it.
2016-05-27 10:50:02 +02:00
bors 36d5dc7c9b Auto merge of #33864 - Manishearth:breaking-batch, r=Manishearth
Batch up libsyntax breaking changes

cc https://github.com/rust-lang/rust/issues/31645
2016-05-26 22:46:08 -07:00
Manish Goregaokar 63dfbdbc1b Rollup merge of #33839 - kamalmarhubi:codemape-get-filemap-option, r=nmatsakis
This is more idiomatic, putting the caller in charge of whether or not
to panic.
2016-05-27 10:02:45 +05:30
Manish Goregaokar 7905452f08 Rollup merge of #33644 - petrochenkov:selfast, r=nrc
The AST part of https://github.com/rust-lang/rust/pull/33505.
https://github.com/rust-lang/rust/pull/33505 isn't landed yet, so this PR is based on top of it.

r? @nrc

plugin-[breaking-change] cc #31645 @Manishearth
2016-05-27 09:57:11 +05:30
Manish Goregaokar 35785712cd Rollup merge of #33639 - petrochenkov:dotdot, r=nmatsakis
cc https://github.com/rust-lang/rust/issues/33627
r? @nikomatsakis

plugin-[breaking-change] cc https://github.com/rust-lang/rust/issues/31645 @Manishearth
2016-05-27 09:57:00 +05:30
Manish Goregaokar a70880fea9 Rollup merge of #33351 - birkenfeld:loop-label-spans, r=pnkfelix
This makes the \"shadowing labels\" warning *not* print the entire loop as a span, but only the lifetime.

Also makes #31719 go away, but does not fix its root cause (the span of the expanded loop is still wonky, but not used anymore).
2016-05-27 09:56:47 +05:30
Srinivas Reddy Thatiparthy 38bbb60c8c rustfmt on liblog 2016-05-27 08:06:17 +05:30
Jeffrey Seyfried 0558df24af Refactor `expand_expr` 2016-05-27 00:01:04 +00:00
Jeffrey Seyfried 1aa34e0b5f Strip unconfigured items during macro expansion 2016-05-27 00:01:04 +00:00
Jeffrey Seyfried 25c733360b Update spans' `expn_id` during the marking fold 2016-05-27 00:01:04 +00:00
Jeffrey Seyfried 3636ce7875 Test that a feature gated cfg variable in a `cfg_attr` on an unconfigured item is allowed 2016-05-27 00:01:04 +00:00
Jeffrey Seyfried 15d5074a34 Process `cfg_attr` attributes on non-optional expressions 2016-05-27 00:01:04 +00:00
Jeffrey Seyfried d3a0e1783c Move cfg_attr processing and stmt/expr attribute gated feature checking into `StripUnconfigured` 2016-05-26 23:54:05 +00:00
Jeffrey Seyfried a306f85df9 Implement `CfgFolder` directly instead of passing a closure to `strip_items` 2016-05-26 23:23:11 +00:00
Jeffrey Seyfried f3e80760e9 Refactor `CfgFolder::in_cfg` -> `CfgFolder::configure` 2016-05-26 23:23:09 +00:00
Jeffrey Seyfried 79854395ca Introduce `CfgFolder` trait 2016-05-26 23:23:07 +00:00
Jeffrey Seyfried 7a42e46eec Refactor the `syntax::config::fold_*` functions into methods 2016-05-26 23:23:06 +00:00
Jeffrey Seyfried 29c105964b Add and use `HasAttrs` trait 2016-05-26 23:23:01 +00:00
Vadim Petrochenkov 0ca9bf3940 Fix overflow in type checking of tuple patterns 2016-05-26 23:43:02 +03:00
Alexander Polyakov 7ba0016030 Make Ipv4Addr cmp() faster 2016-05-26 22:38:33 +03:00
bors 97e3a2401e Auto merge of #33783 - michaelwoerister:collector-cleanup-2, r=nikomatsakis
trans::collector: Remove some redundant calls to erase_regions().

r? @Aatch
2016-05-26 11:28:45 -07:00
bors dc91467db0 Auto merge of #33766 - jseyfried:cleanup_expansion, r=nrc
Cleanup macro expansion and improve diagnostics

Cleanup macro expansion and improve diagnostics. Fixes #33709.
r? @nrc
2016-05-26 08:32:21 -07:00
bors 3c795e08d6 Auto merge of #33872 - nagisa:undef-is-llvm-for-sigsegv, r=eddyb
Fix handling of FFI arguments

r? @eddyb @nikomatsakis or whoever else.

cc @alexcrichton @rust-lang/core

The strategy employed here was to essentially change code we generate from

```llvm
  %s = alloca %S ; potentially smaller than argument, but never larger
  %1 = bitcast %S* %s to { i64, i64 }*
  store { i64, i64 } %0, { i64, i64 }* %1, align 4
```

to

```llvm
  %1 = alloca { i64, i64 } ; the copy of argument itself
  store { i64, i64 } %0, { i64, i64 }* %1, align 4
  %s = bitcast { i64, i64 }* %1 to %S* ; potentially truncate by casting to a pointer of smaller type.
```
2016-05-26 02:52:49 -07:00
Simonas Kazlauskas 5b404523dd Fix stores codegen pass 2016-05-26 12:41:40 +03:00