Commit Graph

7041 Commits

Author SHA1 Message Date
bors
0dcc955459 auto merge of #15006 : alexcrichton/rust/fix-nightly, r=brson
The nightly builds on linux have been failing over the past few days due to a
malformed LD_LIBRARY_PATH. It appears that the underlying cause is that one of
the tests, dep-info-custom, recursively invokes make but the RUSTC variable
passed down has the string "$LD_LIBRARY_PATH". This is intended to read the
host's original LD_LIBRARY_PATH, but it appears that the makefile is eagerly
expanding the "$L" to nothing, causing the original host's LD_LIBRARY_PATH to be
ignored.

This fix removes passing the string "$LD_LIBRARY_PATH" and rather expands it
eagerly to ensure that escaping doesn't happen at a later stage. I'm still not
entirely sure why the makefile is interpreting the dollar as a variable, but
this seems to fix the issue.
2014-06-18 22:41:40 +00:00
bors
6ca454f12c auto merge of #14854 : jakub-/rust/issue-10991, r=pcwalton
Fixes #10991.
2014-06-18 20:51:46 +00:00
Alex Crichton
91c7687f03 test: Attempt to fix nightly-linux
The nightly builds on linux have been failing over the past few days due to a
malformed LD_LIBRARY_PATH. It appears that the underlying cause is that one of
the tests, dep-info-custom, recursively invokes make but the RUSTC variable
passed down has the string "$LD_LIBRARY_PATH". This is intended to read the
host's original LD_LIBRARY_PATH, but it appears that the makefile is eagerly
expanding the "$L" to nothing, causing the original host's LD_LIBRARY_PATH to be
ignored.

This fix removes passing the string "$LD_LIBRARY_PATH" and rather expands it
eagerly to ensure that escaping doesn't happen at a later stage. I'm still not
entirely sure why the makefile is interpreting the dollar as a variable, but
this seems to fix the issue.
2014-06-18 13:50:45 -07:00
bors
557b9e7f0f auto merge of #14879 : Ryman/rust/resolve_super_hint_cut, r=alexcrichton 2014-06-18 18:06:42 +00:00
Felix S. Klock II
4c2a8bbc09 Adapt test case to match current set of emitted warnings. (or lack
thereof.)

PR 14739 injected the new message that this removes from one test
case: borrowck-vec-pattern-loan-from-mut.rs

When reviewing the test case, I was not able to convince myself that
the error message was a legitimate thing to start emitting.  Niko did
not see an obvious reason for it either, so I am going to remove it
and wait for someone (maybe Cameron Zwarich) to explain to me why we
should be emitting it.
2014-06-18 16:44:21 +02:00
Felix S. Klock II
3ddb987f45 Regression tests for flowgraph construction bug on ExprWhile. 2014-06-18 16:42:57 +02:00
Felix S. Klock II
373b0fc569 some extra test cases to cover in the borrow checker. 2014-06-18 16:42:57 +02:00
bors
d6736a1440 auto merge of #14880 : SimonSapin/rust/byte-literals, r=alexcrichton
See #14646 (tracking issue) and rust-lang/rfcs#69.

This does not close the tracking issue, as the `bytes!()` macro still needs to be removed. It will be later, after a snapshot is made with the changes in this PR, so that the new syntax can be used when bootstrapping the compiler.
2014-06-18 02:06:37 +00:00
Kevin Butler
3791a85087 rustc: reduce redundant resolve errors. 2014-06-18 01:19:22 +01:00
Simon Sapin
3744d82851 Fix expected error message in a test.
The change is a result of the char/string parsing refactor.
2014-06-18 00:47:20 +02:00
Simon Sapin
b8a4c1415b Add br##"xx"## raw byte string literals. 2014-06-17 23:43:18 +02:00
Simon Sapin
d7e01b5809 Add a b"xx" byte string literal of type &'static [u8]. 2014-06-17 23:43:18 +02:00
Simon Sapin
bccdba0296 Add a b'x' byte literal of type u8. 2014-06-17 23:41:03 +02:00
Kevin Butler
207bfee214 rustc: Add self/super hint for extern crate resolve errors. 2014-06-17 22:08:56 +01:00
bors
ed3308098c auto merge of #14977 : pcwalton/rust/address-insignificant-reform, r=brson
`#[inline(never)]` is used.

Closes #8958.

This can break some code that relied on the addresses of statics
being distinct; add `#[inline(never)]` to the affected statics.

[breaking-change]

r? @brson
2014-06-17 20:41:38 +00:00
bors
2fd618e77a auto merge of #14976 : luqmana/rust/focwtc, r=pcwalton
Fixes #14959.
2014-06-17 18:56:35 +00:00
Patrick Walton
cad760b770 librustc: Make addresses of immutable statics insignificant unless
`#[inline(never)]` is used.

Closes #8958.

This can break some code that relied on the addresses of statics
being distinct; add `#[inline(never)]` to the affected statics.

[breaking-change]
2014-06-17 11:44:00 -07:00
Luqman Aden
8827395a3a librustc: Check regions for overloaded calls. 2014-06-17 14:27:37 -04:00
Alex Crichton
d400563e17 std: Chunk writing to stdout on windows
This just takes a similar approach to reading stdin on windows by artificially
limiting the size of the buffers going in and out.

