Commit Graph

33623 Commits

Author SHA1 Message Date
Robin Gloster
0b8bd6f667 plugin-guide: nicer creation of the parser 2014-10-23 17:21:24 +02:00
Simon Sapin
941d90d97f Add syntax::print::pprint::view_item_to_string
… similar to the existing `item_to_string`.

There may be more missing like this.
2014-10-23 23:56:33 +09:00
areski
fe6847a25b Improved examples on Vec documentation
- shrink_to_fit example is now more clear by asserting the capacity value
2014-10-23 16:45:36 +02:00
Steve Klabnik
4a74af62c6 Improve code in the intro.
All these stars aren't needed anymore.
2014-10-23 09:36:34 -04:00
Steve Klabnik
0c3ad8be5b build the crates guide 2014-10-23 07:40:29 -04:00
bors
37f2db769f auto merge of #18217 : mikedilger/rust/bug_report_instructions, r=pnkfelix
Fixed as per @pnkfelix comments in #17848
2014-10-23 11:37:12 +00:00
Björn Steinbrink
70fe20a698 Fix codegen breaking aliasing rules for functions with sret results
This reverts commit a0ec902e23 "Avoid
unnecessary temporary on assignments".

Leaving out the temporary for the functions return value can lead to a
situation that conflicts with rust's aliasing rules.

Given this:

````rust
fn func(f: &mut Foo) -> Foo { /* ... */ }

fn bar() {
    let mut foo = Foo { /* ... */ };

    foo = func(&mut foo);
}
````

We effectively get two mutable references to the same variable `foo` at
the same time. One for the parameter `f`, and one for the hidden
out-pointer. So we can't just `trans_into` the destination directly, but
must use `trans` to get a new temporary slot from which the result can
be copied.
2014-10-23 11:43:48 +02:00
bors
8a40854660 auto merge of #17868 : nick29581/rust/valgrind, r=alexcrichton
r? @alexcrichton
2014-10-23 05:27:11 +00:00
Nick Cameron
80ff1d1a10 Error if we should be able to Valgrind but can't 2014-10-23 14:28:52 +13:00
Jonathan S
2343e9d354 Part of #6993. Moved a bunch of uses of Ident to Name 2014-10-22 20:23:13 -05:00
Nick Cameron
1285d4f467 Remove support for .rc files from test.mk 2014-10-23 13:52:35 +13:00
Nick Cameron
c562b5bd9d Make rpass-valgrind work with pretty 2014-10-23 13:52:34 +13:00
Nick Cameron
edc5275563 Move some tests to run-pass-valgrind 2014-10-23 13:52:34 +13:00
Nick Cameron
f466e1a59f Add run-pass-valgrind tests
Closes #16914
2014-10-23 13:52:34 +13:00
bors
96991e9335 auto merge of #18224 : nikomatsakis/rust/issue-17594, r=alexcrichton
Add test for issue #17594

Fixes #17594
2014-10-22 23:57:11 +00:00
areski
ebdc3046a4 Fixed single quote around string slice and simplify example
This patch contains a fix for:
- single quote around string slice
- string: String is confusing for newbies and it's more readble if the
  argument name is different that the argument type name
2014-10-23 00:44:17 +02:00
bors
7d7e409839 auto merge of #18092 : michaelwoerister/rust/lldb-test-versioning, r=alexcrichton
Now that there are build bots with a stable enough LLDB version on OSX we can finally let the tests run on every PR!
😹
2014-10-22 21:32:16 +00:00
bors
9f0c29af02 auto merge of #17846 : tomjakubowski/rust/rustdoc-hide-private-traits, r=alexcrichton
Fix #16563
2014-10-22 16:47:14 +00:00
Niko Matsakis
de06faf889 Use local cache when there are unbound type variables and where clauses in scope.
Fixes #18209.
2014-10-22 11:35:53 -04:00
bors
1d647564b1 auto merge of #18230 : cakebaker/rust/adapt_range_value_to_variable_name, r=steveklabnik
The variable name <code>one_to_one_hundred</code> implies that it will contain a collection with the values from 1 to 100, but the collection contains the values from 0 to 99. This patch changes the ranges to produce a collection with the values from 1 to 100.
2014-10-22 14:32:11 +00:00
Daniel Hofstetter
cb5593a448 Guide: Change >= to > in closure 2014-10-22 16:16:05 +02:00
Daniel Hofstetter
88cf0b92dd Guide: Adapt range values to variable name 2014-10-22 15:32:28 +02:00
bors
d44ea720fa auto merge of #18223 : nikomatsakis/rust/coherence-orphan-18222, r=pcwalton
Adjust orphan rules to consider all input types, not just self type.

