Commit Graph

2938 Commits

Author SHA1 Message Date
bors
a2f303ad09 auto merge of #18743 : nikomatsakis/rust/hrtb-refactor-2, r=pcwalton
Various miscellaneous changes pushing towards HRTB support:

1. Update parser and adjust ast to support `for<'a,'b>` syntax, both in closures and trait bounds. Warn on the old syntax (not error, for stage0).
2. Refactor TyTrait representation to include a TraitRef.
3. Purge `once_fns` feature gate and `once` keyword.

r? @pcwalton 

This is a [breaking-change]:

- The `once_fns` feature is now officially deprecated. Rewrite using normal closures or unboxed closures.
- The new `for`-based syntax now issues warnings (but not yet errors):
  - `fn<'a>(T) -> U` becomes `for<'a> fn(T) -> U`
  - `<'a> |T| -> U` becomes `for<'a> |T| -> U`
2014-11-09 03:51:41 +00:00
bors
ebc625ad3e auto merge of #18634 : alexcrichton/rust/cfg-attr-crate-level, r=sfackler
This commit implements processing these two attributes at the crate level as
well as at the item level. When #[cfg] is applied at the crate level, then the
entire crate will be omitted if the cfg doesn't match. The #[cfg_attr] attribute
is processed as usual in that the attribute is included or not depending on
whether the cfg matches.

This was spurred on by motivations of #18585 where #[cfg_attr] annotations will
be applied at the crate-level.

cc #18585
2014-11-08 09:01:33 +00:00
Niko Matsakis
091dc6e98a Purge the old once_fns, which are not coming back 2014-11-07 15:51:30 -05:00
Niko Matsakis
3112771001 Update tests where we don't report errors twice anymore 2014-11-07 15:51:30 -05:00
Niko Matsakis
244231720d Update parser with for syntax 2014-11-07 15:51:30 -05:00
Alex Crichton
3dbd32854f rustc: Process #[cfg]/#[cfg_attr] on crates
This commit implements processing these two attributes at the crate level as
well as at the item level. When #[cfg] is applied at the crate level, then the
entire crate will be omitted if the cfg doesn't match. The #[cfg_attr] attribute
is processed as usual in that the attribute is included or not depending on
whether the cfg matches.

This was spurred on by motivations of #18585 where #[cfg_attr] annotations will
be applied at the crate-level.

cc #18585
2014-11-07 12:04:28 -08:00
bors
0b48001c28 auto merge of #17830 : pczarn/rust/interp_tt, r=pnkfelix
Closes #14197

Removes the `matchers` nonterminal.

If you're using `$foo:matchers` in a macro, write `$foo:tt` instead.

[breaking-change]
2014-11-07 15:26:26 +00:00
Piotr Czarnecki
964191a313 Add and update tests 2014-11-07 10:21:50 +01:00
bors
a0a7ab4612 auto merge of #18672 : brandonson/rust/functional-update-walk, r=nikomatsakis
Fixes #18567. `Struct{x:foo, .. with_expr}` did not walk `with_expr`, which allowed
using moved variables in some cases.  The CFG for structs also built up with
`with_expr` happening before the fields, which is now reversed. (Fields are now
before the `with_expr` in the CFG)
2014-11-07 07:16:33 +00:00
Alex Crichton
90bfcec323 rollup merge of #18679 : brson/lint-trait 2014-11-06 13:53:25 -08:00
Alex Crichton
76d2abe0e7 rollup merge of #18630 : nikomatsakis/purge-the-bars 2014-11-06 13:31:18 -08:00
Alex Crichton
73aaeb0fbd rollup merge of #18555 : jakub-/e-needstest 2014-11-06 13:30:16 -08:00
Brandon Sanderson
d80a62d84b Fix soundness hole in struct with expressions.
Fixes #18567. Struct{x:foo, .. with_expr} did not walk with_expr, which allowed
using moved variables in some cases.  The CFG for structs also built up with
with_expr happening before the fields, which is now reversed. (Fields are now
before the with_expr in the CFG)
2014-11-06 10:42:40 -08:00
Alexis Beingessner
eec145be3f Fallout from collection conventions 2014-11-06 12:26:08 -05:00
bors
60a669a174 auto merge of #18608 : alexcrichton/rust/lint-some-crates, r=aturon
This commit adds support for linting `extern crate` statements for stability
attributes attached to the crate itself. This is likely to be the mechanism used
to deny access to experimental crates that are part of the standard
distribution.

