Commit graph

11336 commits

Author SHA1 Message Date
Huon Wilson
ae4e1a190b Tell the compiler to tell us that deriving is dead.
I'm beginning to suspect it's impossible to avoid accidentally writing
`#[deriving]` at least once in every program, and it results in
non-intuitive error messages: "Foo doesn't have any method in scope
`clone`" despite there being a `#[deriv...(Clone)]` attribute!

Also, lots of documentation around the internet uses `#[deriving]` so
providing this guidance is very helpful (lots of people ask in #rust
about this error).

Fixes #21166.
2015-01-25 10:44:56 +11:00
Ariel Ben-Yehuda
e7245252cc Cleanup check_cast. Fixes #21554
This also makes the cast error messages somewhat more uniform.
2015-01-25 01:44:49 +02:00
bors
76fbb35831 Auto merge of #21079 - huonw:chained-cmp-tweaks, r=pnkfelix
First commit is mindless groundwork for the second one, to make the spans (arguably) nicer.

### before

```
require-parens-for-chained-comparison.rs:14:20: 14:22 error: Chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:14     false == false == false;
                                                               ^~
require-parens-for-chained-comparison.rs:17:16: 17:17 error: Chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:17     false == 0 < 2;
                                                           ^
require-parens-for-chained-comparison.rs:20:8: 20:9 error: Chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:20     f<X>();
                                                   ^
require-parens-for-chained-comparison.rs:20:8: 20:9 help: Use ::< instead of < if you meant to specify type arguments.
require-parens-for-chained-comparison.rs:20     f<X>();
                                                   ^
```

### after

```
require-parens-for-chained-comparison.rs:14:11: 14:22 error: chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:14     false == false == false;
                                                      ^~~~~~~~~~~
require-parens-for-chained-comparison.rs:17:11: 17:17 error: chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:17     false == 0 < 2;
                                                      ^~~~~~
require-parens-for-chained-comparison.rs:20:6: 20:9 error: chained comparison operators require parentheses
require-parens-for-chained-comparison.rs:20     f<X>();
                                                 ^~~
require-parens-for-chained-comparison.rs:20:6: 20:9 help: use `::<...>` instead of `<...>` if you meant to specify type arguments
require-parens-for-chained-comparison.rs:20     f<X>();
                                                 ^~~
```
2015-01-24 17:07:43 +00:00
Flavio Percoco
577c4643dd don't run pretty-rpass for tests using #![main] 2015-01-24 15:10:37 +01:00
Michael Woerister
612ded78e3 debuginfo: Extend option-like-enum test case to contain nested discriminants. 2015-01-24 15:02:38 +01:00
Huon Wilson
ec790d6fcc Tweak chained comparison errors.
Lower case and give a more precise span: from operator to operator, not
just the last one.
2015-01-25 00:35:06 +11:00
Huon Wilson
fbef241709 Add a lint to detect unconditional recursion.
E.g. `fn foo() { foo() }`, or, more subtlely

    impl Foo for Box<Foo+'static> {
        fn bar(&self) {
            self.bar();
        }
    }

The compiler will warn and point out the points where recursion occurs,
if it determines that the function cannot return without calling itself.

