Commit graph

1878 commits

Author SHA1 Message Date
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 f945190e63
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
f945190e63
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
Vadim Petrochenkov
14adc9bb63 Rename ast::Pat_ and its variants 2016-02-13 13:49:24 +03:00
Jeffrey Seyfried
d21e908175 Disallow non-inline modules without path annotations inside blocks and fix fallout 2016-02-13 07:05:28 +00:00