Commit Graph

22122 Commits

Author SHA1 Message Date
Huon Wilson
491ce71453 Add a test for extra::rl.
This test has to be run by a human, to check inputs etc. Fortunately, it
won't bitrot (syntactically, or type-check-ly; it might bitrot
semantically), as it is designed so that the test runner compiles it with
`--cfg robot_mode`, which is used to disable the actual running of code.
2013-09-11 22:20:33 +10:00
Huon Wilson
4ed5fcb122 extra: improvements & bug fixes to rl.
- Removes a layer of indirection in the storage of the completion
  callback.
- Handles user tab completion in a task in which `complete` hasn't been
  properly. Previously, if `complete` was called in one task, and `read`
  called in another, attempting to get completions would crash. This
  makes the completion handlers non-ambiguously task-local only.
- Fix a mismatch in return values between the Rust code and linenoise.
2013-09-11 22:20:33 +10:00
Huon Wilson
fe03d827a4 extra: stop rl from leaking each line that is read. 2013-09-11 22:20:33 +10:00
Huon Wilson
21ce41d42d extra: use a mutex to wrap linenoise calls and make them threadsafe.
Fixes #3921.
2013-09-11 22:20:33 +10:00
bors
5bb8aefed6 auto merge of #9007 : dcrewi/rust/random-bigints, r=huonw 2013-09-11 03:11:05 -07:00
bors
f8cbf41064 auto merge of #9093 : pnkfelix/rust/fsk-remove-oldvisit, r=alexcrichton 2013-09-11 01:46:07 -07:00
bors
ef6a97ddbe auto merge of #9013 : alexcrichton/rust/generated-unsafe-blocks, r=sanxiyn
This way syntax extensions can generate unsafe blocks without worrying about them generating unnecessary unsafe warnings. Perhaps a special keyword could be added to be used in macros, but I don't think that's the best solution.

Currently if you use `format!` and friends in an `unsafe` block you're guaranteed to get some unused-unsafe warnings which is unfortunate. We normally do want these warnings, but I'm ok ignoring them in the case of compiler-generated unsafe blocks. I tried to do this in the least intrusive way possible, but others may have better ideas about how to do this.
2013-09-11 00:36:07 -07:00
Alex Crichton
11e9c48353 Flag unsafe blocks from format! as compiler-generated 2013-09-11 00:13:41 -07:00
Alex Crichton
19a6fabad8 Implement the notion of a "generated unsafe block"
This way syntax extensions can generate unsafe blocks without worrying about
them generating unnecessary unsafe warnings. Perhaps a special keyword could be
added to be used in macros, but I don't think that's the best solution.
2013-09-11 00:13:22 -07:00
bors
ba9fa89bfb auto merge of #9091 : sfackler/rust/buffered, r=alexcrichton
The default buffer size is the same as the one in Java's BufferedWriter.

We may want BufferedWriter to have a Drop impl that flushes, but that
isn't possible right now due to #4252/#4430. This would be a bit
awkward due to the possibility of the inner flush failing. For what it's
worth, Java's BufferedReader doesn't have a flushing finalizer, but that
may just be because Java's finalizer support is awful.

The current implementation of BufferedStream is weird in my opinion, but
it's what the discussion in #8953 settled on.

I wrote a custom copy function since vec::copy_from doesn't optimize as
well as I would like.

Closes #8953
2013-09-10 21:36:06 -07:00
Steven Fackler
71f0305cf1 Buffered I/O wrappers
The default buffer size is the same as the one in Java's BufferedWriter.

We may want BufferedWriter to have a Drop impl that flushes, but that
isn't possible right now due to #4252/#4430. This would be a bit
awkward due to the possibility of the inner flush failing. For what it's
worth, Java's BufferedReader doesn't have a flushing finalizer, but that
may just be because Java's finalizer support is awful.

Closes #8953
2013-09-10 21:26:28 -07:00
bors
8cf60de758 auto merge of #9111 : thestinger/rust/tycat, r=cmr
The line marked as being for `bot` was actually for `tycat_struct`, and
can be replaced with `tycat_other`.
2013-09-10 19:41:14 -07:00
Daniel Micay
118d374832 remove redundant tycat line from the binop table
The line marked as being for `bot` was actually for `tycat_struct`, and
can be replaced with `tycat_other`.
2013-09-10 22:36:26 -04:00
bors
a9ac27270f auto merge of #9103 : jbclements/rust/let-var-hygiene, r=erickt
update AST so that ExprBreak and ExprCont expressions contain names, not idents. Fixes #9047 and makes progress on #6993. Simplifies the compiler very slightly, should make it (infinitesimally) faster.
2013-09-10 15:16:04 -07:00
John Clements
969181b654 added test case 2013-09-10 14:13:01 -07:00
John Clements
422cf1adc5 change type of ExprLoop and ExprBreak elts from ident->name.
Lots of downstream changes in librustc, should be infinitesimally faster.
2013-09-10 14:12:54 -07:00
bors
917d3c28b6 auto merge of #9094 : pnkfelix/rust/fsk-visitor-ports, r=huonw
r? anyone

