Commit graph

9206 commits

Author SHA1 Message Date
Mazdak Farrokhzad
d286fe0b8d builtin_attrs.rs: organize! 2019-08-23 01:41:04 +02:00
Mazdak Farrokhzad
584388c4aa builtin_attrs.rs: cleanup with (un)gated!. 2019-08-23 01:40:52 +02:00
Mazdak Farrokhzad
0d19d1d775 builtin_attrs.rs: refactor rustc_attrs entries. 2019-08-23 01:40:37 +02:00
Mazdak Farrokhzad
1c979ad552 builtin_attrs.rs: simplify cfg_fn. 2019-08-23 01:39:59 +02:00
Mazdak Farrokhzad
332a77e621 syntax: extract builin_attrs.rs. 2019-08-23 01:39:54 +02:00
Mazdak Farrokhzad
7afb2a82ec syntax: extract active.rs feature gates. 2019-08-23 01:39:44 +02:00
Mazdak Farrokhzad
975455b37d syntax: extract removed.rs feature gates. 2019-08-23 01:39:38 +02:00
Mazdak Farrokhzad
b873743c02 syntax: extract accepted.rs feature gates. 2019-08-23 01:39:29 +02:00
Mazdak Farrokhzad
70436969e0
Rollup merge of #63717 - petrochenkov:eager, r=matthewjasper
Fix nested eager expansions in arguments of `format_args`

Fixes https://github.com/rust-lang/rust/issues/63460
Fixes https://github.com/rust-lang/rust/issues/63685 (regression from making `format_args` opaque - https://github.com/rust-lang/rust/pull/63114)

r? @matthewjasper
2019-08-21 17:31:39 +02:00
Mazdak Farrokhzad
0e8a1a4e78
Rollup merge of #63762 - rust-lang:fix-async-date, r=Mark-Simulacrum
`async_await` was stabilized in 1.39.0, not 1.38.0.

r? @Mark-Simulacrum
2019-08-21 11:52:28 +02:00
Mazdak Farrokhzad
67e39ed51c
Rollup merge of #63759 - Centril:parse-default-async-fn, r=petrochenkov
Allow 'default async fn' to parse.

- Parse default async fn. Fixes #63716.

(`cherry-pick`ed from 3rd commit in https://github.com/rust-lang/rust/pull/63749.)

r? @petrochenkov
2019-08-21 11:52:25 +02:00
Mazdak Farrokhzad
b6556744b5
Rollup merge of #63755 - Centril:simplify-prexp-gating, r=petrochenkov
Use dedicated type for spans in pre-expansion gating.

- Simplify the overall pre-expansion gating "experience".
2019-08-21 11:52:23 +02:00
Mazdak Farrokhzad
d7c162aefd
Rollup merge of #63721 - Mark-Simulacrum:decouple-error-index, r=matthewjasper
Do not emit JSON dumps of diagnostic codes

This decouples the error index generator from libsyntax for the most part (though it still depends on librustdoc for the markdown parsing and generation).

Fixes #34588
2019-08-21 11:52:20 +02:00
Vadim Petrochenkov
93d369bc2b resolve/expand: Rename some things for clarity and add comments 2019-08-21 11:53:39 +03:00
Vadim Petrochenkov
a83c35692f expand: Do not do questionable span adjustment before eagerly expanding an expression
Maybe it made sense when it was introduced, but now it's doing something incorrect.
2019-08-21 11:53:39 +03:00
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
418eb181ca
async_await was stabilized in 1.39.0, not 1.38.0. 2019-08-21 00:23:08 +02:00
Mazdak Farrokhzad
7ee4f1da8c Allow 'default async fn' to parse. 2019-08-20 22:57:23 +02:00
Mazdak Farrokhzad
777a12c3a4 Use dedicated type for spans in pre-expansion gating. 2019-08-20 20:26:37 +02: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
Mark Rousskov
72e2cfd934 Remove serialization of diagnostics to files
This is no longer used by the index generator and was always an unstable
compiler detail, so strip it out.

This also leaves in RUSTC_ERROR_METADATA_DST since the stage0 compiler
still needs it to be set.
2019-08-20 09:55:31 -04: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