Commit Graph

32755 Commits

Author SHA1 Message Date
Keegan McAllister
61bf75bb5e Add a guide to compiler plugins
Fixes #16983.
2014-10-01 13:21:52 -07:00
Keegan McAllister
58c428fbf2 Add a red-box warning to the macros guide 2014-10-01 13:21:52 -07:00
Keegan McAllister
dfcfd008fa Update some old references to rust.md 2014-10-01 13:21:52 -07:00
Keegan McAllister
e3828026d5 Use relative doc URLs in top-level guides 2014-10-01 13:21:52 -07:00
Keegan McAllister
4ced7a9637 Add some notes about macro scoping 2014-10-01 13:21:52 -07:00
Keegan McAllister
c8bdba77fc rust.css: Make it more clear when code spans are links 2014-10-01 12:12:56 -07:00
bors
49fcb27df6 auto merge of #17667 : wizeman/rust/fix-override-env, r=alexcrichton
In some build environments (such as chrooted Nix builds), `env` can only
be found in the explicitly-provided PATH, not in default places such as
/bin or /usr/bin. So we need to pass-through PATH when spawning the
`env` sub-process.

Fixes #17617
2014-10-01 15:32:30 +00:00
bors
00ebebb258 auto merge of #17654 : gereeter/rust/no-unnecessary-cell, r=alexcrichton
There is more that could be done, but this was the low hanging fruit.
2014-10-01 13:27:24 +00:00
bors
8ab6fce95e auto merge of #17653 : kaini/rust/master, r=alexcrichton
Fixes that unit-like structs cannot be used if they are re-exported and used in another crate. (ICE)
The relevant changes are in `rustc::metadata::{decoder, encoder}` and `rustc::middle::ty`.

A test case is included.

The problem is that the expressoin `UnitStruct` is an `ExprPath` to an `DefFn`, which is of expr kind `RvalueDatumExpr`, but for unit-struct ctors the expr kind should be `RvalueDpsExpr`. I fixed this (in a I guess clean way) by introducing `CtorFn` in the metadata and including a `is_ctor` flag in `DefFn`.
2014-10-01 11:27:23 +00:00
bors
ff2616e847 auto merge of #17630 : sfackler/rust/cfg-warnings, r=brson
Closes #17490
2014-10-01 09:22:15 +00:00
bors
60e7317345 auto merge of #17501 : pcwalton/rust/improve-method-lookup-autoderef, r=nikomatsakis
prefer `Deref` over `DerefMut` in all other circumstances.

Because the compiler now prefers `Deref`, this can break code that
looked like:

    let mut foo = bar.borrow_mut();
    (*foo).call_something_that_requires_mutable_self();

Replace this code with:

    let mut foo = bar.baz();
    (&mut *foo).call_something_that_requires_mutable_self();

Closes #12825.

[breaking-change]

r? @nikomatsakis
2014-10-01 07:22:18 +00:00
bors
fe93a549a4 auto merge of #17132 : reem/rust/any-static-bound, r=alexcrichton
This bound is already implicit through the AnyPrivate trait,
but since it is not explicit, you still have to write Box<Any + 'static>,
even though Any can only be 'static.

Introducing the 'static bound here makes this bound explicit, making
Box<Any> legal.
2014-10-01 05:32:16 +00:00
bors
2f15dcd4d3 auto merge of #17584 : pcwalton/rust/range-patterns-dotdotdot, r=nick29581
This breaks code that looks like:

    match foo {
        1..3 => { ... }
    }

Instead, write:

    match foo {
        1...3 => { ... }
    }

Closes #17295.

r? @nick29581
2014-10-01 03:17:24 +00:00
Jonathan Reem
0cf60b6bb8 Bound Any with 'static
This bound is already implicit through the AnyPrivate trait,
but since it is not explicit, you still have to write Box<Any + 'static>,
even though Any can only be 'static.

Introducing the 'static bound here makes this bound explicit, making
Box<Any> legal.
2014-09-30 18:40:07 -07:00
Ricardo M. Correia
5f4c2800fc libstd: Pass-through PATH in test_override_env
In some build environments (such as chrooted Nix builds), `env` can only
be found in the explicitly-provided PATH, not in default places such as
/bin or /usr/bin. So we need to pass-through PATH when spawning the
`env` sub-process.

Fixes #17617
2014-10-01 03:35:35 +02:00
bors
57a05cf49b auto merge of #17634 : jakub-/rust/if_let, r=kballard
Continuation of https://github.com/rust-lang/rust/pull/16741.
2014-09-30 23:17:20 +00:00
Patrick Walton
496cc4c0d4 librustc: Fix up mutability in method autoderefs if incorrect, and
prefer `Deref` over `DerefMut` in all other circumstances.