Closes #17899.
2015-01-25 00:21:03 +11:00
bors
0430a43d63 Auto merge of #21542 - vadimcn:fix-exported-macro-paths, r=alexcrichton
... so that `super::foo` gets serialized as `super:: foo`, rather than `super :: foo`.
2015-01-24 13:04:39 +00:00
Flavio Percoco Premoli
38cb4c128e Rollup merge of #21573 - japaric:gh19660, r=huonw
closes #19660
2015-01-24 10:42:42 +01:00
Flavio Percoco Premoli
82299c07de Rollup merge of #21504 - blackbeam:has_test_signature_fix, r=alexcrichton
Fix for `error: functions used as tests must have signature fn() -> ()` and `error: functions used as benches must have signature `fn(&mut Bencher) -> ()` in case of explicit return type declaration.
2015-01-24 10:42:40 +01:00
Flavio Percoco Premoli
65d14d2661 Rollup merge of #21498 - quantheory:master, r=alexcrichton
While trying to experiment with changes for some other issues, I noticed that the test for #15149 was failing because I have `/tmp` mounted as `noexec` on my Linux box, and that test tries to run out of a temporary directory. This may not be the most common case, but it's not rare by any means, because executing from a world-writable directory is a security problem. (For this reason, some kernel options/mods such as grsecurity also can prevent this on Linux.) I instead copy the executable to a directory created in the build tree, following the example of the `process-spawn-with-unicode-params` test.

After I made that change, I noticed that I'd made a mistake, but the test was still passing, because the "parent" process was not actually checking the status of the "child" process, meaning that the assertion in the child could never cause the overall test to fail. (I don't know if this has always been the case, or if it has something to do with either Windows or a change in the semantics of `spawn`.) So I fixed the test so that it would fail correctly, then fixed my original mistake so that it would pass again.

The one big problem with this is that I haven't set up any machines of my own so that I can build on Windows, which is the platform this test was targeted at in the first place! That might take a while to address on my end. So I need someone else to check this on Windows.
2015-01-24 10:42:40 +01:00
Brian Anderson
b44ee371b8 grandfathered -> rust1 2015-01-23 21:48:20 -08:00
Alex Crichton
6c29708bf9 regex: Remove in-tree version
The regex library was largely used for non-critical aspects of the compiler and
various external tooling. The library at this point is duplicated with its
out-of-tree counterpart and as such imposes a bit of a maintenance overhead as
well as compile time hit for the compiler itself.

The last major user of the regex library is the libtest library, using regexes
for filters when running tests. This removal means that the filtering has gone
back to substring matching rather than using regexes.
2015-01-23 21:04:10 -08:00
Vadim Chugunov
f09c680b4c Fix tidy. 2015-01-23 18:32:00 -08:00
Jorge Aparicio
12d7be9a28 make walk_ty walk over a trait projections
closes #21363
2015-01-23 20:13:32 -05:00
Jorge Aparicio
6f7c0b16d3 add test for issue 19660
closes #19660
2015-01-23 19:35:10 -05:00
Brian Anderson
9758c488a9 Deprecated attributes don't take 'feature' names and are paired with stable/unstable
Conflicts:
	src/libcore/atomic.rs
	src/libcore/finally.rs
	src/test/auxiliary/inherited_stability.rs
	src/test/auxiliary/lint_stability.rs
2015-01-23 15:50:03 -08:00
Brian Anderson
cd6d9eab5d Set unstable feature names appropriately
* `core` - for the core crate
* `hash` - hashing
* `io` - io
* `path` - path
* `alloc` - alloc crate
* `rand` - rand crate
* `collections` - collections crate
* `std_misc` - other parts of std
* `test` - test crate
* `rustc_private` - everything else
2015-01-23 13:28:40 -08:00
Edward Wang
296777e50a Resolve type vars when inferring borrow kinds for upvars
As part of #20432, upvar checking is now moved out of regionck to its
own pass and before regionck. But regionck has some type resolution of
its own. Without them, now separated upvar checking may be tripped over
by residue `ty_infer`.

Closes #21306
2015-01-24 03:13:26 +08:00
Alexander Korolkov
8a22454731 Rephrase error message on invalid fragment specifiers in macros.
Also, print help on valid fragment specifiers.
2015-01-23 18:51:12 +03:00
Vadim Chugunov
5c344d3ea8 Added test. 2015-01-22 23:05:02 -08:00
bors
e9285f9e81 Auto merge of #21374 - dgrunwald:range-notation-fixes, r=nikomatsakis
This PR is intended as alternative to #20958. It fixes the same grammar inconsistencies, but does not increase the operator precedence of `..`, leaving it at the same level as the assignment operator.
For previous discussion, see #20811 and #20958.

Grammar changes:
* allow `for _ in 1..i {}` (fixes #20241)
* allow `for _ in 1.. {}` as infinite loop
* prevent use of range notation in contexts where only operators of high precedence are expected (fixes #20811)

Parser code cleanup:
* remove `RESTRICTION_NO_DOTS`
* make `AS_PREC` const and follow naming convention
* make `min_prec` inclusive

r? nikomatsakis
2015-01-23 06:53:09 +00:00
Sean Patrick Santos
7f45dc9e68 Add a random number string to the end of the issue-15149 test's child directory's name, and remove the directory after a successful test. 2015-01-22 18:34:58 -07:00
Brian Anderson
f86bcc1543 Add some tests for stability stuff 2015-01-22 17:28:26 -08:00
Steve Klabnik
07fb31a099 Rollup merge of #21471 - michaelwoerister:associated-types, r=alexcrichton
This should fix issue #20797 (but I don't want to close it automatically).
As the actual fix is very small this would be a perfect candidate for a rollup.
2015-01-22 18:09:59 -05:00
Brian Anderson
d3c0bb416e Put #[staged_api] behind the 'staged_api' gate 2015-01-22 13:47:56 -08:00
Niko Matsakis
984dc03df6 Do not cache ambiguous results unless there is at least some inference by-product within.
Fixes #19499.
2015-01-22 15:37:03 -05:00
Niko Matsakis
69bc112e72 Do not propagate the region requirements on the projected type to the input types it is being projected from.
Fixes #21520.
2015-01-22 15:23:27 -05:00
Daniel Grunwald
db013f9f45 Fix some grammar inconsistencies for the '..' range notation.
Grammar changes:
* allow 'for _ in 1..i {}' (fixes #20241)
* allow 'for _ in 1.. {}' as infinite loop
* prevent use of range notation in contexts where only operators of high
  precedence are expected (fixes #20811)

Parser code cleanup:
* remove RESTRICTION_NO_DOTS
* make AS_PREC const and follow naming convention
* make min_prec inclusive
2015-01-22 19:55:15 +01:00
Sean Patrick Santos
918dd3488f Attempt fix for assertion on Windows, and add extra output for debugging. 2015-01-22 11:54:45 -07:00
blackbeam
fd029209ec Add test for has_test_signature for explicit return 2015-01-22 21:38:00 +03:00
bors
b7930d93d9 Auto merge of #21187 - oli-obk:feature/hint_struct_field_access, r=alexcrichton
rebase and fix of #19267
2015-01-22 12:09:02 +00:00
Alex Crichton
90af72378d Make diagnostic ordering deterministic 2015-01-21 20:25:19 -08:00
Brian Anderson
41278c5441 Remove 'since' from unstable attributes 2015-01-21 19:25:55 -08:00
Brian Anderson
0768892abe Minor fixes 2015-01-21 16:16:22 -08:00
Brian Anderson
e62c37eb8d Fix up some tests for feature staging 2015-01-21 16:16:22 -08:00
Brian Anderson
7b73ec4698 Tie stability attributes to feature gates 2015-01-21 16:16:21 -08:00
Brian Anderson
94ca8a3610 Add 'feature' and 'since' to stability attributes 2015-01-21 16:16:18 -08:00
Alex Crichton
df1cddf20a rollup merge of #20179: eddyb/blind-items
Conflicts:
	src/librustc/diagnostics.rs
	src/librustdoc/clean/mod.rs
	src/librustdoc/html/format.rs
	src/libsyntax/parse/parser.rs
2015-01-21 11:56:00 -08:00
Alex Crichton
886c6f3534 rollup merge of #21258: aturon/stab-3-index
Conflicts:
	src/libcore/ops.rs
	src/librustc_typeck/astconv.rs
	src/libstd/io/mem.rs
	src/libsyntax/parse/lexer/mod.rs
2015-01-21 11:53:49 -08:00
Alex Crichton
036d8c4189 rollup merge of #21252: nikomatsakis/assoc-type-ice-hunt-take-2
Project region bounds out of the trait when deciding whether a projection type outlives a given regions.

Fixes #20890.
Fixes #21150.
2015-01-21 11:51:10 -08:00
Niko Matsakis
626db33bc8 Move regression test for #20971 into run-fail, since it panics. 2015-01-21 14:35:41 -05:00
Aaron Turon
537889aa78 Fix type inference problems in tests and docs 2015-01-21 11:16:00 -08:00
Alex Crichton
4ffde0814f Test fixes and rebase conflicts 2015-01-21 10:32:56 -08:00
Eduard Burtescu
2d17a33878 Deny imports after non-item statements. 2015-01-21 20:05:16 +02:00
Eduard Burtescu
5e07f5a792 Added another test with success local-item shadowing 2015-01-21 20:05:16 +02:00
Marvin Löbel
652445f714 Added some tests for arbitrary ordered view items 2015-01-21 20:05:16 +02:00
Eduard Burtescu
139346adb6 tests: fix fallout of merging ast::ViewItem into ast::Item. 2015-01-21 20:05:16 +02:00
Michael Woerister
3a44107f9e debuginfo: Fix issue with associated types and struct fields 2015-01-21 18:25:53 +01:00
Alex Crichton
87c3ee861e rollup merge of #21457: alexcrichton/issue-21436
Conflicts:
	src/liballoc/boxed.rs
	src/librustc/middle/traits/error_reporting.rs
	src/libstd/sync/mpsc/mod.rs
2015-01-21 09:20:35 -08:00