Commit Graph

26374 Commits

Author SHA1 Message Date
Virgile Andreani
0c081afabd Rename ImmutableCopyableVector to ImmutableCloneableVector 2014-01-28 23:51:52 +01:00
Virgile Andreani
8642601551 Rename OwnedCopyableVector to OwnedCloneableVector 2014-01-28 23:51:52 +01:00
Virgile Andreani
8a71b53e6c Rename CopyableVector to CloneableVector 2014-01-28 23:51:52 +01:00
bors
edfb546e4b auto merge of #11490 : wting/rust/wting_11362_update_extract_tests, r=alexcrichton
Refactored the file quite a bit, I can add unit tests if desired. There's a few changes from the previous version's behavior:

- destination directory will be created if it doesn't exist
- strings and file is written as unicode

I have a few questions, but will ask them in #11362.
2014-01-28 14:11:33 -08:00
Niko Matsakis
afd8df6af2 Add test case for #3243, which was fixed as part of fix for #3511.
(Lifetime of stack allocated vectors was not being enforced)

Closes #3243.
2014-01-28 16:53:50 -05:00
William Ting
9f60e7c306 Update extract-tests.py to use same test directives as rustdoc.
Closes #11362.
2014-01-28 14:52:36 -06:00
bors
c6bd05303c auto merge of #11845 : xales/rust/libnative, r=alexcrichton
Fixes std::net test error when re-running too quickly.

Suggested by @cmr
2014-01-28 12:01:44 -08:00
Alex Crichton
dea86ca86b Fix a typo in disable rpaths
Closes #5219
2014-01-28 11:49:25 -08:00
Alex Crichton
20d6a8e0af Add a missing backslash to a makefile
Closes #11874
2014-01-28 09:17:06 -08:00
Daniel Micay
17c42db6d1 mk: remove -fno-omit-frame-pointer
This is still used for Rust code (`Options.NoFramePointerElim = true`).
2014-01-28 09:31:59 -05:00
bors
b3d10f4383 auto merge of #11864 : comex/rust/11352, r=alexcrichton
Set "Dwarf Version" to 2 on OS X to avoid toolchain incompatibility, and
set "Debug Info Version" to prevent debug info from being stripped from
bitcode.

Fixes #11352.
2014-01-28 05:11:28 -08:00
bors
a39be7ca2e auto merge of #11858 : huonw/rust/11841-followup, r=brson
Follow-up to #11841 which added this function.
2014-01-28 03:31:25 -08:00
bors
e90a8c4a35 auto merge of #11851 : pnkfelix/rust/fsk-fix-issue-10031, r=alexcrichton
Fix #10031.
2014-01-28 02:01:27 -08:00
bors
3781728d8f auto merge of #11837 : xales/rust/doc-fixes, r=cmr,huonw,alexcrichton 2014-01-28 00:41:30 -08:00
bors
1fdd23166d auto merge of #11833 : kballard/rust/gitignore-doc-flate-rustdoc, r=brson 2014-01-27 23:21:27 -08:00
bors
1ac9bf65b6 auto merge of #11738 : dmanescu/rust/11721, r=alexcrichton
Fixes #11721
2014-01-27 21:46:33 -08:00
comex
ea7b20d8f2 Add appropriate LLVM module flags for debug info.
Set "Dwarf Version" to 2 on OS X to avoid toolchain incompatibility, and
set "Debug Info Version" to prevent debug info from being stripped from
bitcode.

Fixes #11352.
2014-01-28 00:05:33 -05:00
bors
d21b18306c auto merge of #11826 : huonw/rust/7621-deriving-errors, r=alexcrichton
cc #7621.

See the commit message. I'm not sure if we should merge this now, or wait until we can write `Clone::clone(x)` which will directly solve the above issue with perfect error messages.
2014-01-27 20:26:35 -08:00
xales
e901c4caf3 Set SO_REUSEADDR by default in libnative.
Fixes std::net test error when re-running too quickly.
2014-01-27 20:59:15 -05:00
bors
8c6c229831 auto merge of #11626 : nickdesaulniers/rust/issue10617, r=alexcrichton
#10617
2014-01-27 17:26:55 -08:00
Huon Wilson
2e24adf521 std: comment about OOM & allocs in begin_unwind_fmt.
Follow-up to #11841 which added this function.
2014-01-28 12:19:17 +11:00
Nick Desaulniers
ea9db66c50 can borrow mut in proc Fixes #10617 2014-01-27 17:06:11 -08:00
Huon Wilson
cb02a37042 syntax: make deriving have slightly less cryptic error messages.
This unfortunately changes an error like

    error: mismatched types: expected `&&NotClone` but found `&NotClone`

