Commit Graph

8372 Commits

Author SHA1 Message Date
kennytm 8601c79aff Rollup merge of #59169 - tmandry:allow-features-flag, r=cramertj
Add `-Z allow_features=...` flag

Adds a compiler option to allow only whitelisted features.

For projects on nightly that want to prevent feature-creep (and maybe, someday, move off of nightly). Not being able to enforce this has been a problem on Fuchsia and at other big companies.

This doesn't support filtering edition feature flags, but someone is welcome to add that if they need it.
2019-03-16 22:40:33 +08:00
kennytm 6fbd55385d Rollup merge of #59079 - euclio:macro-semi, r=estebank
add suggestions to invalid macro item error

r? @estebank
2019-03-16 22:39:49 +08:00
Eduard-Mihai Burtescu e0c75ff40d rustc: rename item_path to def_path (except the module in ty). 2019-03-15 13:25:10 +02:00
Tyler Mandry 7c59ce9f5d Add -Z allow_features=... flag 2019-03-14 15:42:20 -07:00
Andy Russell 5abd6d9492 add suggestions to invalid macro item error 2019-03-13 15:24:36 -04:00
Mazdak Farrokhzad ad7b650815 Rollup merge of #58876 - estebank:numeric-lifetime, r=petrochenkov
Parse lifetimes that start with a number and give specific error

Fix #58786.
2019-03-13 03:33:36 +01:00
bors e68bf8ae15 Auto merge of #58021 - ishitatsuyuki:57667-fix, r=RalfJung
Fix fallout from #57667
2019-03-11 17:20:20 +00:00
Esteban Küber f690821d58 review comments 2019-03-09 11:08:51 -08:00
Mazdak Farrokhzad 4eb762a0ea Rollup merge of #59045 - topecongiro:expose-new_sub_parser_from_file, r=Centril
Expose new_sub_parser_from_file

This function is useful when external tools like rustfmt want to parse
internal files without parsing a whole crate.

cc https://github.com/rust-lang/rustfmt/issues/3427.
2019-03-09 17:18:28 +01:00
Mazdak Farrokhzad 79873f79b1 Rollup merge of #58762 - petrochenkov:unwind, r=Mark-Simulacrum
Mention `unwind(aborts)` in diagnostics for `#[unwind]`

Simplify input validation for `#[unwind]`, add tests

cc https://github.com/rust-lang/rust/issues/58760
r? @Mark-Simulacrum
2019-03-09 17:18:23 +01:00
topecongiro 2309625941 Expose new_sub_parser_from_file
This function is useful when external tools like rustfmt want to parse
internal files without parsing a whole crate.
2019-03-09 21:59:54 +09:00
ishitatsuyuki a03e20db6d Fix fallout from #57667 2019-03-09 18:23:17 +09:00
bors c9f8304351 Auto merge of #59012 - pietroalbini:rollup, r=pietroalbini
Rollup of 24 pull requests

Successful merges:

 - #58080 (Add FreeBSD armv6 and armv7 targets)
 - #58204 (On return type `impl Trait` for block with no expr point at last semi)
 - #58269 (Add librustc and libsyntax to rust-src distribution.)
 - #58369 (Make the Entry API of HashMap<K, V> Sync and Send)
 - #58861 (Expand where negative supertrait specific error is shown)
 - #58877 (Suggest removal of `&` when borrowing macro and appropriate)
 - #58883 (Suggest appropriate code for unused field when destructuring pattern)
 - #58891 (Remove stray ` in the docs for the FromIterator implementation for Option)
 - #58893 (race condition in thread local storage example)
 - #58906 (Monomorphize generator field types for debuginfo)
 - #58911 (Regression test for #58435.)
 - #58912 (Regression test for #58813)
 - #58916 (Fix release note problems noticed after merging.)
 - #58918 (Regression test added for an async ICE.)
 - #58921 (Add an explicit test for issue #50582)
 - #58926 (Make the lifetime parameters of tcx consistent.)
 - #58931 (Elide invalid method receiver error when it contains TyErr)
 - #58940 (Remove JSBackend from config.toml)
 - #58950 (Add self to mailmap)
 - #58961 (On incorrect cfg literal/identifier, point at the right span)
 - #58963 (libstd: implement Error::source for io::Error)
 - #58970 (delay_span_bug in wfcheck's ty.lift_to_tcx unwrap)
 - #58984 (Teach `-Z treat-err-as-bug` to take a number of errors to emit)
 - #59007 (Add a test for invalid const arguments)

Failed merges:

 - #58959 (Add release notes for PR #56243)

r? @ghost
2019-03-09 05:19:48 +00:00
Esteban Küber 0a505a71d3 Parse lifetimes that start with a number and give specific error 2019-03-08 16:56:31 -08:00
Pietro Albini 72d4c1ed67 Rollup merge of #58984 - estebank:multi-treat-err-as-bug, r=oli-obk
Teach `-Z treat-err-as-bug` to take a number of errors to emit

`-Z treat-err-as-bug` will cause `rustc` to panic after the first error is reported, like previously. `-Z treat-err-as-bug=2` will cause `rustc` to panic after 2 errors have been reported.

