Commit Graph

32332 Commits

Author SHA1 Message Date
Keegan McAllister
f85e4f75b9 Add a forbid-output property in cfail tests 2014-09-17 11:18:14 -07:00
bors
ad9ed40e7f auto merge of #17264 : bkoropoff/rust/issue-17252, r=nick29581
Recursive items are currently detected in the `check_const` pass which runs after type checking.  This means a recursive static item used as an array length will cause type checking to blow the stack.  This PR separates the recursion check out into a separate pass which is run before type checking.

Closes issue #17252

r? @nick29581
2014-09-17 14:06:19 +00:00
bors
aac078dca5 auto merge of #17254 : gamazeps/rust/issue17210, r=alexcrichton
Closes #17210
2014-09-17 12:06:22 +00:00
bors
e719db24a0 auto merge of #17247 : huonw/rust/toggle-clone, r=alexcrichton
This needs a clone otherwise each successive insertion detaches `toggle`
from the previous position.

Fixes #17125.
2014-09-17 10:21:17 +00:00
bors
12b757b370 auto merge of #17246 : bkoropoff/rust/issue-17216, r=pnkfelix
Trans the cleanup scope of for loop bindings so we don't leak resources.  Regression test included.

Closes #17216
2014-09-17 08:31:18 +00:00
bors
88cb454b91 auto merge of #17160 : nick29581/rust/front, r=pcwalton
r?
2014-09-17 05:56:15 +00:00
Nick Cameron
3a01d0f1e3 rebasing fixes 2014-09-17 16:53:20 +12:00
Nick Cameron
74db87b99d move feature_gate to libsyntax 2014-09-17 16:53:20 +12:00
Nick Cameron
375c95b7ad move std_inject to libsyntax 2014-09-17 16:53:20 +12:00
Nick Cameron
520671f150 move most of front to libsyntax 2014-09-17 16:53:20 +12:00
bors
ff613abaa2 auto merge of #17227 : tshepang/rust/stronger-break, r=aturon
Remove trailing whitespace while at it
2014-09-17 03:46:15 +00:00
bors
b75b0f7923 auto merge of #17223 : retep998/rust/into_string, r=huonw
Replaces some usage of `.to_string()` with `.into_string()`
2014-09-17 01:16:14 +00:00
bors
0e784e1684 auto merge of #17268 : aturon/rust/mut-conventions, r=alexcrichton
As per [RFC 52](https://github.com/rust-lang/rfcs/blob/master/active/0052-ownership-variants.md), use `_mut` suffixes to mark mutable variants, and `into_iter` for moving iterators. Additional details and motivation in the RFC.

Note that the iterator *type* names are not changed by this RFC; those are awaiting a separate RFC for standardization.

Closes #13660
Closes #16810

[breaking-change]
2014-09-16 23:26:11 +00:00
Aaron Turon
fc525eeb4e Fallout from renaming 2014-09-16 14:37:48 -07:00
bors
ceb9bbfbf5 auto merge of #17213 : mo/rust/fix_typos, r=aturon 2014-09-16 21:36:08 +00:00
Aaron Turon
d8dfe1957b Align with _mut conventions
As per [RFC
52](https://github.com/rust-lang/rfcs/blob/master/active/0052-ownership-variants.md),
use `_mut` suffixes to mark mutable variants, and `into_iter` for moving
iterators.

[breaking-change]
2014-09-16 11:46:52 -07:00
bors
828e075abd auto merge of #17266 : Gankro/rust/vec-move, r=alexcrichton
Seems to correctly report exact size, so it should claim to do so formally.
2014-09-16 17:06:00 +00:00
bors
946654a721 auto merge of #17197 : nikomatsakis/rust/issue-5527-trait-reform-revisited, r=pcwalton
This patch does not make many functional changes, but does a lot of restructuring towards the goals of #5527. This is the biggest patch, basically, that should enable most of the other patches in a relatively straightforward way.

Major changes:

- Do not track impls through trans, instead recompute as needed.
- Isolate trait matching code into its own module, carefully structure to distinguish various phases (selection vs confirmation vs fulfillment)
- Consider where clauses in their more general form
- Integrate checking of builtin bounds into the  trait matching process, rather than doing it separately in kind.rs (important for opt-in builtin bounds)

What is not included:

- Where clauses are still not generalized. This should be a straightforward follow-up patch.
- Caching. I did not include much caching. I have plans for various kinds of caching we can do. Should be straightforward. Preliminary perf measurements suggested that this branch keeps compilation times roughly what they are.
- Method resolution. The initial algorithm I proposed for #5527 does not work as well as I hoped. I have a revised plan which is much more similar to what we do today.
- Deref vs deref-mut. The initial fix I had worked great for autoderef, but not for explicit deref. 
- Permitting blanket impls to overlap with specific impls. Initial plan to consider all nested obligations before considering an impl to match caused many compilation errors. We have a revised plan but it is not implemented here, should be a relatively straightforward extension.
2014-09-16 15:25:59 +00:00
bors
cdd46f8592 auto merge of #17245 : sfackler/rust/enumset-show, r=alexcrichton 2014-09-16 13:41:00 +00:00
bors
c09437ab2d auto merge of #17244 : spastorino/rust/patch-1, r=alexcrichton 2014-09-16 11:11:03 +00:00
bors
e6a3dabe43 auto merge of #17232 : untitaker/rust/patch-1, r=alexcrichton
The wording is correct if you consider that two of these lines were extracted from the original example. It still tripped me up while reading, so i just removed any reference to the linecount.
2014-09-16 09:26:03 +00:00
bors
3212d70302 auto merge of #17280 : thestinger/rust/heap, r=pcwalton 2014-09-16 04:56:01 +00:00
bors
f8426e2e21 auto merge of #17288 : alexcrichton/rust/change-snap, r=brson
I'm rotating in some CentOS 5.10 bots so we *actually* build on Linux 2.6.18
like we advertise doing so. Currently the snapshots are incompatible with CentOS
5.10 due to snapshots requiring glibc 2.6 and CentOS 5.10 having glibc 2.5.

It turns out that rustc only requires *one* symbol from glibc 2.6, which is
`futimens`. The rust distribution itself does not use this symbol, but LLVM
conditionally detects it and then uses it. This symbol isn't even called as part
of the compilation process, so we don't even need it!

The new snapshot was generated following these instructions [1]:

1. Download the current x86_64 linux snapshot and unpack it.
2. Open the rustc binary in a hex editor.
3. Change the linkage against glibc 2.6 from strong to *weak*
4. Write changes and re-run src/etc/make-snapshot.py
5. Upload new tarball to S3

On CentOS 5.10 a warning is printed each time the snapshot runs that the symbol
cannot be found (anyone with glibc 2.6+ does not have this warning printed). The
key part is that we can *bootstrap* on CentOS 5.10 at this point. The next
snapshot will be naturally compatible with glibc 2.3 (even older!) and will not
need to be manually edited.

[1]: http://jamesbond3142.no-ip.org/wiki/wiki.cgi/NewAppsOnOldGlibc
2014-09-16 02:26:01 +00:00
Alex Crichton
ba0c100f3b Change the last linux 64-bit snapshot
I'm rotating in some CentOS 5.10 bots so we *actually* build on Linux 2.6.18
like we advertise doing so. Currently the snapshots are incompatible with CentOS
5.10 due to snapshots requiring glibc 2.6 and CentOS 5.10 having glibc 2.5.

It turns out that rustc only requires *one* symbol from glibc 2.6, which is
`futimens`. The rust distribution itself does not use this symbol, but LLVM
conditionally detects it and then uses it. This symbol isn't even called as part
of the compilation process, so we don't even need it!

The new snapshot was generated following these instructions [1]:

1. Download the current x86_64 linux snapshot and unpack it.
2. Open the rustc binary in a hex editor.
3. Change the linkage against glibc 2.6 from strong to *weak*
4. Write changes and re-run src/etc/make-snapshot.py
5. Upload new tarball to S3

On CentOS 5.10 a warning is printed each time the snapshot runs that the symbol
cannot be found (anyone with glibc 2.6+ does not have this warning printed). The
key part is that we can *bootstrap* on CentOS 5.10 at this point. The next
snapshot will be naturally compatible with glibc 2.3 (even older!) and will not
need to be manually edited.

[1]: http://jamesbond3142.no-ip.org/wiki/wiki.cgi/NewAppsOnOldGlibc
2014-09-15 18:14:26 -07:00
Niko Matsakis
eafeb335a0 Update docs to include Sized trait, which is needed 2014-09-15 18:52:20 -04:00
Daniel Micay
d206f05132 remove the closure_exchange_malloc lang item 2014-09-15 18:16:33 -04:00
bors
63eaba24d6 auto merge of #17221 : bkoropoff/rust/strinterner-unsafe, r=sfackler
The `StrInterner::clear()` method takes self immutably but can invalidate references returned by `StrInterner::get_ref`. Since `get_ref` is unused, just remove it.

Closes #17181
2014-09-15 21:56:00 +00:00
Martin Olsson
7caf2ab802 Fix two typos 2014-09-15 23:04:08 +02:00
Daniel Micay
84b37374bf heap: optimize EMPTY to avoid relocations
Sized deallocation makes it pointless to provide an address that never
overlaps with pointers returned by an allocator. Code can branch on the
capacity of the allocation instead of a comparison with this sentinel.

This improves the situation in #8859, and the remaining issues are only
from the logging API, which should be disabled by default in optimized
release builds anyway along with debug assertions. The remaining issues
are part of #17081.

Closes #8859
2014-09-15 16:48:20 -04:00
Daniel Micay
396f910617 heap: rm out-of-date FIXMEs 2014-09-15 15:28:25 -04:00
Niko Matsakis
48bc291a80 silence various warnings in stdlib, no idea why they suddenly started 2014-09-15 15:28:12 -04:00
Niko Matsakis
a2b95624fd add Send bound on impl because stricter trait checking requires it 2014-09-15 15:28:12 -04:00
Niko Matsakis
5ba0196cb8 misc ppaux changes 2014-09-15 15:28:12 -04:00
Niko Matsakis
688ddf7915 typeck/kind -- stop using old trait framework.
- Unify the "well-formedness" checking that typeck was already doing with what
  was taking place in kind.
- Move requirements that things be sized into typeck.
- I left the checking on upvars in kind, though I think it should eventually be
  refactored into regionck (which would perhaps be renamed).

This reflects a general plan to convert typeck so that it registers
obligations or other pending things for conditions it cannot check
eventually. This makes it easier to identify all the conditions that
apply to an AST expression, but can also influence inference in somec
cases (e.g., `Send` implies `'static`, so I already had to promote a lot
of the checking that `kind.rs` was doing into typeck, this branch just
continues the process).
2014-09-15 15:28:12 -04:00
Niko Matsakis
088c94ae96 trans -- stop tracking vtables precisely, instead recompute as needed. 2014-09-15 15:28:12 -04:00
Niko Matsakis
6349a61231 Port coherence to use the new trait matching code 2014-09-15 15:28:12 -04:00
bors
382fc45759 auto merge of #17199 : jakub-/rust/issues-that-need-tests, r=alexcrichton
Closes #7813.
Closes #10902.
Closes #11374.
Closes #11714.
Closes #12920.
Closes #13202.
Closes #13624.
Closes #14039.
Closes #15730.
Closes #15783.
2014-09-15 19:10:55 +00:00
Niko Matsakis
c5754f3971 Guts of the new trait matching algorithm, not yet in use 2014-09-15 14:58:49 -04:00
Niko Matsakis
713cf373c1 Take core as a dependency on librlibc. This is needed so that it can
see the lang-items for Sized etc. @acrichto and @thestinger had no
objections.
2014-09-15 14:58:49 -04:00
Niko Matsakis
b88f86782e Update error messages in compile-fail tests 2014-09-15 14:58:49 -04:00
bors
a8d478db51 auto merge of #17208 : kmcallister/rust/llvm-diagnostics, r=thestinger
I would like to map this information back to AST nodes, so that we can print remarks with spans, and so that remarks can be enabled on a per-function basis.  Unfortunately, doing this would require a lot more code restructuring — for example, we currently throw away the AST map and lots of other information before LLVM optimizations run.  So for the time being, we print the remarks with debug location strings from LLVM.  There's a warning if you use `-C remark` without `--debuginfo`.

Fixes #17116.
2014-09-15 16:56:03 +00:00
Jakub Wieczorek
8a4ef62570 Add tests for a few A-needstest issues
Closes #7813.
Closes #10902.
Closes #11374.
Closes #11714.
Closes #12920.
Closes #13202.
Closes #13624.
Closes #14039.
Closes #15730.
Closes #15783.
2014-09-15 18:09:24 +02:00
bors
8e2860407b auto merge of #16887 : steveklabnik/rust/guide_iterators, r=alexcrichton
This isn't ready to merge yet.

The 'containers and iterators' guide is basically just a collection of stuff that should be in the module definitions. So I'm moving the guide to just an 'iterators' guide, and moved the info that was there into the right places.

So, is this a good path forward, and is all of the information still correct?
2014-09-15 15:11:12 +00:00
bors
e73156fe32 auto merge of #17200 : brson/rust/wintrip-w64, r=cmr
This updates our build system to prefer `i686-w64-mingw32` as the 32-bit windows triple instead of `i686-pc-mingw32`. This is an interim step to make the build artifacts consistent until https://github.com/rust-lang/rust/issues/15717 is done.
2014-09-15 12:56:13 +00:00
bors
1f5ee97184 auto merge of #17192 : skade/rust/fix-osx-linking, r=alexcrichton
Don't pass -fno-use-linker-plugin on OS X as clang does not accept it.

clang fails linking with:

```
error: linking with `cc` failed: exit code: 1
... arg list omitted...
note: clang: error: unknown argument: '-fno-use-linker-plugin' [-Wunused-command-line-argument-hard-error-in-future]
clang: note: this will be a hard error (cannot be downgraded to a warning) in the future
```

clang version:

```
$ clang -v
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.2.0
Thread model: posix
```
2014-09-15 09:56:11 +00:00
bors
3e7e2af472 auto merge of #17256 : alexcrichton/rust/issue-17183, r=sfackler
This file is touched during the build process and will trigger more rebuilds
than necessary.

Closes #17183
2014-09-15 07:06:09 +00:00
Florian Gilcher
e9c4efb1bf Only pass -fno-use-linker-plugin on Windows
Only pass -fno-use-linker-plugin on Windows where it avoids pulling in
dependencies. Passing it to clang on OS X and Linux would make it fail
though.
2014-09-15 07:12:52 +02:00
bors
e4771d142b auto merge of #16853 : tbu-/rust/pr_mapinplace, r=aturon
This is implemented using a new struct PartialVec which implements the proper
drop semantics in case the conversion is interrupted by an unwind.

For the old pull requests, see #15302, #16369.
2014-09-15 04:46:13 +00:00
Brian Koropoff
0818955905 Add regression test for issue #17252 2014-09-14 20:58:34 -07:00
Brian Koropoff
83b7cb7ceb Separate static item recursion check into its own pass
This new pass is run before type checking so that recursive items
are detected beforehand.  This prevents going into an infinite
recursion during type checking when a recursive item is used in
an array type.

As a bonus, use `span_err` instead of `span_fatal` so multiple
errors can be reported.

Closes issue #17252
2014-09-14 20:56:07 -07:00