Commit Graph

4200 Commits

Author SHA1 Message Date
bors
600507d538 auto merge of #13782 : alexcrichton/rust/issue-13775, r=pcwalton
These often crop up when using default methods that don't actually bind their
argument names.

Closes #13775
2014-05-05 13:46:31 -07:00
bors
fd625dda9a auto merge of #13271 : stepancheg/rust/align, r=pcwalton
This patch fixes issue #13186.

When generating constant expression for enum, it is possible that
alignment of expression may be not equal to alignment of type.  In that
case space after last struct field must be padded to match size of value
and size of struct. This commit adds that padding.

See detailed explanation in src/test/run-pass/trans-tag-static-padding.rs
2014-05-05 10:06:39 -07:00
Alex Crichton
877f09bf96 Register new snapshots 2014-05-04 22:35:21 -07:00
bors
9c1761d0ab auto merge of #13908 : pcwalton/rust/box-pattern, r=alexcrichton
r? @alexcrichton
2014-05-04 05:36:49 -07:00
bors
de99da3fa5 auto merge of #13898 : nikomatsakis/rust/type-bounds-b, r=acrichto
This is needed to bootstrap fix for #5723.
2014-05-04 03:41:50 -07:00
Niko Matsakis
92b741aad4 Skip pretty printing for the regions bound test 2014-05-03 22:05:21 -04:00
bors
afed55b99b auto merge of #13906 : alexcrichton/rust/issue-13620, r=luqmana
This ensures that private functions exported through static initializers will
actually end up being public in the object file (so other objects can continue
to reference the function).

Closes #13620
2014-05-03 15:56:51 -07:00
bors
4f1b0b5199 auto merge of #13685 : Ryman/rust/issue7575, r=alexcrichton
Closes #7575.

I don't think the change from a contains lookup to an iteration of the HashSet in the resolver should be much of a burden as the set of methods with the same name should be relatively small.
2014-05-03 12:21:47 -07:00
Niko Matsakis
5fe2f01dee Temporary patch to accept arbitrary lifetimes (behind feature gate) in bound lists. This is needed to bootstrap fix for #5723. 2014-05-03 13:53:07 -04:00
bors
bca9647cd3 auto merge of #13904 : pcwalton/rust/box, r=alexcrichton
r? @alexcrichton

RFC#14 

Issue #13885.
2014-05-03 09:31:49 -07:00
bors
757f106bcc auto merge of #13868 : FlaPer87/rust/opt-in-phase1, r=alexcrichton
This is a first patch towards an opt-in built-in trait world. This patch removes the restriction on built-in traits and allows such traits to be derived.