cc #18585 

r? @aturon
2014-11-06 14:06:59 +00:00
Niko Matsakis
221edbae38 Support parenthesized paths Foo(A,B) -> C that expand to Foo<(A,B),C>. These paths also bind anonymous regions (or will, once HRTB is fully working).
Fixes #18423.
2014-11-06 06:48:23 -05:00
bors
e84e7a00dd auto merge of #18467 : japaric/rust/eq, r=alexcrichton
`eq`, `ne`, `cmp`, etc methods now require one less level of indirection when dealing with `&str`/`&[T]`

``` rust
"foo".ne(&"bar") -> "foo".ne("bar")
slice.cmp(&another_slice) -> slice.cmp(another_slice)
// slice and another_slice have type `&[T]`
```

[breaking-change]
2014-11-06 08:06:50 +00:00
Niko Matsakis
cf753a2dc7 Correct tests that were supposed to fail but now pass due to the fn trait hierarchy. 2014-11-05 22:01:30 -05:00
Niko Matsakis
680d579ff0 Add blanket impls to allow the various Fn traits to be interconverted.
Fixes #18387.
2014-11-05 22:01:29 -05:00
Brian Anderson
f383ce62e8 rustc: Add some more checks to the stability lint
This catches uses of unstable traits in

```
trait Foo: UnstableTrait { }
```

and

```
impl UnstableTrait for Foo { }
```
2014-11-05 17:35:40 -08:00
Jorge Aparicio
11f4baeafb Fix tests 2014-11-05 20:13:25 -05:00
Niko Matsakis
0b5bc3314f Implement new operator dispatch semantics.
Key points are:
1. `a + b` maps directly to `Add<A,B>`, where `A` and `B` are the types of `a` and `b`.
2. Indexing and slicing autoderefs consistently.
2014-11-05 11:29:15 -05:00
Patrick Walton
e8d6031c71 libsyntax: Forbid escapes in the inclusive range \x80-\xff in
Unicode characters and strings.

Use `\u0080`-`\u00ff` instead. ASCII/byte literals are unaffected.

This PR introduces a new function, `escape_default`, into the ASCII
module. This was necessary for the pretty printer to continue to
function.

RFC #326.

Closes #18062.

[breaking-change]
2014-11-04 14:58:11 -08:00
Alex Crichton
68ac44cb97 rustc: Support stability attributes on crates
This commit adds support for linting `extern crate` statements for stability
attributes attached to the crate itself. This is likely to be the mechanism used
to deny access to experimental crates that are part of the standard
distribution.

cc #18585
2014-11-04 08:13:09 -08:00
bors
ec28b4a6c8 auto merge of #18132 : P1start/rust/more-help, r=jakub-
Closes #18126.

At the moment this mostly only changes notes that are particularly help-oriented or directly suggest the user to do something to help messages, and does not change messages that simply explain an error message further. If it is decided that those messages should also be help messages, I can add them to this PR, but for now I’m excluding them as I believe that changing those messages might leave very few places where notes would be appropriate.
2014-11-04 03:36:55 +00:00
Alex Crichton
f2aa8c4187 rollup merge of #18593 : hirschenberger/issue-18587
Conflicts:
	src/test/compile-fail/lint-exceeding-bitshifts.rs
