Commit Graph

35026 Commits

Author SHA1 Message Date
Luqman Aden
04a02ffb94 librustc: Respect no-compiler-rt target option for static libs as well. 2014-11-11 20:24:17 -05:00
Luqman Aden
27ea11eda8 librustc: Allow linkage attribute on any statics, not just foreign statics. 2014-11-11 20:24:17 -05:00
Aaron Turon
8352195426 Update tests for new stability inheritance rules 2014-11-11 15:06:54 -08:00
Aaron Turon
5b895a833a rustc: do not inherit #[stable]
This patch tweaks the stability inheritance infrastructure so that
`#{stable]` attributes are not inherited. Doing so solves two problems:

1. It allows us to mark module *names* as stable without accidentally
marking the items they contain as stable.

2. It means that a `#[stable]` attribution must always appear directly
on the item it applies to, which makes it easier for reviewers to catch
changes to stable APIs.

Fixes #17484
2014-11-11 15:06:54 -08:00
bors
e82f60eb47 auto merge of #18813 : csherratt/rust/add-encode-decode-vecmap, r=alexcrichton 2014-11-11 22:37:05 +00:00
Barosl Lee
5969bf663e Fix documentation bug
The first paragraph must be separated from the next paragraph.
Otherwise, rustdoc will consider the content of the latter as part of
the title.
2014-11-12 03:48:42 +09:00
Patrick Walton
e6e58e43f8 libsyntax: Forbid type parameters in field expressions.
This breaks code like:

    struct Foo {
        x: int,
    }

    let f: Foo = ...;
    ... f.x::<int> ...

Change this code to not contain an unused type parameter. For example:

    struct Foo {
        x: int,
    }

    let f: Foo = ...;
    ... f.x ...

Closes #18680.