Fix #58983.
2019-03-08 09:42:13 +01:00
Pietro Albini 54a5073af9 Rollup merge of #58961 - estebank:issue-58462, r=varkor
On incorrect cfg literal/identifier, point at the right span

CC #58462
2019-03-08 09:42:09 +01:00
Pietro Albini a68f7600f4 Rollup merge of #58861 - estebank:fix-negative-traits, r=petrochenkov
Expand where negative supertrait specific error is shown

Fix #58857.

r? @petrochenkov
2019-03-08 09:41:43 +01:00
Esteban Küber bc9b936290 Fix with_emitter callers 2019-03-07 11:15:47 -08:00
Esteban Küber 7a55a004fa Make -Z treat-err-as-bug take a number of errors to be emitted
`-Z treat-err-as-bug=0` will cause `rustc` to panic after the first
error is reported. `-Z treat-err-as-bug=2` will cause `rustc` to
panic after 3 errors have been reported.
2019-03-06 19:51:32 -08:00
Esteban Küber 551ea65c87 Rely on drop to emit unclosed delims 2019-03-06 19:09:24 -08:00
Esteban Küber 6f0f2fc6d6 Simplify code 2019-03-06 18:46:11 -08:00
Esteban Küber f156d92207 Always emit mismatched delim errors, never panic 2019-03-06 18:46:11 -08:00
Esteban Küber ac6cc2d6b0 Collect unclosed delimiters in parent parser 2019-03-06 18:46:11 -08:00
Esteban Küber 51d0e86c22 Emit missing unclosed delimiter errors 2019-03-06 18:46:11 -08:00
Esteban Küber c70a516c23 Panic when unmatched delimiters aren't emitted 2019-03-06 18:46:11 -08:00
Esteban Küber ed2de5a842 Emit unclosed delimiters during recovery 2019-03-06 18:45:59 -08:00
Esteban Küber cc535a2a19 Bail when encountering a second unexpected token in the same span 2019-03-06 18:45:59 -08:00
Esteban Küber 2ec7d0b228 Do not panic on missing close paren
Fix #58856.
2019-03-06 18:45:59 -08:00
Esteban Küber 02eb523d91 Surround found token with ` 2019-03-06 14:45:23 -08:00
Esteban Küber 669be1a0a6 On incorrect cfg literal/identifier, point at the right span 2019-03-05 19:05:03 -08:00
Dan Robertson 04d0a8cb83 Fix C-variadic function printing
There is no longer a need to append the string `", ..."` to a functions
args as `...` is parsed as an argument and will appear in the functions
arguments.
2019-03-02 15:03:09 +00:00
Esteban Küber dc4973dfd9 Expand where negative supertrait specific error is shown
Fix #58857.
2019-03-01 14:42:39 -08:00
bors 1999a22881 Auto merge of #57760 - dlrobertson:varargs1, r=alexreg
Support defining C compatible variadic functions

## Summary

Add support for defining C compatible variadic functions in unsafe rust with
`extern "C"` according to [RFC 2137].

## Details

### Parsing
When parsing a user defined function that is `unsafe` and `extern "C"` allow
variadic signatures and inject a "spoofed" `VaList` in the new functions
signature. This allows the user to interact with the variadic arguments via a
`VaList` instead of manually using `va_start` and `va_end` (See [RFC 2137] for
details).

### Codegen

When running codegen for a variadic function, remove the "spoofed" `VaList`
from the function signature and inject `va_start` when the arg local
references are created for the function and `va_end` on return.

## TODO

 - [x] Get feedback on injecting `va_start/va_end` in MIR vs codegen
 - [x] Properly inject `va_end` - It seems like it should be possible to inject
       `va_end` on the `TerminatorKind::Return`. I just need to figure out how
       to get the `LocalRef` here.
 - [x] Properly call Rust defined C variadic functions in Rust - The spoofed
       `VaList` causes problems here.

Related to: #44930

r? @ghost

[RFC 2137]: https://github.com/rust-lang/rfcs/blob/master/text/2137-variadic.md
2019-02-28 15:00:25 +00:00
Dan Robertson 08bd4ff998 Rename variadic to c_variadic
Function signatures with the `variadic` member set are actually
C-variadic functions. Make this a little more explicit by renaming the
`variadic` boolean value, `c_variadic`.
2019-02-27 10:21:54 -05:00
Dan Robertson 210c6071b0 Add c_variadic language feature item 2019-02-27 10:21:40 -05:00
Dan Robertson 58147d486b Support defining C compatible variadic functions
Add support for defining C compatible variadic functions in unsafe rust
with extern "C".
2019-02-27 10:21:35 -05:00
Mazdak Farrokhzad 1394b6f3a1 Rollup merge of #58761 - Mark-Simulacrum:add-feature-gate-unwind, r=Centril
Add tracking issue for the unwind attribute

cc https://github.com/rust-lang/rust/issues/58760
2019-02-27 13:32:37 +01:00
Mazdak Farrokhzad a20c2fdd47 Rollup merge of #58748 - hellow554:scoped_tls, r=estebank
update scoped_tls to 1.0

scoped_tls has been updated to version 1.0
This PR will hopefully merge flawlessly :)

This fixes, among others, https://github.com/alexcrichton/scoped-tls/issues/9

Note, that the nightly feature has been removed in https://github.com/alexcrichton/scoped-tls/commit/64bd7b84a1765fb72a32caed3c17c970bdc6ad57
2019-02-27 13:32:29 +01:00
Mazdak Farrokhzad f84a8cf28a Rollup merge of #58678 - doctorn:refuse-async-fn-2015-edition, r=varkor
Deny `async fn` in 2015 edition

This commit prevents code using `async fn` from being compiled in Rust 2015 edition.

Compiling code of the form:

```rust
async fn foo() {}
```

Will now result in the error:

```
error[E0670]: `async fn` is not permitted in the 2015 edition
 --> async.rs:1:1
  |