2014-11-03 16:24:26 -08:00
Alex Crichton
5d6cd77070 rollup merge of #18578 : japaric/clone 2014-11-03 15:56:01 -08:00
Alex Crichton
11790a545c rollup merge of #18580 : hirschenberger/issue-17713 2014-11-03 15:56:00 -08:00
Alex Crichton
e98172d801 rollup merge of #18560 : bkoropoff/issue-18532 2014-11-03 15:55:59 -08:00
Alex Crichton
eb793616dc rollup merge of #18506 : nikomatsakis/assoc-type-bounds 2014-11-03 15:55:58 -08:00
Falco Hirschenberger
e7f3109708 Fix for bitshift errors lint on cross compilation #18587 2014-11-04 00:48:03 +01:00
Jorge Aparicio
03b568a846 Fix error message in compile-fail test 2014-11-03 18:29:25 -05:00
Alex Crichton
8494368d56 rollup merge of #18447 : nick29581/dst-impl3 2014-11-03 15:29:17 -08:00
Alex Crichton
59d47a3ca4 rollup merge of #18132 : P1start/more-help 2014-11-03 15:28:54 -08:00
Niko Matsakis
fb9d0ccc2f Move associated types into the Assoc space and add in the builtin bounds
from the definition (including Sized).
2014-11-03 17:41:01 -05:00
Niko Matsakis
d2f8074eac Add a 4th space for associated types defined in a trait (currently unused) 2014-11-03 17:41:01 -05:00
Nick Cameron
f9e52fb34c tests 2014-11-04 09:37:00 +13:00
Jakub Bukaj
69988539da Add tests for E-needstest issues 2014-11-03 21:05:38 +01:00
Falco Hirschenberger
32b903d877 Also fix undefined behaviour when shift equals the number of bits
LLVM states:  "If op2 is (statically or dynamically) negative or equal
to or larger than the number of bits in op1, the result is undefined."
2014-11-03 20:08:11 +01:00
Alex Crichton
dce0be03d9 Test fixes and rebase conflicts 2014-11-03 11:02:36 -08:00
Alex Crichton
02c234cc52 rollup merge of #18505 : bkoropoff/issue-18487 2014-11-03 08:31:45 -08:00
Alex Crichton
6478fcfafe rollup merge of #18470 : alexcrichton/dash-l 2014-11-03 08:31:44 -08:00
bors
851799d09e auto merge of #18206 : hirschenberger/rust/issue-17713, r=thestinger
Add lint for checking exceeding bitshifts #17713

It also const-evaluates the shift width (RHS) to check more complex shifts like `1u8 << (4+5)`.
The lint-level is set to `Warn` but perhaps it must be `Deny` as in llvm exceeding bitshifts are undefined as @ben0x539 stated in #17713
2014-11-03 07:37:23 +00:00
Brian Koropoff
7a8e73e4f5 Add regression test for #18532 2014-11-02 19:36:15 -08:00
bors
0c1268451b auto merge of #18481 : sfackler/rust/enum-namespace, r=pcwalton
After a snapshot, everything can be switched over and the small bit of hackery in resolve dealing with `ENUM_STAGING_HACK` can be removed.

cc #18478
2014-11-02 19:22:16 +00:00
P1start
5bf9ef2122 Convert some notes to help messages
Closes #18126.
2014-11-02 16:12:23 +13:00
Alex Crichton
21ac985af4 collections: Remove all collections traits
As part of the collections reform RFC, this commit removes all collections
traits in favor of inherent methods on collections themselves. All methods
should continue to be available on all collections.

This is a breaking change with all of the collections traits being removed and
no longer being in the prelude. In order to update old code you should move the
trait implementations to inherent implementations directly on the type itself.

Note that some traits had default methods which will also need to be implemented
to maintain backwards compatibility.

[breaking-change]
cc #18424
2014-11-01 11:37:04 -07:00
Brian Koropoff
205f84f13c Add compile-fail test of DST rvalues resulting from overloaded index 2014-11-01 01:56:09 -07:00
Falco Hirschenberger
e5058a8f0c Add lint for checking exceeding bitshifts #17713 2014-11-01 09:10:10 +01:00
Steven Fackler
d7ff7da65a First stage of enum namespacing changes 2014-10-31 20:43:35 -07:00