Fixes #18222.

r? @pcwalton
2014-10-22 09:22:09 +00:00
Michael Woerister
423dca7fc6 debuginfo: Print more output in lldb_batchmode.py for better error logs. 2014-10-22 11:08:21 +02:00
Michael Woerister
7fadda6e7e debuginfo: Let LLDB tests run in parallel again since our min-supported version has no problems with that. 2014-10-22 10:47:46 +02:00
Michael Woerister
93bd605c58 debuginfo: Enable LLDB test suite on Darwin. 2014-10-22 10:47:45 +02:00
Michael Woerister
dbf0167de9 debuginfo: Make some path LLDB-related paths in the test runner absolute to help the build bots. 2014-10-22 10:47:45 +02:00
Michael Woerister
47e8cf7697 debuginfo: Gate all LLDB debuginfo tests on a minimum LLDB version being available 2014-10-22 10:47:45 +02:00
bors
7088c45ef4 auto merge of #18141 : phildawes/rust/master, r=brson
Hello! I noticed spans are wrong for the PatIdents of self args. (I use spans a lot in racer)
2014-10-22 07:07:09 +00:00
bors
c29a7520e7 auto merge of #18213 : pcwalton/rust/pcg-default, r=aturon
Enable parallel codegen (2 units) by default when --opt-level is 0 or 1.  This
gives a minor speedup on large crates (~10%), with only a tiny slowdown (~2%)
for small ones (which usually build in under a second regardless).  The current
default (no parallelization) is used when the user requests optimization
(--opt-level 2 or 3), and when the user has enabled LTO (which is incompatible
with parallel codegen).

This commit also changes the rust build system to use parallel codegen
when appropriate.  This means codegen-units=4 for stage0 always, and
also for stage1 and stage2 when configured with --disable-optimize.
(Other settings use codegen-units=1 for stage1 and stage2, to get
maximum performance for release binaries.)  The build system also sets
codegen-units=1 for compiletest tests (compiletest does its own
parallelization) and uses the same setting as stage2 for crate tests.

r? @aturon
2014-10-22 04:42:11 +00:00
Niko Matsakis
7b021859a4 Add test for issue #17594 2014-10-21 23:58:09 -04:00
Niko Matsakis
aeba2ccf30 Adjust orphan rules to consider all input types, not just self type.
Fixes #18222.
2014-10-21 23:52:00 -04:00
Mike Dilger
f11f58dc97 Fix issue #17848 (Questionable advice in bug report instructions) 2014-10-22 13:58:31 +13:00
bors
3d2cf60631 auto merge of #18121 : nikomatsakis/rust/method-call-use-trait-matching-infrastructure-2, r=pcwalton
Convert trait method dispatch to use new trait matching machinery.

This fixes about 90% of #17918. What remains to be done is to make inherent dispatch work with conditional dispatch as well. I plan to do this in a future patch by generalizing the "method match" code slightly to work for inherent impls as well (the basic algorithm is precisely the same).

Fixes #17178.

This is a [breaking-change] for two reasons:

1. The old code was a bit broken. I found various minor cases, particularly around operators, where the old code incorrectly matched, but an extra `*` or other change is now required. (See commit e8cef25 ("Correct case where the old version of method lookup...") for examples.)
2. The old code didn't type check calls against the method signature from the *trait* but rather the *impl*. The two can be different in subtle ways. This makes the new method dispatch both more liberal and more conservative than the original. (See commit 8308332 ("The new method lookup mechanism typechecks...") for examples.)