[RFC#3]

cc #13231

@nikomatsakis r?
2014-05-03 08:06:49 -07:00
bors
f072984ac4 auto merge of #13899 : bjz/rust/simd, r=pcwalton
cc. @pcwalton
2014-05-03 04:21:51 -07:00
Patrick Walton
80b43de5ab libsyntax: Add box PAT to the pattern grammar. RFC #14. 2014-05-02 18:31:16 -07:00
Patrick Walton
7c64f03607 librustc: Implement the Box<T> type syntax. RFC #14. Issue #13885. 2014-05-02 18:27:50 -07:00
Alex Crichton
18ac26565f rustc: Crawl static initializers for reachability
This ensures that private functions exported through static initializers will
actually end up being public in the object file (so other objects can continue
to reference the function).

Closes #13620
2014-05-02 15:40:07 -07:00
Kevin Butler
cb08cb8aef Provide a note if method lookup fails and there are static definitions with the same name. 2014-05-02 22:46:26 +01:00
Brendan Zabarauskas
d0da4cfee7 Implement comparison operators for int and uint SIMD vectors 2014-05-02 12:04:44 -07:00
bors
adcbf53955 auto merge of #13886 : japaric/rust/fix-an-typos, r=alexcrichton
Found the first one in the rust reference docs. I was going to submit a PR with one fix, but figured I could look for more... This is the result.
2014-05-01 20:11:47 -07:00
Jorge Aparicio
e4bf643b99 Fix a/an typos 2014-05-01 20:02:11 -05:00
bors
9f836d5a53 auto merge of #13877 : thestinger/rust/de-tilde-str-vec, r=alexcrichton 2014-05-01 16:06:48 -07:00
Daniel Micay
7852625b86 remove leftover obsolete string literals 2014-05-01 17:42:57 -04:00
Flavio Percoco
c39271e99c Allow built-in traits to be derived
[RFC #3]

cc #13231
2014-05-01 23:05:16 +02:00
Brendan Zabarauskas
6dd7a56ed4 Add more comprehensive unit tests for SIMD binops 2014-05-01 10:51:33 -07:00
Alex Crichton
8c87eff700 rustc: Fix def ids of xcrate-reexported items
This was just a typo in the decoder using the source crate's number rather than
the destination crate's number of a reexport.

Closes #13872
2014-04-30 19:24:21 -07:00
bors
ad37c0b97c auto merge of #12740 : nical/rust/json-streaming, r=erickt
Hi rust enthusiasts,

With this patch I propose to add a "streaming" API to the existing json parser in libserialize.

By "streaming" I mean a parser that let you act on JsonEvents that are generated as while parsing happens, as opposed to parsing the entire source, generating a big data structure and working with this data structure. I think both approaches have their pros and cons so this pull request adds the streaming API, preserving the existing one.

The streaming API is simple: It consist into an Iterator<JsonEvent> that consumes an Iterator<char>. JsonEvent is an enum with values such as NumberValue(f64), BeginList, EndList, BeginObject, etc.

The user would ideally use the API as follows:

```
for evt in StreamingParser::new(src) {
  match evt {
    BeginList => {
       // ...
    }
    // ...
  }
}
```

The iterator provides a stack() method returning a slice of StackNodes which represent "where we currently are" in the logical structure of the json stream (for instance at "foo.bar[3].x" you get [ Key("foo"), Key("bar"), Index(3), Key("x") ].)

I wrote "ideally" above because the current way rust expands for loops, you can't call the stack() method because the iterator is already borrowed. So for know you need to manually advance the iterator in the loop. I hope this is something we can cope with, until for loops are better integrated with the compiler.

Streaming parsers are useful when you want to read from a json stream, generate a custom data structure and you know how the json is going to be structured. For example, imagine you have to parse a 3D mesh file represented in the json format. In this case you probably expect to have large arrays of vertices and using the generic parser will be very inefficient because it will create a big list of all these vertices, which you will copy into a contiguous array afterwards (so you end up doing a lot of small allocations, parsing the json once and parsing the data structure afterwards). With a streaming parser, you can add the vertices to a contiguous array as they come in without paying the cost of creating the intermediate Json data structure. You have much fewer allocations since you write directly in the final data structure and you can be smart in how you will pre-allocate it.

I added added this directly into serialize::json rather than in its own library because it turns out I can reuse most of the existing code whereas maintaining a separate library (which I did originally) forces me to duplicate this code.

I wrote this trying to minimize the size of the patch so there may be places where the code could be nicer at the expenses of more changes (let me know what you prefer).

This is my first (potential) contribution to rust, so please let me know if I am doing something wrong (maybe I should have first introduced this proposition in the mailing list, or opened a github issue, etc.?). I work a few meters away from @pknfelix so I am not too hard to find :)
2014-04-30 02:01:43 -07:00
bors
7a19a82d11 auto merge of #13811 : alexcrichton/rust/closed-issues, r=sfackler
Closes #5518
Closes #7320
Closes #8391
Closes #8827
Closes #8983
Closes #10683
Closes #10802
Closes #11515
2014-04-27 23:06:41 -07:00
Alex Crichton
35f295d2a9 test: Add tests for closed issues
Closes #5518
Closes #7320
Closes #8391
Closes #8827
Closes #8983
Closes #10683
Closes #10802
Closes #11515
2014-04-27 20:35:51 -07:00
Nicolas Silva
02c45dece4 Fix test issue-4016.rs with the json API change 2014-04-27 23:09:57 +02:00
klutzy
1efb668aaa test: Rename a test to bypass UAC on windows 2014-04-27 15:13:37 +09:00
Alex Crichton
cf9dd7008e rustc: Don't die on 0-length pattern idents
These often crop up when using default methods that don't actually bind their
argument names.

Closes #13775
2014-04-26 10:24:47 -07:00
bors
ade02bb534 auto merge of #13769 : alexcrichton/rust/restrict-some-scopes, r=huonw
This addresses the ICE from #13763, but it does not allow the test to compile,
due to #13768. An alternate test was checked in in the meantime.

Closes #13763
2014-04-26 06:46:24 -07:00
Alex Crichton
87bac6db13 rustc: Restrict the scope of a borrow on def_map
This addresses the ICE from #13763, but it does not allow the test to compile,
due to #13768. An alternate test was checked in in the meantime.

Closes #13763
2014-04-25 14:45:12 -07:00
bors
0be4c3372a auto merge of #13741 : klutzy/rust/test-reachable, r=alexcrichton
It didn't work because it tried to call itself but symbols are not
exported as default in executables.

Note that `fun5` is not internal anymore since it is in library.

Second commit removes/updates some old tests.
2014-04-25 10:51:24 -07:00
klutzy
550f975f6d test: Remove/update some old ignored tests 2014-04-25 19:45:53 +09:00
klutzy
0f52122fa2 test: Enable extern-fn-reachable test
It didn't work because it tried to call itself but symbols are not
exported as default in executables.

Note that `fun5` is not internal anymore since it is in library.
2014-04-25 17:07:56 +09:00
Michael Darakananda
7c5d48a09e Cleaned up os::consts. The module only exposes constants for the target OS and arch.
Constants for other OS's and arch's must be defined manually.
[breaking-change]
2014-04-25 00:38:05 -04:00
bors
f5a5d7c32c auto merge of #13559 : FlaPer87/rust/remove-special-root, r=nikomatsakis
This patch removes the special auto-rooting for `@` from the borrow checker. With `@` moving into a library, it doesn't make sense to keep this code around anymore. It also simplifies `trans` by removing root checking from there 

@nikomatsakis

Closes: #11586
2014-04-24 05:51:28 -07:00
bors
867898977d auto merge of #12812 : sfackler/rust/attr-arm, r=alexcrichton
This is really only useful for #[cfg()]. For example:

```rust
enum Foo {
    Bar,
    Baz,
    #[cfg(blob)]
    Blob
}

fn match_foos(f: &Foo) {
    match *f {
        Bar => {}
        Baz => {}
        #[cfg(blob)]
        Blob => {}
    }
}
```

This is a kind of weird place to allow attributes, so it should probably
be discussed before merging.
2014-04-23 23:51:30 -07:00
Steven Fackler
1452c9c04a Allow attributes on match arms
RFC: 0008-match-arm-attributes
2014-04-23 21:48:22 -07:00
bors
0e750adefc auto merge of #13675 : sfackler/rust/taskbuilder-new, r=alexcrichton
The constructor for `TaskBuilder` is being changed to an associated
function called `new` for consistency with the rest of the standard
library.

Closes #13666

[breaking-change]
2014-04-23 20:31:36 -07:00
Steven Fackler
adeeadf49f Move task::task() to TaskBuilder::new()
The constructor for `TaskBuilder` is being changed to an associated
function called `new` for consistency with the rest of the standard
library.

Closes #13666

[breaking-change]
2014-04-23 20:02:02 -07:00
bors
6beb376b5c auto merge of #13686 : alexcrichton/rust/issue-12224, r=nikomatsakis
This alters the borrow checker's requirements on invoking closures from
requiring an immutable borrow to requiring a unique immutable borrow. This means 
that it is illegal to invoke a closure through a `&` pointer because there is no 
guarantee that is not aliased. This does not mean that a closure is required to
be in a mutable location, but rather a location which can be proven to be
unique (often through a mutable pointer).
                                                                                 
For example, the following code is unsound and is no longer allowed:             
                                                                                 
    type Fn<'a> = ||:'a;                                                         
                                                                                 
    fn call(f: |Fn|) {                                                           
        f(|| {                                                                   
            f(|| {})                                                             
        });                                                                      
    }                                                                            
                                                                                 
    fn main() {                                                                  
        call(|a| {                                                               
            a();                                                                 
        });                                                                      
    }                                                                            
                                                                                 
There is no replacement for this pattern. For all closures which are stored in
structures, it was previously allowed to invoke the closure through `&self` but
it now requires invocation through `&mut self`.

The standard library has a good number of violations of this new rule, but the
fixes will be separated into multiple breaking change commits.
                                                                                 
Closes #12224
2014-04-23 12:01:53 -07:00
Alex Crichton
823c7eee6a Fix other bugs with new closure borrowing
This fixes various issues throughout the standard distribution and tests.
2014-04-23 10:03:43 -07:00
bors
b5dd3f05fe auto merge of #13689 : alexcrichton/rust/ignore-tcp-connect-freebsd, r=brson
The BSD builders are failing with a different error that is not a timeout error
(Connection reset by peer), so this test isn't really all that useful on
freebsd. Due to a lack of a better idea of how to test a connect timeout, this
test is going to just be ignored for now.
2014-04-23 09:56:38 -07:00
Flavio Percoco
aff620de1e rustc: Remove moved_variables_set 2014-04-23 18:22:05 +02:00
Flavio Percoco
fa43f6a7a6 Update tests and move other tests around 2014-04-23 18:19:36 +02:00
Flavio Percoco
71f054ddd0 Remove special rooting code from trans
[breaking-change]

cc #11586
2014-04-23 18:19:05 +02:00
Alex Crichton
aa849fb6ca test: Ignore tcp-connect-timeout on freebsd
The BSD builders are failing with a different error that is not a timeout error
(Connection reset by peer), so this test isn't really all that useful on
freebsd. Due to a lack of a better idea of how to test a connect timeout, this
test is going to just be ignored for now.
2014-04-23 08:40:41 -07:00
bors
696f16ec2e auto merge of #13398 : nick29581/rust/unsized-enum, r=nikomatsakis
Now with proper checking of enums and allows unsized fields as the last field in a struct or variant. This PR only checks passing of unsized types and distinguishing them from sized ones. To be safe we also need to control storage.

Closes issues #12969 and #13121, supersedes #13375 (all the discussion there is valid here too).
2014-04-22 20:51:31 -07:00
Nick Cameron
5729d9b413 Review changes 2014-04-23 15:44:24 +12:00