Commit graph

9615 commits

Author SHA1 Message Date
Eduard-Mihai Burtescu
8f1eb345ea Revert "pre-expansion gate const_generics"
This reverts commit 49cbfa1a6f.
2019-10-31 19:08:12 +02:00
Eduard-Mihai Burtescu
ada4a6430d Revert "pre-expansion gate decl_macro"
This reverts commit 1f470ceac2.
2019-10-31 19:08:12 +02:00
Eduard-Mihai Burtescu
680089c2d9 Revert "pre-expansion gate box_patterns"
This reverts commit 2aff6b36d7.
2019-10-31 19:08:11 +02:00
Eduard-Mihai Burtescu
4c48355c69 Revert "pre-expansion gate exclusive_range_pattern"
This reverts commit 665a876e30.
2019-10-31 19:08:11 +02:00
Eduard-Mihai Burtescu
8645ac4218 Revert "pre-expansion gate try_blocks"
This reverts commit 1935ba658c.
2019-10-31 19:08:11 +02:00
Eduard-Mihai Burtescu
73bde2f0ce Revert "pre-expansion gate label_break_value"
This reverts commit 137ded8ab1.
2019-10-31 19:08:10 +02:00
Eduard-Mihai Burtescu
20bfff66a9 Revert "pre-expansion gate box_syntax"
This reverts commit e4ed886578.
2019-10-31 19:08:10 +02:00
Eduard-Mihai Burtescu
4c947a26f2 Revert "pre-expansion gate type_ascription"
This reverts commit 15a6c09b6e.
2019-10-31 19:08:10 +02:00
Guillaume Gomez
a212960a4b stabilize cfg(doctest) 2019-10-29 13:42:55 +01:00
Mazdak Farrokhzad
46063ed23f
Rollup merge of #65809 - roblabla:eficall-abi, r=nagisa
Add new EFIAPI ABI

Fixes #54527