into

    error: type `NotClone` does not implement any method in scope named `clone`
2014-01-28 11:07:45 +11:00
bors
daf60f0c4f auto merge of #11847 : alexcrichton/rust/fix-test-deps, r=pcwalton
The stdtest binary uses both libnative and libgreen to test the two
implementations

Closes #11843
2014-01-27 16:06:36 -08:00
bors
4176343073 auto merge of #11846 : michaelwoerister/rust/cu_name, r=pcwalton
Fixes #11600
2014-01-27 14:46:56 -08:00
bors
760ddb3081 auto merge of #11723 : eddyb/rust/more-trans-cleanup, r=pcwalton 2014-01-27 13:26:46 -08:00
Eduard Burtescu
e81ab4198c Removed take_glue from tydesc, inlining the equivalent refcount increment code instead. 2014-01-27 22:32:30 +02:00
Felix S. Klock II
b315aba7e4 test case for issue #10031. 2014-01-27 21:15:18 +01:00
Felix S. Klock II
965387acc5 Fix bug: metadata for struct constructor function needs to encode info
on its generic type parameters.

Test case to follow.
2014-01-27 21:08:59 +01:00
bors
feacb59466 auto merge of #11841 : huonw/rust/noinline-fail, r=alexcrichton
In two ways:
- for a plain `fail!(a)` we make the generic part of `begin_unwind` as small as possible (makes `fn main() { fail!() }` compile 2-3x faster, due to less monomorphisation bloat)
- for `fail!("format {}", "string")`, we avoid touching the generics completely by doing the formatting in a specialised function, which (with optimisations) saves a function call at the call-site of `fail!`. (This one has significantly less benefit than the first.)
2014-01-27 12:06:47 -08:00
bors
d6d7812da8 auto merge of #11595 : eddyb/rust/env-et-self-no-more, r=nikomatsakis
Non-exhaustive change list:
* `self` is now present in argument lists (modulo type-checking code I don't trust myself to refactor)
* methods have the same calling convention as bare functions (including the self argument)
* the env param is gone from all bare functions (and methods), only used by closures and `proc`s
* bare functions can only be coerced to closures and `proc`s if they are statically resolved, as they now require creating a wrapper specific to that function, to avoid indirect wrappers (equivalent to `impl<..Args, Ret> Fn<..Args, Ret> for fn(..Args) -> Ret`) that might not be optimizable by LLVM and don't work for `proc`s
* refactored some `trans::closure` code, leading to the removal of `trans::glue::make_free_glue` and `ty_opaque_closure_ptr`
2014-01-27 09:31:44 -08:00
Alex Crichton
0d38e1f9c1 Depend on libnative when testing
The stdtest binary uses both libnative and libgreen to test the two
implementations

Closes #11843
2014-01-27 09:16:55 -08:00
Michael Woerister
0a03bc073a debuginfo: Fix name attribute for DWARF compile units 2014-01-27 17:56:05 +01:00
bors
be974bf499 auto merge of #11842 : xales/rust/feature-gates, r=cmr
Fixes #11631
2014-01-27 07:26:55 -08:00
David Manescu
28b987b99a Feature gate #[simd]
Fixes #11721
2014-01-28 01:04:15 +11:00
xales
b23fd080ff Feature gate trace_macros.
Fixes #11631
2014-01-27 09:02:22 -05:00
Michael Woerister
d39b6060f0 Add .rs- instead of .rc-extension to LLVM module name 2014-01-27 14:59:22 +01:00
Huon Wilson
b4bb8c0f4e std: add begin_unwind_fmt that reduces codesize for formatted fail!().
This ends up saving a single `call` instruction in the optimised code,
but saves a few hundred lines of non-optimised IR for `fn main() {
fail!("foo {}", "bar"); }` (comparing against the minimal generic
baseline from the parent commit).
2014-01-27 23:58:03 +11:00
Eduard Burtescu
15ba0c310a Demote self to an (almost) regular argument and remove the env param.
Fixes #10667 and closes #10259.
2014-01-27 14:31:24 +02:00
bors
b0280ac538 auto merge of #11834 : huonw/rust/deriving-spans, r=alexcrichton
I'd forgotten to update them when I changed this a while ago; it now displays error messages linked to the struct/variant field, rather than the `#[deriving(Trait)]` line, for all traits.

This also adds a very large number of autogenerated tests. I can easily remove/tone down that commit if necessary.
2014-01-27 01:21:31 -08:00
Huon Wilson
e5abe66983 std: reduce the generic code instantiated by fail!().
This splits the vast majority of the code path taken by
`fail!()` (`begin_unwind`) into a separate non-generic inline(never)
function, so that uses of `fail!()` only monomorphise a small amount of
code, reducing code bloat and making very small crates compile faster.
2014-01-27 18:03:37 +11:00
bors
4b2fdfaaec auto merge of #11822 : bytbox/rust/master, r=huonw
Changes only to src/etc.
2014-01-26 22:21:36 -08:00
xales
f5723791e9 Minor fix to docs. 2014-01-27 01:18:17 -05:00
Scott Lawrence
c60db9b30c As Either no longer exists, remove Either, Left, and Right from syntax files 2014-01-27 00:22:21 -05:00
Huon Wilson
d9a204bf4c Add autogenerated tests for the spans of various derived traits. 2014-01-27 15:28:04 +11:00
Huon Wilson
b079ebeb8d syntax: improve the spans of some #[deriving] traits.
This makes error messages about (e.g.) `#[deriving(Clone)] struct Foo {
x: Type }` point at `x: Type` rather than `Clone` in the header (while
still referring to the `#[deriving(Clone)]` in the expansion info).
2014-01-27 15:25:37 +11:00
Kevin Ballard
2846ee6ba5 Add /doc/{flate,rustdoc} to .gitignore 2014-01-26 19:44:45 -08:00
bors
0119e46204 auto merge of #11823 : derekchiang/rust/fix-barrier-doc, r=alexcrichton
The original comments weren't rendered correctly by Markdown.
2014-01-26 19:16:44 -08:00
bors
74fedf325a auto merge of #11787 : alexcrichton/rust/refactor, r=brson
It was decided a long, long time ago that libextra should not exist, but rather its modules should be split out into smaller independent libraries maintained outside of the compiler itself. The theory was to use `rustpkg` to manage dependencies in order to move everything out of the compiler, but maintain an ease of usability.

Sadly, the work on `rustpkg` isn't making progress as quickly as expected, but the need for dissolving libextra is becoming more and more pressing. Because of this, we've thought that a good interim solution would be to simply package more libraries with the rust distribution itself. Instead of dissolving libextra into libraries outside of the mozilla/rust repo, we can dissolve libraries into the mozilla/rust repo for now.

Work on this has been excruciatingly painful in the past because the makefiles are completely opaque to all but a few. Adding a new library involved adding about 100 lines spread out across 8 files (incredibly error prone). The first commit of this pull request targets this pain point. It does not rewrite the build system, but rather refactors large portions of it. Afterwards, adding a new library is as simple as modifying 2 lines (easy, right?). The build system automatically keeps track of dependencies between crates (rust *and* native), promotes binaries between stages, tracks dependencies of installed tools, etc, etc.

With this newfound buildsystem power, I chose the `extra::flate` module as the first candidate for removal from libextra. While a small module, this module is relative complex in that is has a C dependency and the compiler requires it (messing with the dependency graph a bit). Albeit I modified more than 2 lines of makefiles to accomodate libflate (the native dependency required 2 extra lines of modifications), but the removal process was easy to do and straightforward.

---

Testing-wise, I've cross-compiled, run tests, built some docs, installed, uninstalled, etc. I'm still working out a few kinks, and I'm sure that there's gonna be built system issues after this, but it should be working well for basic use!

cc #8784
2014-01-26 16:46:34 -08:00
Alex Crichton
cdfdc1eb6b Move extra::flate to libflate
This is hopefully the beginning of the long-awaited dissolution of libextra.
Using the newly created build infrastructure for building libraries, I decided
to move the first module out of libextra.

While not being a particularly meaty module in and of itself, the flate module
is required by rustc and additionally has a native C dependency. I was able to
very easily split out the C dependency from rustrt, update librustc, and
magically everything gets installed to the right locations and built
automatically.

This is meant to be a proof-of-concept commit to how easy it is to remove
modules from libextra now. I didn't put any effort into modernizing the
interface of libflate or updating it other than to remove the one glob import it
had.
2014-01-26 15:42:15 -08:00