Commit Graph

1680 Commits

Author SHA1 Message Date
bors 054a4b4019 Auto merge of #32909 - sanxiyn:unused-trait-import-2, r=alexcrichton
Remove unused trait imports
2016-04-16 18:31:11 -07:00
bors ae33aa74f4 Auto merge of #32875 - jseyfried:1422_implementation, r=nikomatsakis
Implement `pub(restricted)` privacy (RFC 1422)

This implements `pub(restricted)` privacy from RFC 1422 (cc #32409) behind a feature gate.

`pub(restricted)` paths currently cannot use re-exported modules both for simplicity of implementation and for future compatibility with RFC 1560 (cf #31783).

r? @nikomatsakis
2016-04-16 16:21:09 -07:00
David Tolnay 222f47a578 Improve message for raw pointer missing mut and const
"Bare raw pointer" does not exist as a concept.
2016-04-14 09:46:30 -07:00
Jeffrey Seyfried 50ce605f46 Parse pub(restricted) 2016-04-14 04:58:38 +00:00
David Tolnay 3d50ad7332 Bare raw pointers have been disallowed forever
This change was in 0.12.0, a year and a half ago. Let's move on!
2016-04-12 13:49:54 -07:00
Seo Sanghyeon 01fb27f648 Remove unused trait imports 2016-04-12 22:58:55 +09:00
bors 28c9fdafc0 Auto merge of #32711 - marcusklaas:try-shorthand-span-fix, r=nagisa
Fix the span for try shorthand expressions

My five character contribution to the rust parser! Fixes https://github.com/rust-lang/rust/issues/32709.
2016-04-11 22:14:04 -07:00
Marcus Klaas 05e4116af2 Fix the span for try shorthand expressions 2016-04-11 21:22:37 +02:00
Steve Klabnik ea28533e25 Rollup merge of #32727 - matklad:fix-comment, r=alexcrichton
minor: update old comments

No more lifetimes in function types after https://github.com/rust-lang/rust/commit/f945190e6352a1bc965a117569532643319b400f
2016-04-06 12:12:08 -07:00
Manish Goregaokar 552af51ffb Rollup merge of #32570 - eddyb:tis-but-a-front, r=nikomatsakis
r? @nikomatsakis

Conflicts:
	src/librustc_save_analysis/lib.rs
	src/libsyntax/ast_util.rs
2016-04-06 17:31:16 +05:30
Vadim Petrochenkov 8fe4290f1c Move span into StructField 2016-04-06 11:19:10 +03:00
Vadim Petrochenkov 7f3744f07f Get rid of ast::StructFieldKind 2016-04-06 10:33:15 +03:00
Eduard Burtescu 7bebe80bc2 syntax: dismantle ast_util. 2016-04-06 09:04:15 +03:00
bors 772c600d4d Auto merge of #32688 - jseyfried:ast_groundwork_for_1422, r=pnkfelix
[breaking-batch] Add support for `pub(restricted)` syntax in the AST

This PR allows the AST to represent the `pub(restricted)` syntax from RFC 1422 (cc #32409).

More specifically, it makes `ast::Visibility` non-`Copy` and adds two new variants, `Visibility::Crate` for `pub(crate)` and `Visitibility::Restricted { path: P<Path>, id: NodeId }` for `pub(path)`.

plugin-[breaking-change] cc #31645
r? @pnkfelix
2016-04-05 18:58:24 -07:00
vlastachu 6c73134fc7 Fixes bug which accepting using super in use statemet.
Issue: #32225
2016-04-05 11:57:56 +03:00
Aleksey Kladov 2325cab5fe minor: update old comments
No more lifetimes in function types after
https://github.com/rust-lang/rust/commit/f945190e6352a1bc965a117569532643319b400f
2016-04-04 17:26:38 +03:00
Jeffrey Seyfried 432eb8a094 Add Crate and Restricted variants to ast::Visibility 2016-04-02 20:32:18 +00:00
Jeffrey Seyfried bc355244df Make ast::Visibility non-copyable 2016-04-02 20:21:41 +00:00
Vadim Petrochenkov 1cbdf4e7d3 syntax: Extra diagnostics for _ used in an identifier position 2016-03-31 10:15:36 +03:00
bors a11129701c Auto merge of #32479 - eddyb:eof-not-even-twice, r=nikomatsakis
Prevent bumping the parser past the EOF.

Makes `Parser::bump` after EOF into an ICE, forcing callers to avoid repeated EOF bumps.
This ICE is intended to break infinite loops where EOF wasn't stopping the loop.

For example, the handling of EOF in `parse_trait_items`' recovery loop fixes #32446.
But even without this specific fix, the ICE is triggered, which helps diagnosis and UX.

This is a `[breaking-change]` for plugins authors who eagerly eat multiple EOFs.
See https://github.com/docopt/docopt.rs/pull/171 for such an example and the necessary fix.
2016-03-28 20:50:42 -07:00
bors 44a77f6769 Auto merge of #32267 - durka:inclusive-range-error, r=nrc
melt the ICE when lowering an impossible range

Emit a fatal error instead of panicking when HIR lowering encounters a range with no `end` point.

This involved adding a method to wire up `LoweringContext::span_fatal`.

Fixes #32245 (cc @nodakai).

r? @nrc
2016-03-28 15:08:49 -07:00
Eduard Burtescu 221d0fbad0 syntax: Stop the bump loop for trait items at } and EOF. 2016-03-26 21:37:53 +02:00
Eduard Burtescu 6abab49029 syntax: Prevent bumping the parser EOF to stop infinite loops. 2016-03-26 21:03:49 +02:00
Manish Goregaokar b55d7729c2 Rollup merge of #32435 - nrc:fix-err-recover, r=nikomatsakis
Some fixes for error recovery in the compiler
2016-03-26 13:42:03 +05:30
Alex Burka 861644f2af address nits 2016-03-24 01:42:23 -04:00
Alex Burka 9f899a6659 error during parsing for malformed inclusive range
Now it is impossible for `...` or `a...` to reach HIR lowering
without a rogue syntax extension in play.
2016-03-24 01:42:23 -04:00
Nick Cameron 180d6b55ca Tests 2016-03-24 15:54:22 +13:00
Jorge Aparicio 2628f3cc8f fix alignment 2016-03-22 22:03:54 -05:00
Jorge Aparicio 0f02309e4b try! -> ?
Automated conversion using the untry tool [1] and the following command:

```
$ find -name '*.rs' -type f | xargs untry
```

at the root of the Rust repo.

[1]: https://github.com/japaric/untry
2016-03-22 22:01:37 -05:00
Nick Cameron 2731dc169c Error recovery in the tokeniser
Closes #31994
2016-03-23 09:26:32 +13:00
Nick Cameron 3ee841c335 Don't loop forever on error recovery with EOF
closes #31804
2016-03-23 09:26:32 +13:00
Aaron Turon 9734406a5f Assorted fixed after rebasing 2016-03-14 15:04:39 -07:00
Aaron Turon 8fe63e2342 Add default as contextual keyword, and parse it for impl items. 2016-03-14 15:04:33 -07:00
bors bb868f17fa Auto merge of #32071 - jseyfried:parse_pub, r=nikomatsakis
Make errors for unnecessary visibility qualifiers consistent

This PR refactors away `syntax::parse::parser::ParsePub` so that unnecessary visibility qualifiers on variant fields are reported not by the parser but by `privacy::SanePrivacyVisitor` (thanks to @petrochenkov's drive-by improvements in #31919).

r? @nikomatsakis
2016-03-09 01:45:33 -08:00
Jorge Aparicio 210dd611aa implement the ? operator
The `?` postfix operator is sugar equivalent to the try! macro, but is more amenable to chaining:
`File::open("foo")?.metadata()?.is_dir()`.

`?` is accepted on any *expression* that can return a `Result`, e.g. `x()?`, `y!()?`, `{z}?`,
`(w)?`, etc. And binds more tightly than unary operators, e.g. `!x?` is parsed as `!(x?)`.

cc #31436
2016-03-07 14:39:39 -05:00
bors 8484831d29 Auto merge of #30884 - durka:inclusive-ranges, r=aturon
This PR implements [RFC 1192](https://github.com/rust-lang/rfcs/blob/master/text/1192-inclusive-ranges.md), which is triple-dot syntax for inclusive range expressions. The new stuff is behind two feature gates (one for the syntax and one for the std::ops types). This replaces the deprecated functionality in std::iter. Along the way I simplified the desugaring for all ranges.

This is my first contribution to rust which changes more than one character outside of a test or comment, so please review carefully! Some of the individual commit messages have more of my notes. Also thanks for putting up with my dumb questions in #rust-internals.

- For implementing `std::ops::RangeInclusive`, I took @Stebalien's suggestion from https://github.com/rust-lang/rfcs/pull/1192#issuecomment-137864421. It seemed to me to make the implementation easier and increase type safety. If that stands, the RFC should be amended to avoid confusion.
- I also kind of like @glaebhoerl's [idea](https://github.com/rust-lang/rfcs/pull/1254#issuecomment-147815299), which is unified inclusive/exclusive range syntax something like `x>..=y`. We can experiment with this while everything is behind a feature gate.
- There are a couple of FIXMEs left (see the last commit). I didn't know what to do about `RangeArgument` and I haven't added `Index` impls yet. Those should be discussed/finished before merging.

cc @Gankro since you [complained](https://www.reddit.com/r/rust/comments/3xkfro/what_happened_to_inclusive_ranges/cy5j0yq)
cc #27777 #30877 rust-lang/rust#1192 rust-lang/rfcs#1254
relevant to #28237 (tracking issue)
2016-03-06 07:16:41 +00:00
Jeffrey Seyfried a904ba2dd2 Refactor away ParsePub and make errors for unnecessary visibility qualifiers consistent 2016-03-06 00:30:53 +00:00
Jeffrey Seyfried cccc0880d9 Add filename to Parser 2016-03-02 23:50:13 +00:00
Alex Burka 1ec3005e45 fix fallout from libsyntax enumpocalypse 2016-02-27 02:01:41 -05:00
Alex Burka 5daf13cae3 libsyntax: parse inclusive ranges 2016-02-27 02:01:41 -05:00
Manish Goregaokar a48f95879d Rollup merge of #31362 - jseyfried:fix_extern_crate_visibility, r=nikomatsakis
This PR changes the visibility of extern crate declarations to match that of items (fixes #26775).
To avoid breakage, the PR makes it a `public_in_private` lint to reexport a private extern crate, and it adds the lint `inaccessible_extern_crate` for uses of an inaccessible extern crate.

The lints can be avoided by making the appropriate `extern crate` declaration public.
2016-02-25 11:41:01 +05:30
Jeffrey Seyfried 3358fb11da Fix the visibility of extern crate declarations and stop warning on pub extern crate 2016-02-24 01:34:14 +00:00
Corey Farwell bc2f5e2612 Use associated functions for libsyntax SepSeq constructors. 2016-02-22 23:24:42 -05:00
bors 9658645407 Auto merge of #31534 - jseyfried:restrict_noninline_mod, r=nikomatsakis
This PR disallows non-inline modules without path annotations that are either in a block or in an inline module whose containing file is not a directory owner (fixes #29765).
This is a [breaking-change].
r? @nikomatsakis
2016-02-16 19:34:57 +00:00
Nick Cameron 73a8513b88 Rebasing 2016-02-15 13:14:31 +13:00
Nick Cameron 847a0d2150 Some error recovery in the parser 2016-02-15 09:33:21 +13:00
Nick Cameron ffd2a0b9d7 Add some simple error recovery to the parser and fix tests
Some tests just add the extra errors, others I fix by doing some simple error recovery. I've tried to avoid doing too much in the hope of doing something more principled later.

In general error messages are getting worse at this stage, but I think in the long run they will get better.
2016-02-15 09:30:23 +13:00
Nick Cameron 0ef9c5f585 error correction for missing or mismatched closing brackets 2016-02-15 09:30:23 +13:00
Nick Cameron 36a9f0cff1 refactoring: inline some function in the parser 2016-02-15 09:30:23 +13:00
Vadim Petrochenkov 9f414a44a7 Split ast::PatKind::Enum into tuple struct and path patterns 2016-02-13 15:51:27 +03:00