Commit Graph

4898 Commits

Author SHA1 Message Date
bors 04475b92f9 Auto merge of #29274 - thepowersgang:issues-29107-const-unsafe-fn-order, r=nikomatsakis
This PR switches the implemented ordering from `unsafe const fn` (as was in the original RFC) to `const unsafe fn` (which is what the lang team decided on)
2015-10-26 21:23:32 +00:00
bors 278cc2f157 Auto merge of #29287 - Ryman:fn_nopat, r=alexcrichton
Previously, if you copied a signature from a trait definition such as:

```rust
fn foo<'a>(&'a Bar) -> bool {}
```

and moved it into an `impl`, there would be an error message:

"unexpected token `'a`"

Adding to the error message that a pattern is expected should help
users to find the actual problem with using a lifetime here.
2015-10-26 17:44:37 +00:00
bors c44316d4a1 Auto merge of #29303 - petrochenkov:unistrimp, r=eddyb
And use `VariantData` instead of `P<VariantData>` in `Item_` and `Variant_`

Improvements suggested by @eddyb in https://github.com/rust-lang/rust/pull/28816#discussion_r42483587 and https://github.com/rust-lang/rust/pull/28816#discussion_r42483648

plugin-[breaking-change]

r? @eddyb
2015-10-26 08:27:59 +00:00
Alex Crichton ff49733274 std: Stabilize library APIs for 1.5
This commit stabilizes and deprecates library APIs whose FCP has closed in the
last cycle, specifically:

Stabilized APIs:

* `fs::canonicalize`
* `Path::{metadata, symlink_metadata, canonicalize, read_link, read_dir, exists,
   is_file, is_dir}` - all moved to inherent methods from the `PathExt` trait.
* `Formatter::fill`
* `Formatter::width`
* `Formatter::precision`
* `Formatter::sign_plus`
* `Formatter::sign_minus`
* `Formatter::alternate`
* `Formatter::sign_aware_zero_pad`
* `string::ParseError`
* `Utf8Error::valid_up_to`
* `Iterator::{cmp, partial_cmp, eq, ne, lt, le, gt, ge}`
* `<[T]>::split_{first,last}{,_mut}`
* `Condvar::wait_timeout` - note that `wait_timeout_ms` is not yet deprecated
  but will be once 1.5 is released.
* `str::{R,}MatchIndices`
* `str::{r,}match_indices`
* `char::from_u32_unchecked`
* `VecDeque::insert`
* `VecDeque::shrink_to_fit`
* `VecDeque::as_slices`
* `VecDeque::as_mut_slices`
* `VecDeque::swap_remove_front` - (renamed from `swap_front_remove`)
* `VecDeque::swap_remove_back` - (renamed from `swap_back_remove`)
* `Vec::resize`
* `str::slice_mut_unchecked`
* `FileTypeExt`
* `FileTypeExt::{is_block_device, is_char_device, is_fifo, is_socket}`
* `BinaryHeap::from` - `from_vec` deprecated in favor of this
* `BinaryHeap::into_vec` - plus a `Into` impl
* `BinaryHeap::into_sorted_vec`

Deprecated APIs

* `slice::ref_slice`
* `slice::mut_ref_slice`
* `iter::{range_inclusive, RangeInclusive}`
* `std::dynamic_lib`

