Commit graph

7395 commits

Author SHA1 Message Date
bors
ef8cb40c9c Auto merge of #51519 - ExpHP:issue-51331-b, r=petrochenkov
Fix for $crate var normalization in proc macro for externally defined macros

Fixes #51331, a bug that has existed in at least *some* form for a year and a half.

The PR includes the addition of a `fold_qpath` method to `syntax::fold::Folder`.  Overriding this method is useful for folds that modify paths in a way that invalidates indices (insertion or removal of a component), as it provides the opportunity to update `qself.position` in `<A as B>::C` paths.  I added it because the bugfix is messy without it.

(unfortunately, grepping around the codebase, I did not see anything else that could use it.)
2018-06-12 15:23:28 +00:00
Michael Lamparski
a20c177827 add fold::Folder::fold_qpath 2018-06-12 08:06:22 -04:00
bors
a1aae290d5 Auto merge of #51508 - PSeitz:master, r=Mark-Simulacrum
Make span_fatal and parse_block public

span_fatal and parse_block  were made private in #51265. These methods are used in stainless.

Related #51498 #51504
2018-06-12 11:06:09 +00:00
bors
1abb4ef636 Auto merge of #51498 - topecongiro:pub-parse_ident, r=petrochenkov
Make parse_ident public

`parse_ident` was made private in #51265. In rustfmt the method is used to create a custom parser for macro call.
2018-06-12 02:48:10 +00:00
Simon Sapin
999690ce5d Stabilize the #[global_allocator] attribute
Fixes https://github.com/rust-lang/rust/issues/27389
2018-06-11 13:48:56 -07:00
PSeitz
6fd9ede0cd
Make span_fatal and parse_block public
span_fatal and parse_block  were made private in #51265. These methods are used in stainless.

Related #51498 #51504
2018-06-11 21:19:12 +02:00
bors
0b7c9e756e Auto merge of #51490 - Havvy:diagnostic-list, r=GuillaumeGomez
Long diagnostic for E0541

r? @GuillaumeGomez
2018-06-11 15:28:44 +00:00
Seiichi Uchida
ed74b0b016 Make parse_ident public 2018-06-11 23:04:11 +09:00
Havvy
cf3fcab973 More E0541 long diagnostic wording tweaks 2018-06-11 03:51:04 -07:00
bors
13f8d073fe Auto merge of #51480 - dtolnay:lifetime, r=kennytm
Enable fall through past $:lifetime matcher

```rust
macro_rules! is_lifetime {
    ($lifetime:lifetime) => { true };
    ($other:tt) => { false };
}

fn main() {
    println!("{}", is_lifetime!('lifetime));
    println!("{}", is_lifetime!(@));
}
```

Before this fix, the `is_lifetime!` invocation would fail to compile with:

```
error: expected a lifetime, found `@`
 --> src/main.rs:8:33
  |
8 |     println!("{}", is_lifetime!(@));
  |                                 ^
```

Fixes #50903.
Fixes #51477.

r? @kennytm
2018-06-11 10:43:20 +00:00
Havvy
0c91bd200e Make tidy happy 2018-06-11 03:04:08 -07:00
Havvy
2d7b046d71 Fix typos in previous commit 2018-06-11 02:44:55 -07:00
Havvy
f7df1f38dd Long diagnostic for E0541 2018-06-11 01:52:12 -07:00
David Tolnay
987020846c
Enable fall through past $:lifetime matcher 2018-06-10 14:39:16 -07:00
bors
a805a2a5eb Auto merge of #50205 - topecongiro:include-parens-to-type-parameter, r=petrochenkov
Include parens to type parameter