Adds a new ABI, "efiapi", which reflects the calling convention as specified by [the current spec UEFI spec](https://uefi.org/sites/default/files/resources/UEFI%20Spec%202_7_A%20Sept%206.pdf#G6.999903). When compiling for x86_64, we should select the `win64` ABI, while on all other architectures (Itanium, x86, ARM and ARM64 and RISC-V), we should select the `C` ABI.

Currently, this is done by just turning it into the C ABI everywhere except on x86_64, where it's turned into the win64 ABI. Should we prevent this ABI from being used on unsupported architectures, and if so, how would this be done?
2019-10-29 04:08:23 +01:00
Mazdak Farrokhzad
42d4e261a1
Rollup merge of #65294 - varkor:lint-inline-prototype, r=matthewjasper
Lint ignored `#[inline]` on function prototypes

Fixes https://github.com/rust-lang/rust/issues/51280.

- Adds a `unused_attribute` lint for `#[inline]` on function prototypes.
- As a consequence, foreign items, impl items and trait items now have their attributes checked, which could cause some code to no longer compile (it was previously erroneously ignored).
2019-10-29 04:08:18 +01:00
Esteban Küber
e8016c2b13 review comments 2019-10-28 10:53:13 -07:00
Esteban Küber
1b0836df6f Tweak unexpected token wording 2019-10-28 10:53:13 -07:00
Esteban Küber
d673d0ac84 Use heuristics to recover parsing of missing ;
- Detect `,` and `:` typos where `;` was intended.
- When the next token could have been the start of a new statement,
  detect a missing semicolon.
2019-10-28 10:53:13 -07:00
bors
03a50ae9b8 Auto merge of #65188 - matthewjasper:stabilize-const-constructor, r=Centril
Stabilize `const_constructor`

# Stabilization proposal

I propose that we stabilize `#![feature(const_constructor)]`.

Tracking issue: https://github.com/rust-lang/rust/issues/61456
Version target: 1.40 (2019-11-05 => beta, 2019-12-19 => stable).

## What is stabilized

### User guide

Tuple struct and tuple variant constructors are now considered to be constant functions. As such a call expression where the callee has a tuple struct or variant constructor "function item" type can be called:

```rust
const fn make_options() {
    // These already work because they are special cased:
    Some(0);
    (Option::Some)(1);
    // These also work now:
    let f = Option::Some;
    f(2);
    {Option::Some}(3);
    <Option<_>>::Some(5);
}
```

### Motivation

Consistency with other `const fn`. Consistency between syntactic path forms.

This should also ensure that constructors implement `const Fn` traits and can be coerced to `const fn` function pointers, if they are introduced.

## Tests

* [ui/consts/const_constructor/const-construct-call.rs](0d75ab2293/src/test/ui/consts/const_constructor/const-construct-call.rs) - Tests various syntactic forms, use in both `const fn` and `const` items, and constructors in both the current and extern crates.
* [ui/consts/const_constructor/const_constructor_qpath.rs](1850dfcdab/src/test/ui/consts/const_constructor/const_constructor_qpath.rs) - Tests that type qualified paths to enum variants are also considered to be `const fn`.(#64247)

r? @oli-obk

Closes #61456
Closes  #64247
2019-10-28 07:38:49 +00:00
Mazdak Farrokhzad
83260d5c43
Rollup merge of #65792 - Centril:split-syntax-2, r=petrochenkov
rustc, rustc_passes: reduce deps on rustc_expand

Part of #65324.

r? @petrochenkov
2019-10-28 04:53:07 +01:00
Matthew Jasper
170718c93f Stabilize const_constructor 2019-10-27 21:25:35 +00:00
Mazdak Farrokhzad
fb12c70852 rustc, rustc_passes: don't depend on syntax_expand.
This is done by moving some data definitions to syntax::expand.
2019-10-27 17:05:57 +01:00
Mazdak Farrokhzad
16329402bf syntax/attr: reduce reliance on parser 2019-10-27 16:54:12 +01:00
Esteban Küber
93bb780e38 review comments and tweaks 2019-10-26 15:26:08 -07:00
Mazdak Farrokhzad
d51a84259e
Rollup merge of #65761 - popzxc:document-ast, r=petrochenkov
libsyntax: Enhance documentation of the AST module

This PR enhances documentation state to the `libsyntax/ast.rs` (as initiative caused by [rustc-guide#474](https://github.com/rust-lang/rustc-guide/issues/474)), by adding:
- Module documentation.
- Doc-comments (and a bit of usual comments) in non-obvious (as for me) places.
- Minor style fixes to improve module readability.
2019-10-26 14:17:42 +02:00
Igor Aleksanov
ae5203a142 libsyntax: Document ast module
Apply review suggestions

Remove links in the module docs

Flatten imports

Apply review suggestions

Remove useless comments

Fix nits
2019-10-26 06:56:11 +03:00
varkor
b925eb5f42 Update bitflags 2019-10-25 23:26:27 +01:00
roblabla
e54ae5126c Add proper tracking issue for EFIAPI 2019-10-25 18:47:58 +00:00
roblabla
093ec70b1e Add new EFIAPI ABI
Adds a new ABI for the EFIAPI calls. This ABI should reflect the latest
version of the UEFI specification at the time of commit (UEFI spec 2.8,
URL below). The specification says that for x86_64, we should follow the
win64 ABI, while on all other supported platforms (ia32, itanium, arm,
arm64 and risc-v), we should follow the C ABI.

To simplify the implementation, we will simply follow the C ABI on all
platforms except x86_64, even those technically unsupported by the UEFI
specification.

https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf
2019-10-25 13:01:25 +00:00
Mazdak Farrokhzad
c0bbb4bcdc
Rollup merge of #65790 - Centril:move-report-invalid, r=davidtwco
move report_invalid_macro_expansion_item to item.rs

From https://github.com/rust-lang/rust/pull/65324.

r? @Mark-Simulacrum
2019-10-25 13:12:55 +02:00
Mazdak Farrokhzad
cbcbba24ac
Rollup merge of #65789 - Centril:with-desugared-doc, r=davidtwco
move Attribute::with_desugared_doc to librustdoc

From https://github.com/rust-lang/rust/pull/65324.

r? @varkor
2019-10-25 13:12:54 +02:00
Mazdak Farrokhzad
0bfe483c5c
Rollup merge of #65787 - Centril:panictry, r=davidtwco
move panictry! to where it is used.

From https://github.com/rust-lang/rust/pull/65324

r? @davidtwco
2019-10-25 13:12:53 +02:00
Mazdak Farrokhzad
1f93be1bb3
Rollup merge of #65074 - Rantanen:json-byte-pos, r=matklad
Fix the start/end byte positions in the compiler JSON output

Track the changes made during normalization in the `SourceFile` and use this information to correct the `start_byte` and `end_byte` fields in the JSON output.

This should ensure the start/end byte fields can be used to index the original file, even if Rust normalized the source code for parsing purposes. Both CRLF to LF and BOM removal are handled with this one.

The rough plan was discussed with @matklad in rust-lang-nursery/rustfix#176 - although I ended up going with `u32` offset tracking so I wouldn't need to deal with `u32 + i32` arithmetics when applying the offset to the span byte positions.

Fixes #65029
2019-10-25 13:12:45 +02:00
David Wood
e0590ea76f
RFC 2008: Stabilization
This commit stabilizes RFC 2008 (#44109) by removing the feature gate.

Signed-off-by: David Wood <david@davidtw.co>
2019-10-25 09:34:05 +01:00
Mazdak Farrokhzad
8b9661bbb0
Rollup merge of #65747 - Centril:union-issue-fix, r=varkor
Adjust the tracking issue for `untagged_unions`.

Makes https://github.com/rust-lang/rust/issues/55149 the new tracking issue for `untagged_unions`.
Closes https://github.com/rust-lang/rust/issues/32836 which is the old tracking issue.

r? @varkor
2019-10-25 06:18:11 +02:00
Mazdak Farrokhzad
d6a18b6baf
Rollup merge of #65742 - Centril:gate-pre-expansion-subset, r=davidtwco
Pre-expansion gate most of the things

This is a subset of https://github.com/rust-lang/rust/pull/64672. A crater run has already been done and this PR implements conclusions according to https://github.com/rust-lang/rust/pull/64672#issuecomment-542703363.

r? @davidtwco
cc @petrochenkov
2019-10-25 06:18:09 +02:00
Mazdak Farrokhzad
5ff7349ef7 move report_invalid_macro_expansion_item to item.rs 2019-10-25 05:26:36 +02:00
Mazdak Farrokhzad
0a5b38f9c3 move Attribute::with_desugared_doc to librustdoc 2019-10-25 04:38:42 +02:00
Mazdak Farrokhzad
d7f6ba83fc move panictry! to where it is used. 2019-10-25 04:29:37 +02:00
Mazdak Farrokhzad
822f787546 Adjust the tracking issue for untagged_unions.
Also elaborate on some feature gates in `active.rs`.
2019-10-24 02:24:14 +02:00
Mazdak Farrokhzad
15a6c09b6e pre-expansion gate type_ascription 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
e4ed886578 pre-expansion gate box_syntax 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
137ded8ab1 pre-expansion gate label_break_value 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
66995a6a71 dedup GAT gate checks 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
1935ba658c pre-expansion gate try_blocks 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
665a876e30 pre-expansion gate exclusive_range_pattern 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
2aff6b36d7 pre-expansion gate box_patterns 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
1f470ceac2 pre-expansion gate decl_macro 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
49cbfa1a6f pre-expansion gate const_generics 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
04c661ba02 pre-expansion gate crate_visibility_modifier 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
c17a1fd7d0 pre-expansion gate associated_type_bounds 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
2d182b82ce pre-expansion gate trait_alias. 2019-10-24 00:32:03 +02:00
Mazdak Farrokhzad
2e64bb2d37 syntax: reject trait Foo: Bar = Baz;.
Add test for rejecting `trait A: B1 = B2;`.
Also test rejection of `trait A: = B;`.
2019-10-24 00:31:11 +02:00
Mazdak Farrokhzad
4a870aaee4
Rollup merge of #65641 - nnethercote:derive-TokenStream-Encodable-Decodable, r=petrochenkov
Derive `Rustc{En,De}codable` for `TokenStream`.

`TokenStream` used to be a complex type, but it is now just a newtype
around a `Lrc<Vec<TreeAndJoint>>`. Currently it uses custom encoding
that discards the `IsJoint` and custom decoding that adds `NonJoint`
back in for every token tree. This requires building intermediate
`Vec<TokenTree>`s.

This commit makes `TokenStream` derive `Rustc{En,De}codable`. This
simplifies the code, and avoids the creation of the intermediate
vectors, saving up to 3% on various benchmarks. It also changes the AST
JSON output in one test.

r? @petrochenkov
2019-10-23 22:19:16 +02:00