Commit Graph

18525 Commits

Author SHA1 Message Date
bors
cf0f760560 auto merge of #6333 : bjz/rust/cond-macro, r=thestinger
Addressing issue #6037, this Scheme-style conditional helps to improve code clarity in instances where the `if`, `else if`, and `else` keywords obscure predicates undesirably.

Here is an example:

~~~rust
let clamped =
    if x > mx { mx }
    else if x < mn { mn }
    else { x };
~~~

Using `cond!`, the above could be written as:

~~~rust
let clamped = cond!(
    (x > mx) { mx }
    (x < mn) { mn }
    _        { x  }
);
~~~

The optional default case is denoted by `_`.

I have altered `std::fun_treemap` to demonstrate it in use. I am definitely interested in using it for some of the numeric functions, but I will have to wait for it to reach `stage0` first.
2013-05-14 18:11:00 -07:00
Brendan Zabarauskas
7e4a176dd3 Use parentheses for cond! macro instead of preceding pipes
This is temporary. Once the macro parser has improved or been re-written these can be removed.
2013-05-15 11:02:17 +10:00
Tim Chevalier
c3875e8c70 rustpkg: Implement URL-like package IDs
This patch implements package IDs like
github.com/catamorphism/test-pkg.

To support such package IDs, I changed the PkgId struct to contain
a LocalPath and a RemotePath field, where the RemotePath reflects
the actual URL and the LocalPath reflects the file name of the cached
copy. Right now, the only difference is that the local path doesn't
contain dashes, but this will change when we implement #6407.

Also, PkgIds now have a short_name field -- though the short name
can be derived from the LocalPath, I thought it was cleaner not to
call option::get() wantonly.
2013-05-14 17:47:39 -07:00
Corey Richardson
68863153bb Fix resolution tests 2013-05-14 20:34:12 -04:00
Corey Richardson
8a69dba84a Fix ICE 2013-05-14 20:34:05 -04:00
Corey Richardson
3bfc1ca91d Get span from import_directive 2013-05-14 19:28:28 -04:00
Corey Richardson
62cbea1ca1 Add span to some import resolution errors 2013-05-14 18:52:31 -04:00
Corey Richardson
52f8b22d4f Add test for resolution errors 2013-05-14 18:51:37 -04:00
Corey Richardson
03f75b629a Better error reporting with renaming imports 2013-05-14 18:51:36 -04:00
Brian Anderson
b04fce6a90 Merge remote-tracking branch 'brson/io-upstream' into incoming
Conflicts:
	src/libcore/logging.rs
	src/libcore/rt/local_services.rs
	src/libcore/rt/uv/mod.rs
	src/libcore/rt/uv/net.rs
	src/libcore/rt/uv/uvio.rs
	src/libcore/unstable.rs
2013-05-14 15:30:01 -07:00
bors
c30414f980 auto merge of #6471 : gifnksm/rust/reform-rational, r=brson
`std::ratio` module contains `BigRational` type, but the type is not usable by following reasons.
* `Ratio::new` requires `T: Copy + Num + Ord`, but `BigInt` is not implicitly copyable, because it contains unique vector.
* `BigInt` is not implements `Num`

So, I rewrite `Ratio` as follows.
* `Ratio` requires `T: Clone + Integer + Ord`.
  * `Copy` -> `Clone`: to be able to use `BigRational`
  * `Num` -> `Integer`: It is incorrect that a rational number constructed by two non-integer numbers.