[breaking-change]
2014-11-11 10:45:59 -08:00
Barosl Lee
8bf77fa786 Fix remaining documentation to reflect fail!() -> panic!()
Throughout the docs, "failure" was replaced with "panics" if it means a
task panic. Otherwise, it remained as is, or changed to "errors" to
clearly differentiate it from a task panic.
2014-11-12 03:36:09 +09:00
bors
351f7afd06 auto merge of #18793 : swgillespie/rust/master, r=alexcrichton
I noticed today that `move` wasn't getting highlighted in my editor of choice (emacs), so I went ahead and added it as a keyword in the emacs, vim, and kate editor files. Apparently it has already been done for gedit.
2014-11-11 18:26:56 +00:00
Michael Sproul
7f0b9d4465 test: Rename files, fail -> panic. 2014-11-11 09:36:12 -08:00
bors
8f87538786 auto merge of #18821 : arielb1/rust/fnv-hash-map, r=eddyb
This should improve performance
2014-11-11 16:22:04 +00:00
bors
5d29209bda auto merge of #18808 : ebfe/rust/lint-names, r=alexcrichton 2014-11-11 12:21:59 +00:00
bors
5c058418df auto merge of #18797 : vadimcn/rust/prefer-bundled2, r=alexcrichton
Based on Windows bundle feedback we got to date, 
- We *do* want to prefer the bundled linker: The external one might be for the wrong architecture (e.g. 32 bit vs 64 bit).  On the other hand, binutils don't add many new features these days, so using an older bundled linker is not likely to be a problem.
- We *do* want to prefer bundled libraries: The external ones might not have the symbols we expect (e.g. what's needed for DWARF exceptions vs SjLj).  Since `-L rustlib/<triple>/lib` appears first on the linker command line, it's a good place to keep our platform libs that we want to be found first.

Closes #18325, closes #17726.
2014-11-11 10:12:00 +00:00
Falco Hirschenberger
7dab903725 Set exceeding bitshifts lint to deny
Discussed in #18587
2014-11-11 10:41:53 +01:00
Sean Gillespie
27774e8e24 Add 'move' keyword to emacs, kate, and vim editor modes. 2014-11-10 23:46:36 -08:00
bors
d962fb0ec8 auto merge of #18789 : cuviper/rust/vim-move, r=alexcrichton
It used to be in `rustKeyword`, until commit 5c75f210ba removed it, and then #18782 restored it again.  However, this is now a closure modifier, and I think moving it to `rustStorage` is more appropriate to highlight it similarly to `mut`, `ref`, and the `&` sigil.
2014-11-11 07:16:56 +00:00
bors
66c3c8e3e6 auto merge of #18766 : liigo/rust/improve-inner-attr-msg, r=huonw
for the code:
```
use std::io;

#![crate_type="rlib"] // ERROR: an inner attribute is not permitted in this context

fn say_hello() {
	println!("hello");
}
```

this PR provides another note to help programmer fixing this error more easily:
```
hello.rs:6:3: 6:4 error: an inner attribute is not permitted in this context
hello.rs:6 #![crate_type="rlib"]
             ^
hello.rs:6:3: 6:4 note: put inner attribute in top of file or block
hello.rs:6 #![crate_type="rlib"]
             ^
```
2014-11-11 04:26:57 +00:00
Michael Sproul
837dd14de3 Add optional messages to the unreachable macro.
Closes #18842.
2014-11-10 19:35:25 -08:00
bors
60820ba528 auto merge of #18753 : jbcrail/rust/fix-deprecated-enum-set, r=alexcrichton
I renamed the deprecated methods, resulting from the collection reform.
2014-11-11 02:11:54 +00:00
Liigo Zhuang
0a52cc3534 syntax: improve message for misused inner attributes 2014-11-11 08:53:26 +08:00
Murarth
67a694443e Add regression test for #18566 2014-11-10 16:47:32 -07:00
Aaron Turon
5f09a50e8f rustdoc: revise method counts in stability summary
Previously, the stability summary page attempted to associate impl
blocks with the module in which they were defined, rather than the
module defining the type they apply to (which is usually, but not
always, the same). Unfortunately, due to the basic architecture of
rustdoc, this meant that impls from re-exports were not being counted.

This commit makes the stability summary work the same way that rustdoc's
rendered output does: all methods are counted alongside the type they
apply to, no matter where the methods are defined.

In addition, for trait impl blocks only the stability of the overall
block is counted; the stability of the methods within is not
counted (since that stability level is part of the trait definition).

Fixes #18812
2014-11-10 15:36:03 -08:00
bors
40fb87d40f auto merge of #18857 : brson/rust/winescapefixes, r=alexcrichton 2014-11-10 23:01:57 +00:00
Brian Anderson
7c36336c6f mk: Fix configuration of version commit information
Commit bec2ee77f7 started quoting paths
discovered as part of the `probe` function, which includes git.  The
`make` `wildcard` function appears to be incompatible with quoted
paths so this check in the makefile now fails. Employing `wildcard`
here appears to only re-verify that git actually exists, which the
configure script already did, so I've just removed it.

Additionally, with the quoted paths the `subst` function should no
longer be needed, so I've removed it as well.

Closes #18771
2014-11-10 14:57:21 -08:00
Daniel Micay
cd17ba4c12 note the intent of reforming task spawning 2014-11-10 17:19:06 -05:00
Josh Stone
e94912aa85 vim: move 'move' to rustStorage 2014-11-10 13:48:17 -08:00
Vitali Haravy
c254957078 Attempt to fix the problem with failing distcheck. 2014-11-10 21:05:34 +00:00
bors
f89e975685 auto merge of #18287 : michaelsproul/rust/triemap-collection-views, r=bstrie
I've implemented the new collection views API for TrieMap. I more or less followed the approach set out by @Gankro in BTreeMap, by using a `SearchStack`. There's quite a bit of unsafe code, but I've wrapped it safely where I think is appropriate. I've added tests to ensure everything works, and performance seems quite good.

```
test trie::bench_map::bench_find                           ... bench:     67879 ns/iter (+/- 4192)
test trie::bench_map::bench_find_entry                     ... bench:    186814 ns/iter (+/- 18748)
test trie::bench_map::bench_insert_large                   ... bench:    716612 ns/iter (+/- 160121)
test trie::bench_map::bench_insert_large_entry             ... bench:    851219 ns/iter (+/- 20331)
test trie::bench_map::bench_remove                         ... bench:    838856 ns/iter (+/- 27998)
test trie::bench_map::bench_remove_entry                   ... bench:    981711 ns/iter (+/- 53046)
```

Using an entry is slow compared to a plain find, but is only ~15% slower for inserts and removes, which is where this API is most useful. I'm tempted to remove the standalone `remove` function in favour of an entry-based approach (to cut down on complexity).

I've added some more comments to the general part of the code-base, which will hopefully help the next person looking over this. I moved the three key structures to the top of the file so that the nesting structure is clearly visible, and renamed `Child<T>` to `TrieNode<T>` and `TrieNode<T>` to `InternalNode<T>` to improve clarity. If these changes are creeping, I'm happy to revert them.

Let me know if my use of `fail!` is ok, I was a little unsure of how specific to be. Some of the data-structures have various invariants that shouldn't be broken, so using `fail!` seemed appropriate.

## Still to do

* Modernise iterators (make them double-ended).
* Make the keys generic, or rename this data-structure (see: https://github.com/rust-lang/rust/issues/14902).
* Possibly move this code out of libcollections. [Searching Github for TrieMap turns up very few real results.][triemap-search]

Related issues: https://github.com/rust-lang/rust/issues/18009 and https://github.com/rust-lang/rust/issues/17320

[triemap-search]: https://github.com/search?utf8=%E2%9C%93&q=TrieMap+language%3ARust&type=Code&ref=searchresults
2014-11-10 20:21:53 +00:00
Michael Sproul
f52e2bd32f Implement collection views API for TrieMap. 2014-11-10 10:39:44 -08:00
Michael Gehring
f54f8b3c29 Fix 'renamed lint' warnings 2014-11-10 17:28:23 +01:00
bors
a30b72bb14 auto merge of #18802 : bkoropoff/rust/issue-18769, r=luqmana
Drill down the loan path for `McDeclared` references as well since it might lead to an upvar.  Closes #18769
2014-11-10 16:12:03 +00:00
bors
f18757305a auto merge of #18795 : haberman/rust/master, r=cmr
Previously Int inherited from PartialOrd (via Primitive)
but not Ord.  But integers have a total order, so
inheriting from Ord is appropriate. Fixes #18776.
2014-11-10 14:07:00 +00:00
Manish Goregaokar
37afc528ea Document ast::Ty_ 2014-11-10 19:14:04 +05:30
bors
221115ceee auto merge of #18792 : sfackler/rust/struct-variants, r=alexcrichton
We need a snapshot before the parser can be adjusted.
2014-11-10 11:06:54 +00:00
Jeff Parsons
2df9a085bd Rogue 'panic' -> 'fail' in guide.
Should refer to handling panicking tasks like any other computation
that may _fail_, not any other computation that may _panic_.
2014-11-10 21:20:11 +11:00
Adam Szkoda
1d01f3715a Fix broken documentation link 2014-11-10 08:22:10 +01:00
bors
830c82dd74 auto merge of #18782 : netvl/rust/update-vim-syntax, r=alexcrichton
`as` (already for a long time) and `move` (which was only added recently, AFAIK) are not marked as keywords in Vim syntax file, so they are not highlighted as keywords in Rust sources. This PR fixes this.
2014-11-10 07:01:49 +00:00
bors
e575cff77d auto merge of #18781 : klutzy/rust/cross, r=cmr
cc #12859
2014-11-10 04:41:49 +00:00
Ariel Ben-Yehuda
85f1262c18 Use FnvHashMap instead of HashMap in rustc 2014-11-10 01:12:59 +02:00
bors
809cd0c89e auto merge of #18780 : bkoropoff/rust/regionck-for-loop, r=eddyb
Use the mem-cat of the iterator element type rather than the iterator itself when processing the for loop pattern.

Closes #17068
Closes #18767
2014-11-09 22:31:44 +00:00
bors
507927299a auto merge of #18739 : vhbit/rust/issue-18574, r=alexcrichton
Fixes #18574
2014-11-09 20:01:44 +00:00
Vladimir Matveev
3961eaec85 Added move keyword and renamed fail to panic 2014-11-09 21:10:08 +03:00
bors
efc9a441b9 auto merge of #18762 : mdinger/rust/str_coerce, r=steveklbanik
I had slight confusion when using this as a reference and was told it was imprecise. Most of the rewording was suggested by @huonw.

cc @steveklabnik
2014-11-09 17:06:45 +00:00
Colin Sherratt
477155e638 Add Encodable and Decodable for VecMap 2014-11-09 11:31:33 -05:00
Piotr Czarnecki
a3208246f1 Fix ICEs that involved quasi-quotation
* fixed get_tt for doc comments
* properly handle MatchNt in `quote`

Fixes #18763
Fixes #18775
2014-11-09 16:34:04 +01:00
bors
eeca3c7b4c auto merge of #18756 : jbcrail/rust/add-enum-set-bitxor, r=alexcrichton
I implemented BitXor, and also added tests for BitAnd and BitXor.

cc #18424
2014-11-09 15:11:43 +00:00
bors
946225d77f auto merge of #18755 : japaric/rust/ord, r=alexcrichton
Closes #18738
cc #15689

r? @alexcrichton 
cc @cmr
2014-11-09 12:31:40 +00:00
Steven Fackler
00741a2c27 First stage of struct variant field visibility changes
We need a snapshot before the parser can be adjusted.
2014-11-09 00:30:04 -08:00
bors
a6b70914b6 auto merge of #18748 : carols10cents/rust/prepend-to-append, r=alexcrichton
A most trivial documentation correction. The examples in the intro are all about adding to the end of the array, not the beginning, but this one line says "prepend".

This isn't a very serious problem, it just made me a bit confused when I got to it.
2014-11-09 07:46:41 +00:00
bors
16d80de231 auto merge of #18557 : aturon/rust/io-removal, r=alexcrichton
This PR includes a sequence of commits that gradually dismantles the `librustrt` `rtio` system -- the main trait previously used to abstract over green and native io. It also largely dismantles `libnative`, moving much of its code into `libstd` and refactoring as it does so.

TL;DR:

* Before this PR: `rustc hello.rs && wc -c hello` produces 715,996
* After this PR:  `rustc hello.rs && wc -c hello` produces 368,100

That is, this PR reduces the footprint of hello world by ~50%.

This is a major step toward #17325 (i.e. toward implementing the [runtime removal RFC](https://github.com/rust-lang/rfcs/pull/230).) What remains is to pull out the scheduling, synchronization and task infrastructure, and to remove `libgreen`. These will be done soon in a follow-up PR.

Part of the work here is eliminating the `rtio` abstraction, which in many cases means bringing the implementation of io closer to the actual API presented in `std::io`.

Another aspect of this PR is the creation of two new, *private* modules within `std` that implement io:

* The `sys` module, which represents a platform-specific implementation of a number of low-level abstractions that are used directly within `std::io` and `std::os`. These "abstractions" are left largely the same as they were in `libnative` (except for the removal of `Arc` in file descriptors), but they are expected to evolve greatly over time. Organizationally, there are `sys/unix/` and `sys/windows/` directories which both implement the entire `sys` module hierarchy; this means that nearly all of the platform-specific code is isolated and you can get a handle on each platform in isolation.

* The `sys_common` module, which is rooted at `sys/common`, and provides a few pieces of private, low-level, but cross-platform functionality.

In the long term, the `sys` modules will provide hooks for exposing high-level platform-specific APIs as part of `libstd`. The first such API will be access to file descriptors from `std::io` abstractions, but a bit of design work remains before that step can be taken. 

The `sys_common` module includes some traits (like `AsFileDesc`) which allow communication of private details between modules in disparate locations in the hierarchy; this helps overcome the relatively simple hierarchical privacy system in Rust.

To emphasize: the organization in `sys` is *very preliminary* and the main goal was to migrate away from `rtio` as quickly and simply as possible. The design will certainly evolve over time, and all of the details are currently private.

Along the way, this PR also entirely removes signal handling, since it was only supported on `librustuv` which was removed a while ago. 

Because of the removal of APIs from `libnative` and `librustrt`, and the removal of signal handling, this is a:

[breaking-change]

Some of these APIs will return in public from from `std` over time.

r? @alexcrichton
2014-11-09 05:51:44 +00:00