1 | async fn foo() {}
  | ^^^^^

error: aborting due to error

For more information about an error, try `rustc --explain E0670`.
```

This resolves #58652 and also resolves #53714.

r? @varkor
2019-02-27 13:32:21 +01:00
Mazdak Farrokhzad a46b00eeb5 Rollup merge of #58630 - nnethercote:fix-fold_clobber, r=petrochenkov
Make `visit_clobber` panic-safe.

Local measurements indicate the performance effect is negligible.

r? @petrochenkov
2019-02-27 13:32:19 +01:00
Mazdak Farrokhzad 2f58c2cfc0 Rollup merge of #58075 - asettouf:master, r=varkor
Fix for issue  #58050

Hi,

a quick PR to mention in the compiler error message that `?` is a macro operator, as according to issue #58050

It passed `python x.py test src/tools/tidy`  locally, as well as the recommendation to run `/x.py test src/test/ui --stage 1 --bless`.

Let me know if anything else is needed.
2019-02-27 13:32:16 +01:00
Vadim Petrochenkov b11502fbc0 Mention unwind(aborts) in diagnostics for #[unwind]
Simplify input validation for `#[unwind]`, add tests
2019-02-27 09:37:05 +03:00
Mark Rousskov f313baedba Add tracking issue for the unwind attribute. 2019-02-26 13:59:05 -07:00
Adonis c1f3d1520e Changing error message to reflect changes with the 2018 edition
Signed-off-by: Adonis <adonis.settouf@gmail.com>

Update src/libsyntax/ext/tt/quoted.rs

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Update src/libsyntax/ext/tt/quoted.rs

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Update src/libsyntax/ext/tt/quoted.rs

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Update src/libsyntax/ext/tt/quoted.rs

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Update src/libsyntax/ext/tt/quoted.rs

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Update src/libsyntax/ext/tt/quoted.rs

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Update src/test/ui/macros/macro-at-most-once-rep-2015-ques-rep.stderr

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Update src/test/ui/macros/macro-at-most-once-rep-2015-ques-rep.stderr

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Stabilize split_ascii_whitespace

Tracking issue FCP to merge: https://github.com/rust-lang/rust/issues/48656#issuecomment-442372750

fix stabilization order of uniform_paths.

hir: add HirId to main Hir nodes

Fix `std::os::fortanix_sgx::usercalls::raw::UsercallNrs`

Fixes https://github.com/fortanix/rust-sgx/issues/88

Update src/libsyntax/ext/tt/quoted.rs

Co-Authored-By: asettouf <adonis.settouf@gmail.com>

Revert "Merge remote-tracking branch 'upstream/master'"

This reverts commit 751f05bd155e2c55d4177fe8211df634faf3a644, reversing
changes made to 545a3e62b0cb473108869a61b271bc589afb49da.
2019-02-26 19:22:29 +01:00
Marcel Hellwig 5b975162e2 update scoped_tls to 1.0 2019-02-26 09:54:45 +01:00
Nicholas Nethercote eddd07cc8a Make visit_clobber panic-safe. 2019-02-26 11:20:53 +11:00
Vadim Petrochenkov eccc19996b Stabilize unrestricted_attribute_tokens 2019-02-25 23:21:54 +03:00
Vadim Petrochenkov 8e1b5d897a Restrict value in key-value attributes to literals 2019-02-25 22:40:38 +03:00
Nathan Corbyn 8300f51936 Deny async fn in 2015 edition
Fix style issues and update diagnostic messages

Update src/librustc_passes/diagnostics.rs

Co-Authored-By: doctorn <me@nathancorbyn.com>

Deny nested `async fn` in Rust 2015 edition

Deny nested `async fn` in Rust 2015 edition

Deny nested `async fn` in Rust 2015 edition
2019-02-24 16:33:12 +00:00
bors 097c04cf43 Auto merge of #58315 - gnzlbg:returns_twice, r=alexcrichton
Implement unstable ffi_return_twice attribute

This PR implements [RFC2633](https://github.com/rust-lang/rfcs/pull/2633)

r? @eddyb
2019-02-24 14:15:55 +00:00