Commit Graph

24242 Commits

Author SHA1 Message Date
bors
67aca9c9af auto merge of #10844 : huonw/rust/deriving-expn-info, r=alexcrichton
Previously something like

    struct NotEq;

    #[deriving(Eq)]
    struct Error {
        foo: NotEq
    }

would just point to the `foo` field, with no mention of the
`deriving(Eq)`. With this patch, the compiler creates a note saying "in
expansion of #[deriving(Eq)]" pointing to the Eq.

(includes some cleanup/preparation; the commit view might be nicer, to filter out the noise of the first one.)
2013-12-07 05:11:10 -08:00
bors
7c719ec1bc auto merge of #10831 : luqmana/rust/9382, r=nikomatsakis
Fixes #9382.

r? @nikomatsakis
2013-12-07 03:41:12 -08:00
bors
5466462b85 auto merge of #10824 : huonw/rust/str-doc, r=alexcrichton
Fixes #10819.
2013-12-07 01:36:17 -08:00
bors
3abc350ea4 auto merge of #10797 : pradeep90/rust/rust-mode-changes, r=brson
+ Delete trailing whitespace.
2013-12-06 23:46:20 -08:00
bors
70d66ae085 auto merge of #10364 : Kimundi/rust/result_compose, r=alexcrichton
This implements parts of the changes to `Result` and `Option` I proposed and discussed in this thread: https://mail.mozilla.org/pipermail/rust-dev/2013-November/006254.html