Closes #14940
2014-06-16 22:12:15 -07:00
bors
09967665ea auto merge of #14955 : alexcrichton/rust/rollup, r=alexcrichton 2014-06-17 02:51:53 +00:00
Alex Crichton
375c5b884f Fix --disable-rpath and tests
This involved a few changes to the local build system:

* Makefiles now prefer our own LD_LIBRARY_PATH over the user's LD_LIBRARY_PATH
  in order to support building rust with rust already installed.
* The compiletest program was taught to correctly pass through the aux dir as a
  component of LD_LIBRARY_PATH in more situations.

This change was spliced out of #14832 to consist of just the fixes to running
tests without an rpath setting embedded in executables.
2014-06-16 18:16:45 -07:00
Alex Crichton
accb442b38 rustc: Don't mark type parameters as exported
This ends up causing the privacy pass to get all confused, and there's nothing
inherently exported about them anyway.

Closes #14933
2014-06-16 18:16:28 -07:00
John Schmidt
ebde8cfa61 Change prints: @T -> Gc<T> , ~T -> Box<T>
Fixes #14915
2014-06-16 18:16:01 -07:00
Kevin Butler
9945052e64 rustc: Improve span for error about using a method as a field.
libsyntax: ExprField now contains a SpannedIdent rather than Ident.

[breaking-change]
2014-06-16 18:15:54 -07:00
bors
cc30abbcad auto merge of #14855 : TeXitoi/rust/relicense-shootout-binarytrees, r=brson
Everyone agreed.

Related to #14248, close #14720

@brson OK?
2014-06-17 01:01:55 +00:00
bors
ad7508e39c auto merge of #14852 : TeXitoi/rust/relicense-shootout-pidigits, r=brson
Everyone agreed.

Related to #14248, close #14718

@brson OK?
2014-06-16 23:11:46 +00:00
Alex Crichton
04eced750e std: Improve pipe() functionality
* os::pipe() now returns IoResult<os::Pipe>
* os::pipe() is now unsafe because it does not arrange for deallocation of file
  descriptors
* os::Pipe fields are renamed from input to reader and out to write.
* PipeStream::pair() has been added. This is a safe method to get a pair of
  pipes.
* Dealing with pipes in native process bindings have been improved to be more
  robust in the face of failure and intermittent errors. This converts a few
  fail!() situations to Err situations.

Closes #9458
cc #13538
Closes #14724
[breaking-change]
2014-06-16 10:53:49 -07:00
Alex Crichton
89b0e6e12b Register new snapshots 2014-06-15 23:30:24 -07:00
Jakub Wieczorek
f6efb54d44 Fix an ICE on a cast from an inferred nil to uint
Fixes #10991.
2014-06-14 23:32:28 +02:00
Alex Crichton
ade807c6dc rustc: Obsolete the @ syntax entirely
This removes all remnants of `@` pointers from rustc. Additionally, this removes
the `GC` structure from the prelude as it seems odd exporting an experimental
type in the prelude by default.

Closes #14193
[breaking-change]
2014-06-14 10:45:37 -07:00
bors
d64f18c490 auto merge of #14884 : huonw/rust/getoptsfail, r=alexcrichton 2014-06-14 10:36:46 +00:00
bors
dbd29ea96e auto merge of #14874 : pcwalton/rust/enum-to-float-casts-part-deux, r=alexcrichton
Closes #14794.

If you're casting from an enum to a float, cast through an integer
first.

[breaking-change]

r? @alexcrichton
2014-06-14 08:46:48 +00:00
Cameron Zwarich
5878b5edb0 Add new tests for uses of mutably borrowed paths 2014-06-13 20:48:10 -07:00
Cameron Zwarich
d7de4e9aff Enforce stronger guarantees for mutable borrows
Implement the stronger guarantees for mutable borrows from #12624. This
removes the ability to read from a mutably borrowed path for the
duration of the borrow, and enforces a unique access path for any
mutable borrow, for both reads and writes.

This makes mutable borrows work better with concurrent accesses from
multiple threads, and it opens the door for allowing moves out of
mutably borrowed values, as long as a new value is written before the
mutable borrow ends. This also aligns Rust more closely with academic
languages based on substructural types and separation logic.

The most common situation triggering an error after this change is a
call to a function mutably borrowing self with self.field as one of the
arguments. The workaround is to bind self.field to a temporary, but the
need for these temporaries will hopefully go away after #6268 is fixed.

Another situation that triggers an error is using the head expression of
a match in an arm that binds a variable with a mutable reference. The
use of the head expression needs to be replaced with an expression that
reconstructs it from match-bound variables.

This fixes #12624.

[breaking-change]
2014-06-13 20:48:09 -07:00
Cameron Zwarich
45a1b97764 Make analyze_move_out_from more field-sensitive
Currently analyze_move_out_from checks all restrictions on all base
paths of the move path, but it only needs to check restrictions from
loans of the base paths, and can disregard restrictions from loans of
extensions of those base paths.
2014-06-13 20:48:09 -07:00
Huon Wilson
0642cbbde0 getopts: format failure messages with Show.
This obsoletes the old `to_err_msg` method. Replace

    println!("Error: {}", failure.to_err_msg())

    let string = failure.to_err_msg();