The motivation of this PR is to fix a bug in rustfmt (cc https://github.com/rust-lang-nursery/rustfmt/issues/2630).
2018-06-10 20:09:22 +00:00
Seiichi Uchida
699be41809 Simplify an error handling in the parser 2018-06-10 10:37:38 +09:00
Seiichi Uchida
78a19d9b88 Include parens to type parameter 2018-06-10 10:37:38 +09:00
Mark Simulacrum
60058e5dbe Crate-ify and delete unused code in syntax::parse 2018-06-09 16:57:19 -06:00
bors
61d88318aa Auto merge of #51068 - Crazycolorz5:pluseqsplitting, r=petrochenkov
parser: Split `+=` into `+` and `=` where `+` is explicitly requested (such as generics)

Added functions in tokens to check whether a token leads with `+`. Used them when parsing to allow for token splitting of `+=` into `+` and `=`.
Fixes https://github.com/rust-lang/rust/issues/47856
2018-06-09 17:46:36 +00:00
Mark Rousskov
d68098a43e
Rollup merge of #51298 - Dylan-DPC:stabilise/termination-test, r=nikomatsakis
Stabilize unit tests with non-`()` return type

References #48854
2018-06-08 17:20:59 -06:00
Mark Rousskov
71865fb947
Rollup merge of #51099 - Crazycolorz5:expectedcloseparen, r=estebank
Fix Issue 38777

When looking through for a closing bracket in the loop condition, adds them to expecteds.
https://github.com/rust-lang/rust/issues/38777
2018-06-08 17:20:57 -06:00
kennytm
e46ef1bb86
Rollup merge of #51417 - pietroalbini:revert-49719, r=nikomatsakis
Revert #49719

This also needs to be backported into beta.

Fixes #51416.
r? @nikomatsakis
2018-06-08 07:05:47 +08:00
kennytm
26a9d589c8
Rollup merge of #51283 - kennytm:fix-51279-preempt-the-warning-song-and-dance, r=nikomatsakis
Deny #[cfg] and #[cfg_attr] on generic parameters.

Fix #51279.

Attributes on generic parameters are not expanded, meaning `#[cfg]`, `#[cfg_attr]` and attribute proc macros are entirely ignored on them.

This PR makes using the first two attributes an error, because if they are correctly expanded will affect the AST and change code behavior.

I'm beta-nominating this, because generic parameter attributes are stabilizing in 1.27, and if we did not reserve their usage, we may never be able to repurpose the meaning of these attributes in the Rust 2015 edition.
2018-06-08 07:05:39 +08:00
Pietro Albini
1df7817122
Revert "Auto merge of #49719 - mark-i-m:no_sep, r=petrochenkov"
This reverts commit d6ba1b9b02, reversing
changes made to 8de5353f75.
2018-06-07 17:07:05 +02:00
bors
35aeecb8aa Auto merge of #51201 - estebank:dotdot, r=petrochenkov
Accept `..` in incorrect position to avoid further errors

We currently give a specific message when encountering a `..` anywhere
other than the end of a pattern. Modify the parser to accept it (while
still emitting the error) so that we don't also trigger "missing fields
in pattern" errors afterwards.

Add suggestions to either remove trailing `,` or moving the `..` to the
end.

Follow up to #49268.
2018-06-06 14:04:06 +00:00
dylan_DPC
1048ae29a1 append unused variables with _ 2018-06-06 12:22:38 +05:30
dylan_DPC
e8fd74a11d remove redundant match branch 2018-06-05 23:44:42 +05:30
dylan_DPC
4cbf400366 flag changed to none 2018-06-05 23:28:32 +05:30
Esteban Küber
d66d35bb91 Account for comma in suggestion 2018-06-05 08:48:55 -07:00
Esteban Küber
cbc70a0d68 Improve diagnostics for incorrect .. usage
When using `..` somewhere other than the end, parse the rest of the
pattern correctly while still emitting an error.

Add suggestions to either remove trailing `,` or moving the `..` to the
end.
2018-06-05 08:48:55 -07:00
Esteban Küber
8f4a5429c2 Accept .. in incorrect position to avoid further errors
We currently give a specific message when encountering a `..` anywhere
other than the end of a pattern. Modify the parser to accept it (while
still emitting the error) so that we don't also trigger "missing fields
in pattern" errors afterwards.
2018-06-05 08:48:54 -07:00
bors
4122885e0f Auto merge of #51140 - GuillaumeGomez:doc-keyword, r=QuietMisdreavus
rustdoc: introduce the #[doc(keyword="")] attribute for documenting keywords

Part of #34601.

r? @QuietMisdreavus
2018-06-05 10:00:08 +00:00
Crazycolorz5
759a0e07b5 Fixed indentation error. 2018-06-04 22:25:01 -04:00
Crazycolorz5
812ace6e86 Fixed incorrect check_plus to token.is_like_plus. 2018-06-04 22:25:01 -04:00
Crazycolorz5
a5dc83d970 Tidy fixes. 2018-06-04 22:25:01 -04:00
Crazycolorz5
7a9ffa7307 Added is_like_plus to token, and used that in place of equality comparison to Plus token. 2018-06-04 22:25:00 -04:00
Crazycolorz5
682033c4e4 Implemented eat_plus and used it in parsing parse_ty_param_bounds_common. 2018-06-04 22:25:00 -04:00
bors
f9157f5b86 Auto merge of #51242 - ytausky:mut-ref, r=estebank
Suggest not mutably borrowing a mutable reference

This PR would (hopefully) solve #45392. I deviated a bit from @estebank's instructions since the error span only included the borrowed expression (e.g. the `b` in `&mut b`). I also didn't check the mutability of the local binding, since this whole case is concerned with an immutable local.

I can see two outstanding questions:
1. `note_immutability_blame` is called in two places, but I only have one test case. I think it covers the call in `report_bckerror`, but I'm not sure how to trigger the call from `report_aliasability_violation`.
2. There is one failing test, where the local binding is `self: &mut Self`. I'm not entirely sure what the correct output should be, but I think the new message should also apply. Unfortunately, since this parameter is parsed differently, its `let_span` covers both the pattern and the type, leading to a wrong suggestion text. I'm not sure how to correctly identify this case.
2018-06-05 01:47:13 +00:00
Guillaume Gomez
ded5c5a9ee Put doc keyword behind feature flag 2018-06-04 09:52:31 +02:00
Dylan DPC
72f2f1935d
Merge branch 'master' into stabilise/termination-test 2018-06-04 10:58:56 +05:30
Jorge Aparicio
e44ad61a2d implement #[panic_implementation] 2018-06-03 13:46:19 +02:00
dylan_DPC
bc7416213c fixed feature gate to right place 2018-06-02 17:58:06 +05:30
dylan_DPC
b78457f0fb Stabilize unit tests with non-() return type 2018-06-02 17:27:37 +05:30
Yaron Tausky
3303e6847b Suggest not mutably borrowing a mutable reference
This commit is concerned with the case where the user tries to mutably
borrow a mutable reference, thereby triggering an error. Instead of the
existing suggestion to make the binding mutable, the compiler will now
suggest to avoid borrowing altogether.
2018-06-01 23:17:10 +02:00
kennytm
c9cb806689
Deny #[cfg] and #[cfg_attr] on generic parameters. 2018-06-02 05:11:33 +08:00
Crazycolorz5
c1df62a760 Add closing bracket expectation to sequences, modified appropriate test cases. 2018-06-01 10:05:46 -04:00
Guillaume Gomez
7552c2ea64
Rollup merge of #51240 - nnethercote:parse-2, r=nikomatsakis
Two minor parsing tweaks
2018-05-31 22:17:16 +02:00
Nicholas Nethercote
5adba8e9d9 Avoid an unnecessary match when lexing "<-". 2018-05-31 16:05:39 +10:00
Nicholas Nethercote
3af6291eff Tweak identifer lexing.
By calling `bump()` after getting the first char, to avoid a redundant
`ident_continue()` test on it.
2018-05-31 16:04:33 +10:00
bors
e38554cd80 Auto merge of #51145 - petrochenkov:npbot, r=alexcrichton
resolve: Make sure indeterminate and inconsistent macro resolutions always generate errors

Addresses the issue described in https://github.com/rust-lang/rust/pull/50911#issuecomment-392560525

I haven't come up with a minimized reproduction yet, but confirmed that `npbot` now generates the correct error with `![feature(use_extern_macros)]`.
2018-05-31 03:18:00 +00:00