This PR includes:
- Adding `ok()` and `err()` option adapters for both `Result` variants.
- Removing `get_ref`, `expect` and iterator constructors for `Result`, as they are reachable with the variant adapters.
- Removing `Result`s `ToStr` bound on the error type because of composability issues. (See https://mail.mozilla.org/pipermail/rust-dev/2013-November/006283.html)
- Some warning cleanups
2013-12-06 22:21:18 -08:00
bors
820271df1c auto merge of #10809 : alexcrichton/rust/static-snapshot, r=alexcrichton
Now that we have the necessary logic in rustc for windows, this is possible to land.
2013-12-06 21:01:32 -08:00
Alex Crichton
e91ffb0710 Link rustllvm statically, and distribute a static snapshot
In order to keep up to date with changes to the libraries that `llvm-config`
spits out, the dependencies to the LLVM are a dynamically generated rust file.
This file is now automatically updated whenever LLVM is updated to get kept
up-to-date.

At the same time, this cleans out some old cruft which isn't necessary in the
makefiles in terms of dependencies.

Closes #10745
Closes #10744
2013-12-06 20:51:17 -08:00
Huon Wilson
c629b1d9de std::str: Add examples to the StrSlice trait.
Fixes #10819.
2013-12-07 13:59:36 +11:00
Huon Wilson
0c0e73eed6 syntax::deriving: indicate from which trait type errors (etc) arise
using the expansion info.

Previously something like

    struct NotEq;

    #[deriving(Eq)]
    struct Error {
        foo: NotEq
    }

would just point to the `foo` field, with no mention of the
`deriving(Eq)`. With this patch, the compiler creates a note saying "in
expansion of #[deriving(Eq)]" pointing to the Eq.
2013-12-07 13:43:22 +11:00
Huon Wilson
3ef933647a syntax: print expansion info from #[attribute] macros in the correct
format.

Previously, any attempt to use this information from inside something
like #[deriving(Foo)] would result in it printing like `deriving(Foo)!`.
2013-12-07 13:41:11 +11:00
Huon Wilson
09a879460c syntax::deriving: add the cx and span to the TraitDef to reduce duplication. 2013-12-07 11:57:44 +11:00
Marvin Löbel
142eb685f9 Made Results API more composable 2013-12-06 22:29:02 +01:00
Luqman Aden
920ca61871 librustc: Pass the correct type when adding cleanups. 2013-12-06 15:47:14 -05:00
bors
aa4455e4c7 auto merge of #10832 : chris-morgan/rust/let's-lop-lang-item-line-count, r=alexcrichton
This should make maintenance of lang items simpler and also reduces the
line count by about 201 lines.
2013-12-06 01:11:18 -08:00
bors
2eb22ae2b4 auto merge of #10665 : cmr/rust/doc_lint, r=alexcrichton
Because the root module isn't actually an item, we need to do some hackish
handling of it.

Closes #10656.
2013-12-05 23:41:19 -08:00
Corey Richardson
30a5612830 Check crate root for docs in missing_doc lint.
Because the root module isn't actually an item, we need to do some hackish
handling of it.

Closes #10656.
2013-12-06 01:39:32 -05:00
bors
f9aecdb22a auto merge of #10758 : alexcrichton/rust/upgrade-llvm, r=alexcrichton
This upgrades LLVM in order to make progress on #10708, and it's also been awhile since we last upgraded!

The contentious point of this upgrade is that all JIT support has been removed because LLVM is changing it and we're not keeping up with it.
2013-12-05 21:26:19 -08:00
Chris Morgan
0b1bbc5fd6 Use a macro in lang_items to remove duplication.
This should make maintenance of lang items simpler and also reduces the
line count by about 201 lines.
2013-12-06 15:24:25 +11:00
bors
9fc48061d7 auto merge of #10721 : osa1/rust/intermediatestr, r=brson
as recommended by @huonw on this PR https://github.com/mozilla/rust/pull/10711 , I removed intermediate step that generates a string instead of directly writing to Writer without generating intermediate string.
2013-12-05 18:56:19 -08:00
bors
6e5c5a6ac1 auto merge of #10675 : LeoTestard/rust/lifetimes-no-keywords, r=brson
Fixes #10565.

`'self` is still allowed for the moment, as it is used everywhere in the codebase. And I'm not sure if it still has a special meaning currently or not.
2013-12-05 17:41:18 -08:00
Alex Crichton
17a951c7bf Remove unused upcalls
The main one removed is rust_upcall_reset_stack_limit (continuation of #10156),
and this also removes the upcall_trace function. The was hidden behind a
`-Z trace` flag, but if you attempt to use this now you'll get a linker error
because there is no implementation of the 'upcall_trace' function. Due to this
no longer working, I decided to remove it entirely from the compiler (I'm also a
little unsure on what it did in the first place).
2013-12-05 16:29:16 -08:00
bors
6708c297a8 auto merge of #10506 : nikomatsakis/rust/issue-10391-ICE-with-lifetimes, r=pnkfelix
Make trait lifetime parameters early bound in static fn type. Reasoning for this change is (hopefully) explained well enough in the comment, so I'll not duplicate it here. Fixes #10391.

r? @pnkfelix
2013-12-05 16:26:20 -08:00
Niko Matsakis
e9d364d1df Fix test for #10391 to have pub main 2013-12-05 18:25:01 -05:00
bors
55353137a6 auto merge of #10562 : ongardie/rust/master, r=brson
It's useful to allow users to get at the internal std::rc::comm::Port,
and other such fields, since they implement important traits like
Select.

See [rust-dev] "select on std::comm::Port and different types" at https://mail.mozilla.org/pipermail/rust-dev/2013-November/006735.html for background.
2013-12-05 15:16:27 -08:00
bors
ad6f6cb589 auto merge of #10817 : alexcrichton/rust/sched-fix, r=brson
Right now, as pointed out in #8132, it is very easy to introduce a subtle race
in the runtime. I believe that this is the cause of the current flakiness on the
bots.

I have taken the last idea mentioned in that issue which is to use a lock around
descheduling and context switching in order to solve this race.

Closes #8132
2013-12-05 14:01:46 -08:00
bors
3cc86d8ab3 auto merge of #10211 : ktt3ja/rust/add-lrucache, r=brson
There's an open issue ([Issue #4988](https://github.com/mozilla/rust/issues/4988?source=cc)) for adding an LRU Cache to the standard library. I'm new to this so I hope I didn't miss anything I'm supposed to do.
2013-12-05 12:32:12 -08:00
Léo Testard
74757af096 Forbid keywords as lifetime parameters names. 2013-12-05 21:06:00 +01:00
bors
617ce856db auto merge of #10825 : octurion/rust/master, r=alexcrichton 2013-12-05 09:46:29 -08:00
Alex Crichton
be0580b191 Solve some nasty deschedulinging races with a lock
Right now, as pointed out in #8132, it is very easy to introduce a subtle race
in the runtime. I believe that this is the cause of the current flakiness on the
bots.

I have taken the last idea mentioned in that issue which is to use a lock around
descheduling and context switching in order to solve this race.

Closes #8132
2013-12-05 09:40:06 -08:00
Alex Crichton
6b34ba242d Update LLVM and jettison jit support
LLVM's JIT has been updated numerous times, and we haven't been tracking it at
all. The existing LLVM glue code no longer compiles, and the JIT isn't used for
anything currently.

This also rebases out the FixedStackSegment support which we have added to LLVM.
None of this is still in use by the compiler, and there's no need to keep this
functionality around inside of LLVM.

This is needed to unblock #10708 (where we're tripping an LLVM assertion).
2013-12-05 09:15:54 -08:00
Alexandros Tasos
8257dbd2c6 Fix documentation typo (divison operator is not backslash) 2013-12-05 16:24:48 +02:00
bors
b5bab85c1a auto merge of #10796 : kballard/rust/revert-new-naming, r=alexcrichton
Rename the `*::init()` functions back to `*::new()`, since `new` is not
going to become a keyword.
2013-12-04 23:26:19 -08:00
Kevin Ballard
b1705714d5 Rename std::rt::deque::*::init() to *::new() 2013-12-04 22:33:53 -08:00
Kevin Ballard
2c4a1b55e6 Rename extra::json::*::init() constructors to *::new() 2013-12-04 22:33:53 -08:00
Kevin Ballard
408dc5ad1b Revert "libstd: Change Path::new to Path::init."
This reverts commit c54427ddfb.

Leave the #[ignores] in that were added to rustpkg tests.

Conflicts:
	src/librustc/driver/driver.rs
	src/librustc/metadata/creader.rs
2013-12-04 22:33:53 -08:00
bors
10c8409c78 auto merge of #10804 : alexcrichton/rust/less-dup, r=pcwalton
This is just an implementation detail of using libuv, so move the libuv-specific
logic into librustuv.
2013-12-04 22:11:22 -08:00
bors
bd5305fbc8 auto merge of #10799 : TeXitoi/rust/shootout-reverse-complement-resurected, r=alexcrichton
This version is inspired by the best version in C by Mr Ledrug,
but without the parallelisation.
2013-12-04 20:46:23 -08:00
bors
64bcfd246c auto merge of #10803 : vmx/rust/integer-decode, r=cmr
The `integer_decode()` function decodes a float (f32/f64)
into integers containing the mantissa, exponent and sign.

It's needed for `rationalize()` implementation of #9838.

The code got ported from ABCL [1].

[1] http://abcl.org/trac/browser/trunk/abcl/src/org/armedbear/lisp/FloatFunctions.java?rev=14465#L94

I got the permission to use this code for Rust from Peter Graves (the ABCL copyright holder) . If there's any further IP clearance needed, let me know.
2013-12-04 18:46:21 -08:00
bors
edb9e85ce2 auto merge of #10690 : thestinger/rust/doc, r=alexcrichton
This begins a rewrite of some sections the tutorial as an introduction
to concepts through the implementation of a simple data structure. I
think this would be a good way to introduce references, generics, traits
and many other concepts too. For example, the section introducing
alternatives to ownership can demonstrate a persistent list.
2013-12-04 16:51:23 -08:00
Daniel Micay
c1eb20b5f8 rewrite part of the tutorial
This begins a rewrite of some sections the tutorial as an introduction
to concepts through the implementation of a simple data structure. I
think this would be a good way to introduce references, traits and many
other concepts too. For example, the section introducing alternatives to
ownership can demonstrate a persistent list.
2013-12-04 16:55:03 -05:00
bors
ad58e2c31c auto merge of #10792 : kballard/rust/parse_sugary_call_expr-comments, r=alexcrichton
The comments on this function date back from when it was used for `for`
expressions in addition to `do` expressions.
2013-12-04 13:31:45 -08:00
bors
9b9cf9892b auto merge of #10701 : huonw/rust/rm-from_utf8, r=brson
This function had type &[u8] -> ~str, i.e. it allocates a string
internally, even though the non-allocating version that take &[u8] ->
&str and ~[u8] -> ~str are all that is necessary in most circumstances.
2013-12-04 11:32:23 -08:00
Guillaume Pinot
e76e83cb10 rewrite of shootout-reverse-complement.rs
This version is inspired by the best version in C by Mr Ledrug,
but without the parallelisation.
2013-12-04 18:15:53 +01:00
Alex Crichton
e0264ff192 Don't dup the stdio file descriptors.
This is just an implementation detail of using libuv, so move the libuv-specific
logic into librustuv.
2013-12-04 08:51:47 -08:00
bors
5fa6bd526e auto merge of #10788 : alexcrichton/rust/fixes, r=pcwalton
I used the wrong condition where I was looking for "is this method public or is
this implementation a trait" rather than what was being checked.
2013-12-04 08:12:11 -08:00
Volker Mische
30a9c6e490 Decode a float into integers
The `integer_decode()` function decodes a float (f32/f64)
into integers containing the mantissa, exponent and sign.

It's needed for `rationalize()` implementation of #9838.

The code got ported from ABCL [1].

[1] http://abcl.org/trac/browser/trunk/abcl/src/org/armedbear/lisp/FloatFunctions.java?rev=14465#L94
2013-12-04 16:11:39 +01:00
bors
91695797c2 auto merge of #10794 : alexcrichton/rust/issue-10790, r=alexcrichton
Note entirely sure how this is passing at all today, but regardless this fixes
the problems seen in #10790 

Closes #10790
2013-12-04 05:26:35 -08:00
bors
1191ae87db auto merge of #10793 : chris-morgan/rust/2013-12-04-vim-updates, r=Aatch
- Implement comment nesting (the implementation is quite ugly at present
  and is not quite correct; note the big comment in that area).

- Highlight invalid escape sequences as errors.

- Fix up various inconsistencies and incorrectnesses in number
  highlighting.

- Update prelude items (``std::io::{Buffer, Writer, Reader, Seek}``).

- Highlight the ``proc`` keyword.

- Remove %-formatting sequence highlighting (a relic of old formatting).

- Don't highlight TODO in strings (it's unconventional).
2013-12-04 04:11:26 -08:00
Huon Wilson
b0426edc0a std::str: s/from_utf8_slice/from_utf8/, to make the basic case shorter. 2013-12-04 22:35:53 +11:00
Huon Wilson
9d64e46013 std::str: remove from_utf8.
This function had type &[u8] -> ~str, i.e. it allocates a string
internally, even though the non-allocating version that take &[u8] ->
&str and ~[u8] -> ~str are all that is necessary in most circumstances.
2013-12-04 22:35:53 +11:00