r? @pcwalton since he's been reviewing most of this series of changes
f? @nick29581 for commit 39df55f ("Permit DST types to unify like other types")
cc @aturon as this relates to library stabilization
2014-10-22 00:22:04 +00:00
Stuart Pernsteiner
c245c5bbad enable parallel codegen by default
Enable parallel codegen (2 units) by default when --opt-level is 0 or 1.  This
gives a minor speedup on large crates (~10%), with only a tiny slowdown (~2%)
for small ones (which usually build in under a second regardless).  The current
default (no parallelization) is used when the user requests optimization
(--opt-level 2 or 3), and when the user has enabled LTO (which is incompatible
with parallel codegen).

This commit also changes the rust build system to use parallel codegen
when appropriate.  This means codegen-units=4 for stage0 always, and
also for stage1 and stage2 when configured with --disable-optimize.
(Other settings use codegen-units=1 for stage1 and stage2, to get
maximum performance for release binaries.)  The build system also sets
codegen-units=1 for compiletest tests (compiletest does its own
parallelization) and uses the same setting as stage2 for crate tests.
2014-10-21 14:46:16 -07:00
Niko Matsakis
b066d09be8 Patch up broken error messages 2014-10-21 17:36:15 -04:00
bors
2130f22216 auto merge of #18203 : mahkoh/rust/cstring, r=thestinger
This is about 20x faster on my machine.
2014-10-21 19:32:10 +00:00
Niko Matsakis
646ec7d9a9 Address nits by @pcwalton 2014-10-21 12:32:37 -04:00
Niko Matsakis
53ede4403b Coherence tests that seemed to be missing. 2014-10-21 12:32:37 -04:00
Niko Matsakis
450263de4a Tests for method resolution in the face of various ambiguities or non-ambiguities. These
are mostly new tests though I also revamped (and renamed) some of the existing tests.
2014-10-21 12:32:36 -04:00
Niko Matsakis
e09fc03701 Various minor cases where errors are reported in slightly different ways. 2014-10-21 12:32:36 -04:00
Niko Matsakis
7f8ca53669 Test where the old infrastructure failed to detect the (applicable) impl of FnMut for
some reason.
2014-10-21 12:32:36 -04:00
Niko Matsakis
df714cfda7 The new method lookup mechanism typechecks calls against the method type declared in the trait, not in the impl. In some cases that results in tighter rules, and in some cases looser. Correct for that. 2014-10-21 12:32:36 -04:00
Niko Matsakis
98e237a681 Correct case where the old version of method lookup was incorrectly matching,
as far as I can tell.
2014-10-21 12:32:36 -04:00
Niko Matsakis
dad2db7c83 Change method lookup infrastructure to use the trait methods. Instead
of tracking individual candidates per impl, we just track one
candidate for the extension trait itself, and let the trait resolution
handle walking the individual impls and so forth. Also change the
interface to report back a richer notion of error.
2014-10-21 12:32:36 -04:00
Tom Jakubowski
370c9c54c2 rustdoc: hide private traits in strip-private pass
Fix #16563
2014-10-21 08:49:43 -07:00
Niko Matsakis
1562d8cbd8 Generalize the replace-late-bound-regions function to operate
over anything that is foldable, not just fn signatures.
2014-10-21 11:49:38 -04:00
Niko Matsakis
5c505b75b1 Permit DST types to unify like other types.
Also:
1. stop eagerly coercing from `[T, ..n]` to `[T]` only do so if requested.
2. permit error to be interact more freely.

Fixes #17178.
2014-10-21 11:49:38 -04:00
Niko Matsakis
e6a1936d26 Implement "method matching". Similar to trait matching, but with the twist that we
have to take the transformed self type into account, and allow for coercion between
the receiver and the actual type declared on the impl.
2014-10-21 11:49:38 -04:00
Niko Matsakis
04386f4217 Prune unused parameters. 2014-10-21 11:49:37 -04:00