with

    println!("Error: {}", failure)

    let string = failure.to_str();

[breaking-change]
2014-06-14 11:11:09 +10:00
Alex Crichton
b7af25060a Rolling up PRs in the queue
Closes #14797 (librustc: Fix the issue with labels shadowing variable names by making)
Closes #14823 (Improve error messages for io::fs)
Closes #14827 (libsyntax: Allow `+` to separate trait bounds from objects.)
Closes #14834 (configure: Don't sync unused submodules)
Closes #14838 (Remove typo on collections::treemap::UnionItems)
Closes #14839 (Fix the unused struct field lint for struct variants)
Closes #14840 (Clarify `Any` docs)
Closes #14846 (rustc: [T, ..N] and [T, ..N+1] are not the same)
Closes #14847 (Audit usage of NativeMutex)
Closes #14850 (remove unnecessary PaX detection)
Closes #14856 (librustc: Take in account mutability when casting array to raw ptr.)
Closes #14859 (librustc: Forbid `transmute` from being called on types whose size is)
Closes #14860 (Fix `quote_pat!` & parse outer attributes in `quote_item!`)
2014-06-13 13:53:55 -07:00
Huon Wilson
f907d9772c syntax: parse outer attributes in quote_item! calls.
Fixes #14857.
2014-06-13 13:53:55 -07:00
Huon Wilson
9d5ec04d18 syntax: fix quote_pat! & unignore a quotation test. 2014-06-13 13:53:55 -07:00
Patrick Walton
c9f3f47702 librustc: Forbid transmute from being called on types whose size is
only known post-monomorphization, and report `transmute` errors before
the code is generated for that `transmute`.

This can break code that looked like:

    unsafe fn f<T>(x: T) {
        let y: int = transmute(x);
    }

Change such code to take a type parameter that has the same size as the
type being transmuted to.

Closes #12898.

[breaking-change]
2014-06-13 13:53:55 -07:00
Luqman Aden
8c4a10a159 librustc: Take in account mutability when casting array to raw ptr. 2014-06-13 13:53:35 -07:00
Jakub Wieczorek
42d538e615 Fix the unused struct field lint for struct variants
Fixes #14837.
2014-06-13 13:53:34 -07:00
Patrick Walton
9b9ef44233 libsyntax: Allow + to separate trait bounds from objects.
RFC #27.

After a snapshot, the old syntax will be removed.

This can break some code that looked like `foo as &Trait:Send`. Now you
will need to write `foo as (&Trait+Send)`.

Closes #12778.

[breaking-change]
2014-06-13 13:53:34 -07:00
Patrick Walton
2ed4734873 librustc: Fix the issue with labels shadowing variable names by making
the leading quote part of the identifier for the purposes of hygiene.

This adopts @jbclements' solution to #14539.

I'm not sure if this is a breaking change or not.

Closes #12512.

[breaking-change]
2014-06-13 13:53:34 -07:00
Patrick Walton
30772d94b1 librustc: Forbid enum-to-float casts.
Closes #14794.

If you're casting from an enum to a float, cast through an integer
first.

[breaking-change]
2014-06-13 11:23:47 -07:00
Niko Matsakis
9153d8ad6c Introduce VecPerParamSpace and use it to represent sets of types and
parameters

This involves numerous substeps:

1. Treat Self same as any other parameter.
2. No longer compute offsets for method parameters.
3. Store all generic types (both trait/impl and method) with a method,
   eliminating odd discrepancies.
4. Stop doing unspeakable things to static methods and instead just use
   the natural types, now that we can easily add the type parameters from
   trait into the method's polytype.
5. No doubt some more. It was hard to separate these into distinct commits.

Fixes #13564
2014-06-13 13:20:24 -04:00
bors
0422934e24 auto merge of #14831 : alexcrichton/rust/format-intl, r=brson
* The select/plural methods from format strings are removed
* The # character no longer needs to be escaped
* The \-based escapes have been removed
* '{{' is now an escape for '{'
* '}}' is now an escape for '}'

Closes #14810
[breaking-change]
2014-06-13 14:42:03 +00:00
Nick Cameron
984e9afae5 Dump results of analysis phase as CSV
Adds the option -Zsave-analysis which will dump the results of syntax and type checking into CSV files. These can be interpreted by tools such as DXR to provide semantic information about Rust programs for code search, cross-reference, etc.

Authored by Nick Cameron and Peter Elmers (@pelmers; including enums, type parameters/generics).
2014-06-13 21:09:50 +12:00
Guillaume Pinot
15f65bae65 Relicense shootout-binarytrees.rs
Everyone agreed.

Related to #14248, close #14720
2014-06-12 23:41:48 +02:00
Guillaume Pinot
fed6e8b5c1 Relicense shootout-pidigits.rs
Everyone agreed.

Related to #14248, close #14718
2014-06-12 22:47:40 +02:00