Commit graph

9051 commits

Author SHA1 Message Date
Mazdak Farrokhzad
2a49dd0db6 Update existential_type + impl_trait_in_bindings issue numbers. 2019-07-29 00:09:18 +02:00
Vadim Petrochenkov
676d282dd3 Deny unused_lifetimes through rustbuild 2019-07-28 18:47:02 +03:00
Vadim Petrochenkov
434152157f Remove lint annotations in specific crates that are already enforced by rustbuild
Remove some random unnecessary lint `allow`s
2019-07-28 18:46:24 +03:00
Mazdak Farrokhzad
75e23ff411
Rollup merge of #62550 - Centril:rest-patterns, r=petrochenkov
Implement RFC 2707 + Parser recovery for range patterns

Implement https://github.com/rust-lang/rfcs/pull/2707.

- Add a new basic syntactic pattern form `ast::PatKind::Rest` (parsed as `..` or `DOTDOT`) and simplify `ast::PatKind::{Slice, Tuple, TupleStruct}` as a result.

- Lower `ast::PatKind::Rest` in combination with the aforementioned `PatKind` variants as well as `PatKind::Ident`. The HIR remains unchanged for now (may be advisable to make slight adjustments later).

- Refactor `parser.rs` wrt. parsing sequences and lists of things in the process.

- Add parser recovery for range patterns of form `X..`, `X..=`, `X...`, `..Y`, `..=Y`, and `...Y`.
   This should make it easy to actually support these patterns semantically later if we so desire.

cc https://github.com/rust-lang/rust/issues/62254

r? @petrochenkov
2019-07-28 11:11:04 +02:00
Mazdak Farrokhzad
becdba80ea Address comments in lowering + parsing. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
2f55354759 Recover on 'X..' / 'X..=' / 'X...' range patterns. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
974413fcc5 Recover on '..X' / '..=X' / '...X' range patterns. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
62b29a1e17 Adjust parsing of Slice, Tuple, TupleStruct patterns. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
7e1b671f8a Cleanup using the new parse_*_seq methods. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
7aeb4b7327 Add more parse_*_seq methods for code reuse. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
0a40ef23ad Cleanup parse_seq_* methods + record trailing separators. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
8ba5f49f6f Adjust and document 'Pat::to_ty' accordingly. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
b02941f2a6 Adjust pretty printing accordingly. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
12250a2017 Adjust feature gating of subslice patterns accordingly. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
633c9972ac Adjust 'ast::PatKind::{TupleStruct,Tuple,Slice}'. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
ff77ef2d70 Introduce 'ast::Pat::is_rest(&self) -> bool'. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
f7c75cc11a Add 'ast::PatKind::Rest'. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
5c7008540d
Rollup merge of #63038 - eupn:outer-attribute-diag, r=estebank
Make more informative error on outer attribute after inner

Fixes #61218.

?r @estebank
2019-07-28 03:01:53 +02:00
Mazdak Farrokhzad
ca0cd73f49
Rollup merge of #62771 - petrochenkov:depext, r=eddyb
Break dependencies between `syntax_ext` and other crates

Move `source_util` macros into `syntax_ext`.
Move other early code generation facilities like standard library injection into `syntax_ext`.

The only crate that depends on `syntax_ext` now is `rustc_interface` which is one of the "final" crates that depend on everything.

Minor: Cleanup dependencies of `rustc_driver`, many of them are no longer used after introduction of `rustc_interface`.

r? @eddyb
2019-07-28 03:01:46 +02:00
Vadim Petrochenkov
42a317a1cd Remove run-pass test suites 2019-07-27 18:56:17 +03:00
Evgenii P
fc9bfd68b5 Treat doc comments separately 2019-07-27 18:24:17 +07:00
Vadim Petrochenkov
b5a0e6ea80 syntax_ext: proc_macro_decls -> proc_macro_harness
Few other minor renamings for consistency.
Remove one unused dependency from `rustc_passes`.
Fix libsyntax tests.
Fix rebase.
2019-07-27 14:16:16 +03:00
Vadim Petrochenkov
4d535bdf59 Move standard library injection into libsyntax_ext 2019-07-27 13:56:54 +03:00
Vadim Petrochenkov
f6eda99379 Move test harness generation into libsyntax_ext 2019-07-27 13:56:54 +03:00
Vadim Petrochenkov
4ad0daa220 Move proc macro server into libsyntax 2019-07-27 13:55:25 +03:00
Vadim Petrochenkov
3eeec1c5d2 Break dependencies between syntax_ext and some other crates
Move `source_uitil` macros into `syntax_ext`
Cleanup dependencies of `rustc_driver`
2019-07-27 13:52:37 +03:00
Evgenii P
8b3f28cf0f Make more informative error on outer attr after inner 2019-07-27 16:45:45 +07:00
bors
09e3989758 Auto merge of #62086 - petrochenkov:builtout, r=eddyb
Define built-in macros through libcore

This PR defines built-in macros through libcore using a scheme similar to lang items (attribute `#[rustc_builtin_macro]`).
All the macro properties (stability, visibility, etc.) are taken from the source code in libcore, with exception of the expander function transforming input tokens/AST into output tokens/AST, which is still provided by the compiler.

The macros are made available to user code through the standard library prelude (`{core,std}::prelude::v1`), so they are still always in scope.
As a result **built-in macros now have stable absolute addresses in the library**, like `core::prelude::v1::line!()`, this is an insta-stable change.

Right now `prelude::v1` is the only publicly available absolute address for these macros, but eventually they can be moved into more appropriate locations with library team approval (e.g. `Clone` derive -> `core::clone::Clone`).