Closes #27706
Closes #27725
cc #27726 (align not stabilized yet)
Closes #27734
Closes #27737
Closes #27742
Closes #27743
Closes #27772
Closes #27774
Closes #27777
Closes #27781
cc #27788 (a few remaining methods though)
Closes #27790
Closes #27793
Closes #27796
Closes #27810
cc #28147 (not all parts stabilized)
2015-10-25 09:36:32 -07:00
Vadim Petrochenkov e8ddbba2ed syntax/rustc_front: Simplify VariantData::fields
And use VariantData instead of P<VariantData> in Item_ and Variant_
2015-10-25 18:33:51 +03:00
John Hodge f9b8c49cdb Switch to 'const unsafe fn' ordering (rust-lang/rust#29107) 2015-10-25 12:03:07 +08:00
Kevin Butler 1a235274a1 libsyntax: Consolidate branch to benefit from exhaustive checking instead of unwrapping 2015-10-25 01:34:45 +01:00
Kevin Butler 998914f5da libsyntax: remove panics from Parser::parse_pat_nopanic 2015-10-25 01:33:22 +01:00
Kevin Butler 64da379c8c libsyntax: better error for lifetimes in patterns
Previously, if you copied a signature from a trait definition such as:

```
fn foo<'a>(&'a Bar) -> bool {}
```

and moved it into an `impl`, there would be an error message:

"unexpected token `'a`"

Adding to the error message that a pattern is expected should help
users to find the actual problem with using a lifetime here.
2015-10-25 01:28:00 +01:00
bors 3f37f5a443 Auto merge of #29242 - matklad:fix-comment, r=alexcrichton
Qualified paths allow full path after the `>::`. For example

```rust
<T as Foo>::U::generic_method::<f64>()
```

The example is taken from `test/run-pass/associated-item-long-paths.rs`.
2015-10-23 06:51:24 +00:00
Aleksey Kladov bf2f1e512a parser: fix erroneous comment
Qualified paths allow full path after the `>::`. For example

```rust
<T as Foo>::U::generic_method::<f64>()
```

The example is taken from `test/run-pass/associated-item-long-paths.rs`.
2015-10-23 02:17:03 +03:00
bors 97ba52ec37 Auto merge of #29148 - petrochenkov:noshow, r=alexcrichton
Closes https://github.com/rust-lang/rust/issues/29145

[breaking-change], needs a crater run.
2015-10-20 19:02:27 +00:00
bors db54339f5a Auto merge of #29152 - petrochenkov:derstab, r=alexcrichton
The attributes are copied from the item for which the trait impl is derived

I think now we can close these two issues:
https://github.com/rust-lang/rust/issues/13054 - `allow`, `deny` etc. were already copied, now `stable` and `unstable` are copied as well.
https://github.com/rust-lang/rust/issues/18969 - I'm not sure this is needed, insta-stability were good enough so far, copied stability will be better. Nonetheless, it can be subsumed by some more general mechanism for supplying arbitrary not necessarily stability related attributes (for example `inline`) to derived impls and their methods (I haven't found an open issue for such mechanism).

r? @alexcrichton
2015-10-20 08:19:19 +00:00
Vadim Petrochenkov 629c2a840c Generate stability attributes for derived impls
The attributes are copied from the item for which the trait impl is derived
2015-10-19 01:55:53 +03:00
Vadim Petrochenkov 025cf75864 Remove #[derive(Show)] 2015-10-18 19:12:09 +03:00
Marcus Klaas e5962c206e Fix span for pattern literals 2015-10-18 14:45:56 +02:00
bors 32a4bd9ae5 Auto merge of #29102 - petrochenkov:spanvis, r=alexcrichton
Closes https://github.com/rust-lang/rust/issues/28750
`Arm` and `Generics` don't have spans at all, so it's not a visitor's problem, `visit_struct_def` was fixed in https://github.com/rust-lang/rust/pull/28816
2015-10-17 06:16:09 +00:00
bors 747d951e88 Auto merge of #29014 - petrochenkov:stability, r=brson
Stricter checking of stability attributes + enforcement of their invariants at compile time
(+ removed dead file librustc_front/attr.rs)
I intended to enforce use of `reason` for unstable items as well (it normally presents for new items), but it turned out too intrusive, many older unstable items don't have `reason`s.

r? @aturon 
I'm studying how stability works and do some refactoring along the way, so it's probably not the last PR.
2015-10-16 17:47:01 +00:00
Vadim Petrochenkov a0f2a591e0 Provide span for visit_enum_def 2015-10-16 17:17:14 +03:00
bors 785932f9d8 Auto merge of #28980 - nrc:unsafe-macros, r=@pnkfelix
This is a [breaking change].

@brson could you do a Crater run with this PR please?

Lets not land till Crater says its OK.

This was discussed at https://internals.rust-lang.org/t/does-anyone-use-the-push-pop-unsafe-macros/2702
2015-10-15 03:26:48 +00:00
bors a668dd2a56 Auto merge of #28827 - thepowersgang:unsafe-const-fn-2, r=Aatch
This is the original test implementation, which works according to the tests I wrote, but might need a review.
2015-10-14 10:17:30 +00:00
Vadim Petrochenkov 607b8c3892 Comment on the purpose(s) of NodeId in VariantData 2015-10-13 16:18:33 +03:00
Vadim Petrochenkov 46750d0409 Merge VariantData and VariantData_ 2015-10-13 15:19:27 +03:00
Vadim Petrochenkov 40aa09e4c9 Merge struct fields and struct kind 2015-10-13 15:19:25 +03:00
Vadim Petrochenkov 30af54dede Dict -> Struct, StructDef -> VariantData, def -> data 2015-10-13 15:19:24 +03:00
Vadim Petrochenkov 8a12c19171 Test and gate empty structures and variants better 2015-10-13 15:19:20 +03:00
Vadim Petrochenkov beda1f88a7 Provide span for visit_struct_def + remove some dead code 2015-10-13 15:19:19 +03:00
Vadim Petrochenkov 877c35e8a2 Remove now redundant NodeId from Variant 2015-10-13 15:19:18 +03:00
Vadim Petrochenkov 495566ee61 Decouple structure kinds from NodeIds 2015-10-13 15:19:17 +03:00
Vadim Petrochenkov ea47c2b6b3 Unify structures and enum variants in AST 2015-10-13 15:19:15 +03:00
Vadim Petrochenkov ab671552c3 Refactor attr::Stability
Stricter checking + enforcement of invariants at compile time
2015-10-13 06:01:31 +03:00
Nick Cameron d399098fd8 Remove the push_unsafe! and pop_unsafe! macros.
This is a [breaking change].
2015-10-12 15:50:12 +13:00
bors b6fd615b8a Auto merge of #28932 - barosl:empty-comment, r=alexcrichton
Previously, `/**/` was incorrectly regarded as a doc comment because it starts with `/**` and ends with `*/`. However, this caused an ICE because some code assumed that the length of a doc comment is at least 5. This commit adds an additional check to `is_block_doc_comment` that tests the length of the input.

Fixes #28844.
2015-10-10 02:29:37 +00:00
bors 87cd2c0827 Auto merge of #28861 - pnkfelix:fsk-nonparam-dropck-issue28498, r=arielb1
implement RFC 1238: nonparametric dropck.

cc #28498 

cc @nikomatsakis
2015-10-10 00:39:29 +00:00
Barosl Lee c7fa52df34 Prevent /**/ from being parsed as a doc comment
Previously, `/**/` was incorrectly regarded as a doc comment because it
starts with `/**` and ends with `*/`. However, this caused an ICE
because some code assumed that the length of a doc comment is at least
5. This commit adds an additional check to `is_block_doc_comment` that
tests the length of the input.

Fixes #28844.
2015-10-10 04:49:31 +09:00
bors c14609035d Auto merge of #28857 - nrc:lowering, r=nikomatsakis
r? @nikomatsakis
2015-10-09 08:53:45 +00:00
bors 9f37fbc743 Auto merge of #28919 - huonw:placement-tracking-issue, r=alexcrichton
cc #28244
2015-10-09 02:57:38 +00:00
Huon Wilson eacf78d8d4 Point placement_in_syntax/box_syntax lang features at tracking issue #27779.
cc #28244.
2015-10-09 10:11:04 +11:00
Nick Cameron ba43c228b5 Some cleanup of no longer used AST things 2015-10-09 11:53:42 +13:00
Nick Cameron 21205f4f9e Cache ids between lowering runs
So that lowering is reproducible
2015-10-09 11:53:42 +13:00
Nick Cameron 08f3752270 hygiene for for loops, if let, while let
and some unrelated test cleanups
2015-10-09 11:53:41 +13:00
Nick Cameron e0c74868c3 Fix stability 2015-10-09 11:53:41 +13:00
Nick Cameron 7f469ba6c5 Move placement in desugaring to lowering 2015-10-09 11:53:41 +13:00
Nick Cameron bc364b4a0d if let and while let 2015-10-09 11:53:41 +13:00
Nick Cameron 20083c1e1f Move for loop desugaring to lowering 2015-10-09 11:53:41 +13:00
Cristi Cobzarenco 4b308b44e1 typos: fix a grabbag of typos all over the place 2015-10-08 19:49:31 +01:00
Felix S. Klock II d778e57bf6 Add RFC 1238's unsafe_destructor_blind_to_params (UGEH) where needed.
I needed it in `RawVec`, `Vec`, and `TypedArena` for `rustc` to
bootstrap; but of course that alone was not sufficient for `make
check`.

Later I added `unsafe_destructor_blind_to_params` to collections, in
particular `LinkedList` and `RawTable` (the backing representation for
`HashMap` and `HashSet`), to get the regression tests exercising
cyclic structure from PR #27185 building.

----

Note that the feature is `dropck_parametricity` (which is not the same
as the attribute's name). We will almost certainly vary our strategy
here in the future, so it makes some sense to have a not-as-ugly name
for the feature gate. (The attribute name was deliberately selected to
be ugly looking.)
2015-10-06 14:16:49 +02:00
Felix S. Klock II 9868df2fd5 Non-parametric dropck; instead trust an unsafe attribute (RFC 1238).
Implement cannot-assume-parametricity (CAP) from RFC 1238, and add the
UGEH attribute.

----

Note that we check for the attribute attached to the dtor method, not
the Drop impl.

(This is just to match the specification of RFC and the tests; I am
not wedded to this approach.)
2015-10-06 14:16:20 +02:00
Vadim Petrochenkov b82d76c8a1 Add comment for the use of Ident in hash map in mtwt 2015-10-06 01:47:35 +03:00
John Hodge 4c88bf2885 Implement original version of RFC#1245 2015-10-03 23:42:22 +08:00