* `BigInt` implements `Num` and `Orderable` which are required by `Integer` bound
2013-05-14 15:28:59 -07:00
Brian Anderson
ee0ce64d9d core::rt: Wait for handles to close 2013-05-14 14:52:07 -07:00
Brian Anderson
204e3d82cc core::rt: Register stacks with valgrind. #6428 2013-05-14 14:52:07 -07:00
Brian Anderson
f934fa73ac core::rt: Docs 2013-05-14 14:52:07 -07:00
Brian Anderson
329dfcaba0 core: Move unstable::exchange_alloc to rt::global_heap 2013-05-14 14:52:07 -07:00
Brian Anderson
52f015aceb core: Cleanup warnings 2013-05-14 14:52:07 -07:00
Brian Anderson
4472a50ceb rtdebug off 2013-05-14 14:52:07 -07:00
Brian Anderson
101aaa3861 core::rt: 0 is a valid TLS key 2013-05-14 14:52:06 -07:00
Brian Anderson
d234cf7e44 core::rt: Make TCP servers work 2013-05-14 14:52:06 -07:00
Brian Anderson
414f3c7d25 core::rt: Add a simple channel type for passing buffered messages between Scheduler and Task
Called 'Tube' for lack of anything better.
2013-05-14 14:52:06 -07:00
Brian Anderson
40a9de5ebc core::rt: Add a very simple ref counted pointer 2013-05-14 14:52:06 -07:00
Brian Anderson
936fce5515 Warnings 2013-05-14 14:52:06 -07:00
Brian Anderson
272c3c2cfb Tidy 2013-05-14 14:52:06 -07:00
Brian Anderson
10355d7a7d core::rt Wire up logging to newsched tasks 2013-05-14 14:52:06 -07:00
Brian Anderson
ad6719ee0b core::rt: Just a small fix to TcpStream 2013-05-14 14:52:06 -07:00
Brian Anderson
a134503d74 core::rt: Move all the uv callback definitions to one place 2013-05-14 14:52:06 -07:00
Brian Anderson
dbf89664aa core::rt: Move the implementation of IdleWatcher to its own file 2013-05-14 14:52:06 -07:00
Brian Anderson
9138feab15 core::rt: Only use one mechanism for attaching custom data to uv handles 2013-05-14 14:52:06 -07:00
Brian Anderson
91ca3a9b29 core::rt: Reording code 2013-05-14 14:52:05 -07:00
Brian Anderson
6ab02c03da core::rt: Convert some uv functions to extension methods 2013-05-14 14:52:05 -07:00
Brian Anderson
cfd183db15 core::rt: Fix some copies in uv 2013-05-14 14:52:05 -07:00
Brian Anderson
b771c99304 core::rt: Fix the finalizer on UvTcpStream and UvTcpListener
Eliminates a lot of calls to `close`
2013-05-14 14:52:05 -07:00
Brian Anderson
01b7b7d5a0 core::rt: Use unsafe pointers instead of transmuted regions 2013-05-14 14:52:02 -07:00
bors
043d02213e auto merge of #6468 : gifnksm/rust/rposition-immutable, r=brson
`position` and `rposition` belonged to `ImmutableCopyableVector`, but they don't need the value is copyable.
2013-05-14 14:05:07 -07:00
Brendan Zabarauskas
b9824e18c2 Add Scheme-style cond! macro to syntax::ext::expand
Addresses issue #6037
2013-05-15 07:02:43 +10:00
Tim Chevalier
be062db808 testsuite: Update and un-xfail unsafe-fn-autoderef 2013-05-14 12:49:21 -07:00
bors
d217174987 auto merge of #6479 : brson/rust/flatpipes, r=brson 2013-05-14 12:25:54 -07:00
Brian Anderson
133aabc5bb Ignore two failing flatpipes tests 2013-05-14 11:35:10 -07:00
Björn Steinbrink
7ba685c7ab Add inlining for iter_bytes for types used as hashmap keys
Not inlining these affects the hash table performance quite badly.
2013-05-14 20:32:49 +02:00
bors
06c46d5142 auto merge of #6467 : alexcrichton/rust/better-rusti, r=bstrie
These few commits address a few existing issues:

* #5469 - adding regression tests for `rusti`. This adds unit tests to the `rusti.rc` file (which needed some reorganization of the Makefile, see the first commit message). These are super-simple right now, and sadly can't test the output of the tests. I worked for a bit on making a compiletest version of the rusti tests, but I ended up hitting something which blocked me, although I've forgotten it by this point.
* #5937 - regression test added, and it's fixed
* #5803 - just doesn't appear to happen any more
* #5784 - it's no longer broken, and it no longer spits out warnings about unused variables.

I also did some investigation into #5774, and you may want to read the comment I left on the bug. The gist of the situation is that C++ exceptions across JIT code don't look like they're working, even though they [should be working](3aa1122ec2/src/rustllvm/RustWrapper.cpp (L387)). If anyone has any insight on this, that would be awesome!
2013-05-14 11:22:51 -07:00
Alex Crichton
2ab1da5b01 Fix rustpkg tests now that they're in a different location 2013-05-14 14:11:30 -04:00
Alex Crichton
8b87fd7ec0 Don't emit common warnings in rusti 2013-05-14 14:11:29 -04:00
Alex Crichton
9af04f3e77 Add regression tests for various other rusti issues 2013-05-14 14:11:08 -04:00
Alex Crichton
4a9d8ff1a7 Fix use statements with rusti 2013-05-14 14:11:07 -04:00
Alex Crichton
54f2147e8e Get unit tests for rusti working
* They didn't work before, because the location of the tests caused the
  'sysroot' option to crate lookup to be wrong for finding the correct stage's
  core/std libraries. This moves the compiled tests from the $host/test
  directory into a $host/$stage/test directory. This means that the sysroot will
  be correct and the core/std libraries can actually be found
* The LLVM bindings apparently aren't threadsafe, so we can't run multiple tests
  in parallel.
2013-05-14 14:11:07 -04:00
bors
767e3ae86c auto merge of #6434 : alexcrichton/rust/less-implicit-vecs, r=bstrie
This closes #5204 and #6421.

This also removes the `vecs_implicitly_copyable` lint (although now reading #6421, this may not be desired?). If we want to leave it in, it at least removes it from the compiler.
2013-05-14 10:10:54 -07:00
Alex Crichton
ffcc680f9c Fix test fallout from removing vecs_implicitly_copyable 2013-05-14 12:25:19 -04:00
Alex Crichton
5614e83e81 Remove vecs_implicitly_copyable from the compiler 2013-05-14 12:25:18 -04:00
Alex Crichton
ccfb3ebf03 rusti: Remove #[allow(vecs_implicitly_copyable)] 2013-05-14 12:25:18 -04:00
Alex Crichton
92d39fe4d5 syntax: Remove #[allow(vecs_implicitly_copyable)] 2013-05-14 12:24:43 -04:00