Remove some trivial Visitor structs, using their non-trivial Contexts as the Visitor implementation instead.

Removed a little bit of `@boxing` as well.

Part of ongoing work on #7081.
2013-09-10 04:26:01 -07:00
bors
753d8c226c auto merge of #9088 : nikomatsakis/rust/issue-6304-AST-tree-not-DAG, r=catamorphism
Ensures that each AST node has a unique id. Fixes numerous bugs in macro expansion and deriving. Add two
representative tests.

Fixes #7971
Fixes #6304
Fixes #8367
Fixes #8754
Fixes #8852
Fixes #2543
Fixes #7654
2013-09-10 03:10:59 -07:00
Niko Matsakis
a5ad4c3794 Delay assignment of node ids until after expansion. Ensures that each AST node
has a unique id. Fixes numerous bugs in macro expansion and deriving. Add two
representative tests.

Fixes #7971
Fixes #6304
Fixes #8367
Fixes #8754
Fixes #8852
Fixes #2543
Fixes #7654
2013-09-10 05:45:12 -04:00
Felix S. Klock II
ed37da2f79 middle/entry.rs Visitor refactoring (#7081): unify Entry{Context,Visitor}. 2013-09-10 11:25:10 +02:00
Felix S. Klock II
6724317dad gather_loans/mod.rs Visitor refactoring (#7081): unify GatherLoan{Ctxt,Visitor}. 2013-09-10 11:25:09 +02:00
Felix S. Klock II
959d9d60e1 check_loans.rs Visitor refactoring (#7081): unify CheckLoan{Ctxt,Visitor}. 2013-09-10 11:25:09 +02:00
bors
96da35611f auto merge of #9090 : jbclements/rust/let-var-hygiene, r=luqmana
This appears to fix issue #9049. It also re-enables the ICE check on comparing idents for equality; it appears that ICEs are better than seg faults.
2013-09-10 01:06:00 -07:00
Felix S. Klock II
8b00004871 Remove oldvisit.rs (yay!); part of #7081 refactoring. 2013-09-10 09:00:53 +02:00
bors
485446b97f auto merge of #9076 : blake2-ppc/rust/test-for-8585, r=huonw
The issue #8587 is fixed (the original testcase now passes); add that testcase to the suite.


Fixes #8587.
2013-09-09 22:41:03 -07:00
John Clements
634bddde05 added run-pass test for issue #9049 2013-09-09 22:38:45 -07:00
bors
7820fb5ca9 auto merge of #9062 : blake2-ppc/rust/vec-iterator, r=alexcrichton
Visit the free functions of std::vec and reimplement or remove some. Most prominently, remove `each_permutation` and replace with two iterators, ElementSwaps and Permutations.

Replace unzip, unzip_slice with an updated `unzip` that works with an iterator argument.

Replace each_permutation with a Permutation iterator. The new permutation iterator is more efficient since it uses an algorithm that produces permutations in an order where each is only one element swap apart, including swapping back to the original state with one swap at the end.

Unify the seldomly used functions `build`, `build_sized`, `build_sized_opt` into just one function `build`.

Remove `equal_sizes`
2013-09-09 21:31:03 -07:00
John Clements
57f7abaf19 undo cowardly hiding of eq-check
I've reversed my thinking on this restrictive definition of eq after
two separate bugs were hidden by commenting it out; it's better to
get ICEs than SIGSEGV's, any day.

RE-ENABLING ICE MACHINE!
2013-09-09 20:50:41 -07:00
blake2-ppc
c11ee0fb67 std::at_vec and vec: Unify build_sized, build_sized_opt into build
These functions have very few users since they are mostly replaced by
iterator-based constructions.

Convert a few remaining users in-tree, and reduce the number of
functions by basically renaming build_sized_opt to build, and removing
the other two. This for both the vec and the at_vec versions.
2013-09-10 05:50:11 +02:00
blake2-ppc
5f69a58e0c std::vec: Remove the function same_length
The basic construct x.len() == y.len() is just as simple.

This function used to be a precondition (not sure about the
terminology), so it had to be a function. This is not relevant any more.
2013-09-10 05:50:07 +02:00
blake2-ppc
77dff93a4b std::vec: Update module doc text
Update for a lot of changes (not many free functions left), add examples
of the important methods `slice` and `push`, and write a short bit about
iteration.
2013-09-10 05:50:06 +02:00
blake2-ppc
de9546a3f8 std::vec: Replace each_permutation with a new Permutations iterator
Introduce ElementSwaps and Permutations. ElementSwaps is an iterator
that for a given sequence length yields the element swaps needed
to visit each possible permutation of the sequence in turn.

We use an algorithm that generates a sequence such that each permutation
is only one swap apart.

    let mut v = [1, 2, 3];
    for perm in v.permutations_iter() {
        // yields 1 2 3 | 1 3 2 | 3 1 2 | 3 2 1 | 2 3 1 | 2 1 3
    }

The `.permutations_iter()` yields clones of the input vector for each
permutation.

If a copyless traversal is needed, it can be constructed with
`ElementSwaps`:

    for (a, b) in ElementSwaps::new(3) {
        // yields (2, 1), (1, 0), (2, 1) ...
        v.swap(a, b);
        // ..
    }
2013-09-10 05:50:06 +02:00
John Clements
42b1694cca ident->name in middle 2013-09-09 20:47:39 -07:00
blake2-ppc
6212729315 std::vec: Change fn unzip to take an iterator argument
Remove unzip_slice since it's redundant. Old unzip is equivalent to the
`|x| unzip(x.move_iter())`
2013-09-10 05:39:59 +02:00
bors
8c7c0b41d7 auto merge of #9034 : catamorphism/rust/rustpkg-workcache, r=metajack
r? @metajack or @brson - This pull request makes rustpkg use the workcache library to avoid recompilation.
2013-09-09 20:16:02 -07:00
bors
af259a651d auto merge of #9086 : pcwalton/rust/writeback-port, r=brson
r? @brson or @pnkfelix
2013-09-09 19:06:02 -07:00
bors
d41b558792 auto merge of #9089 : anasazi/rust/fix-acceptor-iterator, r=cmr
The iterator over incoming connections has no natural end, so it should always return Some(_).
Currently, if an incoming connection fails, the iterator returns None.
Trying to accept another connection afterwards enters the realm of undefined behavior (due to the iterator protocol being silent on the issue).

This PR changes wraps the underlying accept call in Some, so the iterator never finishes.
2013-09-09 16:26:03 -07:00
bors
ed695d470b auto merge of #9083 : dcrewi/rust/biguint-bit-ops, r=brson 2013-09-09 14:10:58 -07:00
Patrick Walton
2a0dd97675 librustc: Port writeback to the new API. 2013-09-09 14:10:58 -07:00
bors
54ae2800ff auto merge of #9071 : thestinger/rust/noalias, r=alexcrichton
This also removes a FIXME I added referring to a now closed issue.
2013-09-09 13:01:02 -07:00
bors
60a0dbc095 auto merge of #9033 : alexcrichton/rust/libuv-makefile-dep, r=brson
This way the rule isn't always built whenever you fire off a new build
2013-09-09 11:51:03 -07:00
Daniel Micay
889e1b9731 add noalias attribute to ~ return values 2013-09-09 13:48:54 -04:00
bors
059cbaadfa auto merge of #9005 : alexcrichton/rust/rusty-log, r=brson
Also redefine all of the standard logging macros to use more rust code instead
of custom LLVM translation code. This makes them a bit easier to understand, but
also more flexibile for future types of logging.

Additionally, this commit removes the LogType language item in preparation for
changing how logging is performed.
2013-09-09 10:41:05 -07:00
David Creswick
c3d0fc23d4 Implement bitwise operations on BigUint 2013-09-09 12:15:19 -05:00
David Creswick
4946e0ea5e Merge RandBigUint and RandBigInt into single trait 2013-09-09 11:31:40 -05:00
blake2-ppc
5ecd3b4053 Add test for issue #8587, about calling nested functions of the same name 2013-09-09 16:01:42 +02:00
bors
fd2488bf5a auto merge of #9051 : bjz/rust/master, r=huonw 2013-09-09 06:06:04 -07:00
bors
7e2827b99d auto merge of #9059 : Kimundi/rust/master, r=huonw
- Marked a unsafe helper function as unsafe, added a second helper function
- Added moving implementations
2013-09-09 04:51:05 -07:00
Marvin Löbel
3a3934244c Some work on std::ascii: Marked unsafe function unsafe, added moving implementations 2013-09-09 15:07:22 +02:00
bors
fd49f6dce1 auto merge of #9073 : alexcrichton/rust/remove-local-data-hax, r=huonw
These compiler bugs have since been fixed (one less layer of indirection)
2013-09-09 02:36:06 -07:00