Now when built-in macros have canonical definitions they can be imported or reexported without issues (https://github.com/rust-lang/rust/issues/61687).

Other changes:
- You can now define a derive macro with a name matching one of the built-in derives (https://github.com/rust-lang/rust/issues/52269). This was an artificial restriction that could be worked around with import renaming anyway.

Known regressions:
- Empty library crate with a crate-level `#![test]` attribute no longer compiles without `--test`. Previously it didn't compile *with* `--test` or with the bin crate type.

Fixes https://github.com/rust-lang/rust/issues/61687
Fixes https://github.com/rust-lang/rust/issues/61804
r? @eddyb
2019-07-26 23:29:02 +00:00
Mazdak Farrokhzad
0614a94d67
Rollup merge of #62983 - Mark-Simulacrum:remove-needless-rc, r=petrochenkov
Remove needless indirection through Rc

NamedMatch is already cheap to clone due to Lrc's inside.
2019-07-26 18:56:59 +02:00
Mazdak Farrokhzad
1893ac6db3
Rollup merge of #62963 - estebank:homoglyph-recovery, r=petrochenkov
Allow lexer to recover from some homoglyphs
2019-07-26 18:56:53 +02:00
Mazdak Farrokhzad
c6c8693b4c
Rollup merge of #62956 - ia0:fix_62831, r=petrochenkov
Implement slow-path for FirstSets::first

When 2 or more sequences share the same span, we can't use the precomputed map
for their first set. So we compute it recursively.

Fixes #62831.
2019-07-26 18:56:52 +02:00
Vadim Petrochenkov
8eaf17bca2 Introduce built-in macros through libcore 2019-07-26 13:09:54 +03:00
Julien Cretin
df4b23e721 Implement slow-path for FirstSets::first
When 2 or more sequences share the same span, we can't use the precomputed map
for their first set. So we compute it recursively.

Fixes #62831.
2019-07-25 23:28:47 +02:00
Mazdak Farrokhzad
c9a766ab47
Rollup merge of #62887 - estebank:issue-62881, r=petrochenkov
Make the parser TokenStream more resilient after mismatched delimiter recovery

Fix #62881, fix #62895.
2019-07-25 23:21:03 +02:00
Mazdak Farrokhzad
e1de70b045
Rollup merge of #62735 - petrochenkov:galloc, r=alexcrichton
Turn `#[global_allocator]` into a regular attribute macro

It was a 99% macro with exception of some diagnostic details.

As a result of the change, `#[global_allocator]` now works in nested modules and even in nameless blocks.

Fixes https://github.com/rust-lang/rust/issues/44113
Fixes https://github.com/rust-lang/rust/issues/58072
2019-07-25 23:21:00 +02:00
Mazdak Farrokhzad
845e146d04
Rollup merge of #60938 - jonas-schievink:doc-include-paths, r=petrochenkov
rustdoc: make #[doc(include)] relative to the containing file

This matches the behavior of other in-source paths like `#[path]` and the `include_X!` macros.

Fixes https://github.com/rust-lang/rust/pull/58373#issuecomment-462349380
Also addresses https://github.com/rust-lang/rust/issues/44732#issuecomment-467660239

cc #44732

This is still missing a stdsimd change (42ed30e0b5), so CI will currently fail. I'll land that change once I get initial feedback for this PR.
2019-07-25 23:20:51 +02:00
Esteban Küber
684497648a review comments: add FIXME comments and formatting 2019-07-25 12:36:51 -07:00
Mark Rousskov
0e022f87e7 Remove needless indirection through Rc
NamedMatch is already cheap to clone due to Lrc's inside.
2019-07-25 13:26:20 -04:00
Esteban Küber
70c817aee3 Allow lexer to recover from some homoglyphs 2019-07-24 16:10:42 -07:00
Mazdak Farrokhzad
5a7db0e19a
Rollup merge of #62901 - petrochenkov:serde, r=Centril
cleanup: Remove `extern crate serialize as rustc_serialize`s
2019-07-25 01:05:03 +02:00
Mazdak Farrokhzad
c44e29bb59
Rollup merge of #62917 - estebank:trailing-slash, r=matklad
Always emit trailing slash error

Fix #62913.

r? @petrochenkov
2019-07-24 16:13:20 +02:00
Mazdak Farrokhzad
5c8dfd589c
Rollup merge of #62890 - fakenine:normalize_use_of_backticks_compiler_messages_p15, r=Centril
Normalize use of backticks in compiler messages for libsyntax/*

https://github.com/rust-lang/rust/issues/60532
2019-07-24 16:13:15 +02:00
Vadim Petrochenkov
6e4f16173c Demote template check error to a lint for #[test] and #[bench] 2019-07-24 12:29:45 +03:00
Vadim Petrochenkov
76b1ffaf6c syntax_ext: Reuse built-in attribute template checking for macro attributes 2019-07-24 12:29:45 +03:00
Vadim Petrochenkov
433024147a syntax_ext: Turn #[global_allocator] into a regular attribute macro 2019-07-24 12:29:44 +03:00
Vadim Petrochenkov
a93fdfedf3 Merge rustc_allocator into libsyntax_ext 2019-07-24 12:27:58 +03:00
Esteban Küber
e26e6749fb Always emit trailing slash error 2019-07-23 17:24:18 -07:00
Esteban Küber
fe2b5bbe6d review comments 2019-07-23 12:51:34 -07:00
Esteban Küber
f56c8f6ea4 Fix another case 2019-07-23 11:19:13 -07:00
Samy Kacimi
2083a123a5
Normalize use of backticks in compiler messages for libsyntax/*
https://github.com/rust-lang/rust/issues/60532
2019-07-23 20:03:20 +02:00