Vadim Petrochenkov
96032aa5ef
expand: Keep the correct current expansion ID for eager expansions
...
Solve the problem of `ParentScope` entries for eager expansions not exising in the resolver map by creating them on demand.
2019-08-21 11:53:39 +03:00
Mazdak Farrokhzad
3f7e7c2fd3
Rollup merge of #63209 - Centril:stabilize-async-await, r=cramertj
...
Stabilize `async_await` in Rust 1.39.0
Here we stabilize:
- free and inherent `async fn`s,
- the `<expr>.await` expression form,
- and the `async move? { ... }` block form.
Closes https://github.com/rust-lang/rust/issues/62149 .
Closes https://github.com/rust-lang/rust/issues/50547 .
All the blockers are now closed.
<details>
- [x] FCP in https://github.com/rust-lang/rust/issues/62149
- [x] https://github.com/rust-lang/rust/issues/61949 ; PR in https://github.com/rust-lang/rust/pull/62849 .
- [x] https://github.com/rust-lang/rust/issues/62517 ; PR in https://github.com/rust-lang/rust/pull/63376 .
- [x] https://github.com/rust-lang/rust/issues/63225 ; PR in https://github.com/rust-lang/rust/pull/63501
- [x] https://github.com/rust-lang/rust/issues/63388 ; PR in https://github.com/rust-lang/rust/pull/63499
- [x] https://github.com/rust-lang/rust/issues/63500 ; PR in https://github.com/rust-lang/rust/pull/63501
- [x] https://github.com/rust-lang/rust/issues/62121#issuecomment-506884048
- [x] Some tests for control flow (PR https://github.com/rust-lang/rust/pull/63387 ):
- `?`
- `return` in `async` blocks
- `break`
- [x] https://github.com/rust-lang/rust/pull/61775#issuecomment-506883180 , i.e. tests for https://github.com/rust-lang/rust/pull/60944 with `async fn`s instead). PR in https://github.com/rust-lang/rust/pull/63383
</details>
r? @cramertj
2019-08-20 19:42:18 +02:00
Mazdak Farrokhzad
b0d4782948
Stabilize 'async_await'.
2019-08-20 02:38:02 +02:00
Aleksey Kladov
914e1f4564
glue tokens when building token stream
2019-08-19 21:59:33 +03:00
Aleksey Kladov
8b932dfda7
remove composite tokens support from the lexer
2019-08-19 21:59:09 +03:00
bors
ef1ecbefb8
Auto merge of #62948 - matklad:failable-file-loading, r=petrochenkov
...
Normalize newlines when loading files
Fixes #62865
2019-08-18 04:37:01 +00:00
bors
fc8765d6d8
Auto merge of #61708 - dlrobertson:or-patterns-0, r=centril
...
Initial implementation of or-patterns
An incomplete implementation of or-patterns (e.g. `Some(0 | 1)` as a pattern). This patch set aims to implement initial parsing of `or-patterns`.
Related to: #54883
CC @alexreg @varkor
r? @Centril
2019-08-18 01:02:20 +00:00
Vadim Petrochenkov
1064d41c96
resolve/expand: Rename some things for clarity
2019-08-17 21:04:48 +03:00
Dan Robertson
1870537f27
initial implementation of or-pattern parsing
...
Initial implementation of parsing or-patterns e.g., `Some(Foo | Bar)`.
This is a partial implementation of RFC 2535.
2019-08-17 15:55:40 +00:00
varkor
1713ac4bf5
Initial implementation of or patterns
2019-08-17 15:05:36 +00:00
Matthew Jasper
d04af194fc
Remove SyntaxContext from {ast, hir}::{GlobalAsm, InlineAsm}
...
We now store it in the `Span` of the expression or item.
2019-08-17 09:12:32 +01:00
Mazdak Farrokhzad
bf04edee2f
Rollup merge of #63545 - Centril:gate-yield-preexp, r=oli-obk
...
Feature gate 'yield $expr?' pre-expansion
Also improve the overall ergonomics of pre-expansion gating in general.
r? @Zoxc
2019-08-17 03:02:56 +02:00
Mazdak Farrokhzad
20661f18df
Simplify pre-expansion gating in general.
2019-08-16 19:24:15 +02:00
Mazdak Farrokhzad
4087fc583e
Feature gate 'yield ?' pre-expansion.
2019-08-16 19:24:15 +02:00
Mazdak Farrokhzad
c83d3c3281
Rollup merge of #63525 - matklad:centraliza-file-loading, r=petrochenkov
...
Make sure that all file loading happens via SourceMap
That way, callers don't need to repeat "let's add this to sm manually
for tracking dependencies" trick.
It should make it easier to switch to using `FileLoader` for binary
files in the future as well
cc #62948
r? @petrochenkov
2019-08-16 18:22:24 +02:00
Vadim Petrochenkov
136db2235a
hygiene: ExpnInfo -> ExpnData
...
For naming consistency with everything else in this area
2019-08-15 20:41:45 +03:00
Vadim Petrochenkov
74190a5e1c
syntax_pos: Remove the duplicate global edition
...
It was introduced to avoid going through `hygiene_data`, but now it's read only once, when `ParseSess` is created, so going through a lock is ok.
2019-08-15 20:41:45 +03:00
Vadim Petrochenkov
1a447738b8
hygiene: Merge ExpnInfo and InternalExpnData
2019-08-15 20:41:45 +03:00
Vadim Petrochenkov
73dee258c1
hygiene: Remove Options from functions returning ExpnInfo
...
The expansion info is not optional and should always exist
2019-08-15 20:39:27 +03:00
Vadim Petrochenkov
6cb28b6617
Ident::with_empty_ctxt -> Ident::with_dummy_span
...
`Ident` has had a full span rather than just a `SyntaxContext` for a long time now.
2019-08-15 20:39:26 +03:00
Vadim Petrochenkov
67d6ce4206
syntax_pos: NO_EXPANSION/SyntaxContext::empty() -> SyntaxContext::root()
...
For consistency with `ExpnId::root`.
Also introduce a helper `Span::with_root_ctxt` for creating spans with `SyntaxContext::root()` context
2019-08-15 20:38:12 +03:00
Vadim Petrochenkov
dfcbe75900
syntax_pos: Introduce a helper for checking whether a span comes from expansion
2019-08-15 20:38:12 +03:00
Vadim Petrochenkov
a6182711ef
Remove Spanned from {ast,hir}::FieldPat
2019-08-15 12:31:50 +03:00
Vadim Petrochenkov
433b1e36e1
Remove Spanned from ast::Mac
2019-08-15 11:45:28 +03:00
Vadim Petrochenkov
73d2da0894
Remove Spanned from mk_name_value_item_str and expr_to_spanned_string
2019-08-15 11:44:22 +03:00
Aleksey Kladov
66dc08ad60
Make sure that all file loading happens via SourceMap
...
That way, callers don't need to repeat "let's add this to sm manually
for tracking dependencies" trick.
It should make it easier to switch to using `FileLoader` for binary
files in the future as well
2019-08-15 10:42:31 +03:00
Mazdak Farrokhzad
ad44d42750
Rollup merge of #63543 - c410-f3r:variant, r=c410-f3r
...
Merge Variant and Variant_
Extracted from #63468 .
2019-08-14 22:56:29 +02:00
Mazdak Farrokhzad
d4ecc6f5c0
Rollup merge of #63542 - c410-f3r:node_ids, r=petrochenkov
...
Add NodeId for Arm, Field and FieldPat
Extracted from #63468
2019-08-14 22:56:28 +02:00
Mazdak Farrokhzad
83cd4e3211
Rollup merge of #63537 - petrochenkov:novisit, r=alexcrichton
...
expand: Unimplement `MutVisitor` on `MacroExpander`
Each call to `fully_expand_fragment` is something unique, interesting, and requiring attention.
It represents a "root" of expansion and its use means that something unusual is happening, like eager expansion or expansion performed outside of the primary expansion pass.
So, it shouldn't hide under a generic visitor call.
Also, from all the implemented visitor methods only two were actually used.
cc https://github.com/rust-lang/rust/pull/63468#discussion_r313504119
2019-08-14 22:56:27 +02:00
Mazdak Farrokhzad
409df9b530
Rollup merge of #63528 - petrochenkov:anyany, r=estebank
...
syntax: Remove `DummyResult::expr_only`
The effect is that if a built-in macro both returns an erroneous AST fragment and is used in unexpected position, then the incorrect position error won't be reported.
This combination of two errors should be rare and isn't worth an extra field that makes people ask questions in comments.
(There wasn't even a test making sure it worked.)
Addresses https://github.com/rust-lang/rust/pull/63468#discussion_r313504644
r? @estebank
2019-08-14 22:56:25 +02:00
Mazdak Farrokhzad
aaeff01446
Rollup merge of #63490 - Centril:cleanup-pat-parser, r=petrochenkov
...
libsyntax: cleanup and refactor `pat.rs`
A smaller refactoring & cleanup of `pat.rs` (best read commit by commit).
r? @petrochenkov
2019-08-14 22:56:21 +02:00
Mazdak Farrokhzad
7178cf5f97
Rollup merge of #62984 - nathanwhit:extra_semi_lint, r=varkor
...
Add lint for excess trailing semicolons
Closes #60876 .
A caveat (not necessarily a negative, but something to consider) with this implementation is that excess semicolons after return/continue/break now also cause an 'unreachable statement' warning.
For the following example:
```
fn main() {
extra_semis();
}
fn extra_semis() -> i32 {
let mut sum = 0;;;
for i in 0..10 {
if i == 5 {
continue;;
} else if i == 9 {
break;;
} else {
sum += i;;
}
}
return sum;;
}
```
The output is:
```
warning: unnecessary trailing semicolons
--> src/main.rs:5:21
|
5 | let mut sum = 0;;;
| ^^ help: remove these semicolons
|
= note: `#[warn(redundant_semicolon)]` on by default
warning: unnecessary trailing semicolon
--> src/main.rs:8:22
|
8 | continue;;
| ^ help: remove this semicolon
warning: unnecessary trailing semicolon
--> src/main.rs:10:19
|
10 | break;;
| ^ help: remove this semicolon
warning: unnecessary trailing semicolon
--> src/main.rs:12:22
|
12 | sum += i;;
| ^ help: remove this semicolon
warning: unnecessary trailing semicolon
--> src/main.rs:15:16
|
15 | return sum;;
| ^ help: remove this semicolon
warning: unreachable statement
--> src/main.rs:8:22
|
8 | continue;;
| ^
|
= note: `#[warn(unreachable_code)]` on by default
warning: unreachable statement
--> src/main.rs:10:19
|
10 | break;;
| ^
warning: unreachable statement
--> src/main.rs:15:16
|
15 | return sum;;
| ^
```
2019-08-14 22:56:18 +02:00
Caio
6a42b0b28d
Merge Variant and Variant_
2019-08-14 14:47:01 -03:00
Aleksey Kladov
911398b96c
remove special handling of \r\n from the lexer
2019-08-14 16:38:40 +03:00
Mazdak Farrokhzad
a8bb3756b6
Rollup merge of #63530 - ehuss:typo-statemement, r=centril
...
Fix typo in error message.
2019-08-14 04:18:57 +02:00
Mazdak Farrokhzad
43f4990fc4
Rollup merge of #63508 - estebank:compromice, r=petrochenkov
...
Do not ICE when synthesizing spans falling inside unicode chars
Fix https://github.com/rust-lang/rust/issues/61226 .
2019-08-14 04:18:51 +02:00
Mazdak Farrokhzad
c824839471
Rollup merge of #63475 - iluuu1994:issue-62632, r=Centril
...
Bring back suggestion for splitting `<-` into `< -`
Closes #62632
2019-08-14 04:18:42 +02:00
Mazdak Farrokhzad
76bd7d62d6
Rollup merge of #63459 - eddyb:issue-63430, r=petrochenkov
...
syntax: account for CVarArgs being in the argument list.
Fixes #63430 by testing for `1` argument (the `CVarArgs` itself) instead of `0`.
Note that the error has basically been impossible to trigger since the change that caused #63430 , so perhaps we need an audit of untested errors.
Also, this check probably belongs in AST validation/HIR lowering, but I'd rather fix it in place for now.
r? @petrochenkov cc @dlrobertson
2019-08-14 04:18:40 +02:00
Caio
9348af8396
Add NodeId for Arm, Field and FieldPat
2019-08-13 22:42:10 -03:00
Vadim Petrochenkov
d416ebeb6e
expand: Unimplement MutVisitor on MacroExpander
...
Each call to `fully_expand_fragment` is something unique, interesting, and requiring attention.
It represents a "root" of expansion and its use means that something unusual is happening, like eager expansion or expansion performed outside of the primary expansion pass.
So, it shouldn't be hide under a generic visitor call.
Also, from all the implemented visitor methods only two were actually used.
2019-08-14 02:35:01 +03:00
Vadim Petrochenkov
0d29142aad
expand: expand_fragment -> fully_expand_fragment
2019-08-14 01:59:14 +03:00
Eric Huss
643ddfaaa8
Apply Centril's suggestion
...
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-08-13 15:09:11 -07:00
Esteban Küber
84e202e6b3
review comments
2019-08-13 11:35:49 -07:00
Eric Huss
ea1a9a0e2b
Fix typo in error message.
2019-08-13 11:21:09 -07:00
Vadim Petrochenkov
376636e517
syntax: Remove DummyResult::expn_only
2019-08-13 20:53:49 +03:00
Esteban Küber
d824edfc2c
Do not ICE when synthesizing spans falling inside unicode chars
2019-08-12 23:31:13 -07:00
nathanwhit
71415ef9bd
Parse excess semicolons as empty stmts for linting
2019-08-12 10:14:07 -04:00
Eduard-Mihai Burtescu
34dcca20e5
syntax: account for CVarArgs being in the argument list.
2019-08-12 15:28:10 +03:00
Mazdak Farrokhzad
c8fc4c106c
extract parse_pat_{tuple_}struct + recover_one_fewer_dotdot
2019-08-12 12:50:44 +02:00
Mazdak Farrokhzad
ddf734deb2
extract fatal_unexpected_non_pat
2019-08-12 12:50:44 +02:00