Closes #12825.
2014-09-30 14:38:04 -07:00
bors
88d1a22f76 auto merge of #17479 : gamazeps/rust/issue17478, r=alexcrichton
closes #17478
2014-09-30 20:27:16 +00:00
Steven Fackler
b4909f6eb7 Fix rustdoc 2014-09-30 12:52:47 -07:00
Steven Fackler
d9eac5d99c Fix librustuv 2014-09-30 12:52:47 -07:00
Steven Fackler
d3444779e6 Fix libnative 2014-09-30 12:52:47 -07:00
Steven Fackler
efbb15d59c Fix libgreen 2014-09-30 12:52:47 -07:00
Steven Fackler
c4e0755245 Fix librustc_llvm 2014-09-30 12:52:47 -07:00
Steven Fackler
99e2bb79b6 Fix librustc 2014-09-30 12:52:47 -07:00
Steven Fackler
d2caea2beb Fix librustc_back 2014-09-30 12:52:47 -07:00
Steven Fackler
448c8bf24e Fix libtime 2014-09-30 12:52:46 -07:00
Steven Fackler
ad83352618 Fix librustrt 2014-09-30 12:52:46 -07:00
Steven Fackler
d5647a8ea3 Fix libstd 2014-09-30 12:52:00 -07:00
Steven Fackler
1e0c7b682f Fix liballoc 2014-09-30 12:52:00 -07:00
Steven Fackler
c76151529a Fix cfg warnings for liblibc 2014-09-30 12:52:00 -07:00
Steven Fackler
92013a849d Turn on cfg format warnings 2014-09-30 12:52:00 -07:00
bors
823f10802f auto merge of #17639 : brson/rust/windbg2, r=pcwalton
I swear this is the last step. p=1 please so i can get the bots changed over before the test suite regresses again.
2014-09-30 18:37:24 +00:00
Jakub Wieczorek
e723051a2e Temporarily remove the description for the diagnostic E0162
It turns out that adding new diagnostics is causing link failures
in runpass-full-deps tests. Further investigation pending.
2014-09-30 18:54:03 +02:00
Jakub Wieczorek
5254ccc7c1 Update after the fall out from the syntax::ptr changes 2014-09-30 18:54:03 +02:00
Jakub Wieczorek
e53f4a6b94 Add if let to the reference 2014-09-30 18:54:03 +02:00
Kevin Ballard
13e00e4a3d Update based on PR feedback 2014-09-30 18:54:03 +02:00
Kevin Ballard
8a60952100 Move if let behind a feature gate 2014-09-30 18:54:03 +02:00
Kevin Ballard
976438f78f Produce a better error for irrefutable if let patterns
Modify ast::ExprMatch to include a new value of type ast::MatchSource,
making it easy to tell whether the match was written literally or
produced via desugaring. This allows us to customize error messages
appropriately.
2014-09-30 18:54:02 +02:00
Kevin Ballard
1bc407fb84 Add tests for if let 2014-09-30 18:54:02 +02:00
Kevin Ballard
0e6ff432dc Desugar 'if let' into the appropriate 'match' 2014-09-30 18:54:02 +02:00
Kevin Ballard
5d8cfd53b5 Teach libsyntax about if let 2014-09-30 18:54:02 +02:00
bors
fa6b2d4c3b auto merge of #17647 : pcwalton/rust/stop-looking-in-metadata-in-tc, r=cmr
I don't know exactly what made this regress so badly…maybe it was all the lifetimes that @eddyb landed. According to `git blame` this is all somewhat old code. Regardless this is an enormous improvement in compile times.

r? @brson
2014-09-30 16:47:27 +00:00
Brian Anderson
40ce87f6ed Ignore yet another windows debuginfo test 2014-09-30 09:18:16 -07:00
Patrick Walton
416144b827 librustc: Forbid .. in range patterns.
This breaks code that looks like:

    match foo {
        1..3 => { ... }
    }

Instead, write:

    match foo {
        1...3 => { ... }
    }

Closes #17295.

[breaking-change]
2014-09-30 09:11:26 -07:00
Michael Kainer
065a5b0424 Fixes ICE when using reexported unit-like structs
Fixes that unit-like structs cannot be used if they are reexported and
used in another crate. The compiler fails with an ICE, because unit-like
structs are exported as DefFn and the expression `UnitStruct` is
interpreted as function pointer instead of a call to the constructor.

To resolve this ambiguity tuple-like struct constructors are now exported
as CtorFn. When `rustc::metadata::decoder` finds a CtorFn it sets a new
flag `is_ctor` in DefFn to true.

Relevant changes are in `rustc::metadata::{encoder, decoder}` and in
`rustc::middle::ty`.

Closes #12660 and #16973.
2014-09-30 16:22:55 +02:00
Patrick Walton
78e2503db3 librustc: Stop looking in metadata in type contents.
4x improvement in pre-trans compile time for rustc.
2014-09-30 05:52:08 -07:00
bors
38015eeb70 auto merge of #17640 : brson/rust/wininst, r=alexcrichton
This makes the windows `make dist` target start producing binary tarballs, and tweaks install.sh so they work, in preparation for working on a combined Rust+Cargo installer.
2014-09-30 12:27:27 +00:00
Jonathan S
25b40841a5 Removed some unnecessary RefCells from resolve 2014-09-30 05:12:34 -05:00
bors
d2f8d4c505 auto merge of #17563 : brson/rust/wintcbfix, r=thestinger
This is the bare minimum to stop using split stacks on Windows, fixing https://github.com/rust-lang/rust/issues/13259 and #14742, by turning on stack probes for all functions and disabling compiler and runtime support for split stacks on Windows.

It does not restore the out-of-stack error message, which requires more runtime work.

This includes a test that the Windows TCB is no longer being clobbered, but the out-of-stack test itself is pretty weak, only testing that the program exits abnormally, not that it isn't writing to bogus memory, so I haven't truly verified that this is providing the safety we claim.

A more complete solution is in https://github.com/rust-lang/rust/pull/16388, which has some unresolved issues yet.

cc @Zoxc @klutzy @vadimcn
2014-09-30 06:47:25 +00:00
bors
7409050421 auto merge of #17468 : nick29581/rust/dst-bug-nostd, r=nikomatsakis
closes #17392 

r? @nikomatsakis 

Kind of a first draft because I'm not sure if this is the right approach. I believe the general idea of giving an error rather than an ICE in obligation_for_builtin_bound is right, but not sure about returning an Option, etc.

Also, could probably have a better error message.
2014-09-29 23:52:21 +00:00