Commit graph

10975 commits

Author SHA1 Message Date
Dylan DPC
69c0bcd3d5
Rollup merge of #70266 - petrochenkov:prochead, r=varkor
proc_macro_harness: Use item header spans for errors

Addresses https://github.com/rust-lang/rust/pull/70233#discussion_r396043004.
2020-03-22 15:48:43 +01:00
Dylan DPC
3c8f8b6304
Rollup merge of #70223 - lcnr:issue70167, r=eddyb
fix type of const params in associated types.

fixes #66906
fixes #70167

r? @eddyb
2020-03-22 15:48:34 +01:00
Dylan DPC
ea44d71f9b
Rollup merge of #70209 - Centril:recover-quant-closure, r=petrochenkov
parser: recover on `for<'a> |...| body` closures

When encountering `for` and `<` is 1 token ahead, interpret this as an explicitly quantified generic closure and recover, rather than attempting to parse a `for` loop. This provides both improved diagnostics as well as an insurance policy for the ability to use this as the syntax for generic closures in the future.

As requested by r? @eddyb
2020-03-22 15:48:32 +01:00
Bastian Kauschke
853377817d rename tests 2020-03-22 11:59:01 +01:00
Bastian Kauschke
0c5c3bbdab handle unevaluated consts after monomophize 2020-03-22 11:34:42 +01:00
Vadim Petrochenkov
bdd07f932b proc_macro_harness: Use item header spans for errors 2020-03-22 12:59:32 +03:00
Wonwoo Choi
1e5d81de1d Fix invalid suggestion on &mut iterators yielding & references 2020-03-22 18:37:34 +09:00
mark
1661a0a99b convert a couple more errors 2020-03-21 19:47:23 -05:00
DeeDeeG
99ae42876b Improve E0308 error message wording 2020-03-21 18:12:29 -04:00
Dylan DPC
17e6ed1fd9
Rollup merge of #70238 - petrochenkov:procmod, r=Centril
Add a test for out-of-line module passed through a proc macro

Closes https://github.com/rust-lang/rust/issues/58818.
2020-03-21 22:56:31 +01:00
Dylan DPC
4b5ca6e4a7
Rollup merge of #70231 - aDotInTheVoid:E0224, r=Dylan-DPC
Add explanation message for E0224

Addresses some of #61137
2020-03-21 22:56:28 +01:00
Dylan DPC
ecf3ef52a6
Rollup merge of #70126 - wesleywiser:fix_miri_ice_neg_zst_enum_discr, r=RalfJung,eddyb
Fix ICE caused by truncating a negative ZST enum discriminant

Fixes #70114

r? @oli-obk or @RalfJung
2020-03-21 22:56:20 +01:00
John Kåre Alsaker
0aa15d0485 Allow hir().find to return None 2020-03-21 20:12:55 +01:00
Vadim Petrochenkov
e391d776e3 Add a test for out-of-line module passed through a proc macro 2020-03-21 21:40:58 +03:00
Vadim Petrochenkov
e543e3187c resolve: Avoid "self-confirming" import resolutions in one more case 2020-03-21 20:48:37 +03:00
Nixon Enraght-Moony
97aa2704ec Add explanation message for E0224 2020-03-21 15:43:12 +00:00
LeSeulArtichaut
cb7a2c16aa Bless tests 2020-03-21 15:03:58 +01:00
Eduard-Mihai Burtescu
10f08abd2e rustc: keep upvars tupled in {Closure,Generator}Substs. 2020-03-21 14:23:50 +02:00
Bastian Kauschke
a9c2378b7d fix type of const params in associated types. 2020-03-21 13:22:26 +01:00
Dylan DPC
266801d806
Rollup merge of #70032 - lcnr:issue69970, r=varkor
put type params in front of const params in generics_of

fixes #69970

r? @varkor
2020-03-21 13:06:40 +01:00
Dylan DPC
276b54e9c9
Rollup merge of #69955 - alexcrichton:stderr-infallible, r=sfackler
Fix abort-on-eprintln during process shutdown

This commit fixes an issue where if `eprintln!` is used in a TLS
destructor it can accidentally cause the process to abort. TLS
destructors are executed after `main` returns on the main thread, and at
this point we've also deinitialized global `Lazy` values like those
which store the `Stderr` and `Stdout` internals. This means that despite
handling TLS not being accessible in `eprintln!`, we will fail due to
not being able to call `stderr()`. This means that we'll double-panic
quickly because panicking also attempt to write to stderr.

The fix here is to reimplement the global stderr handle to avoid the
need for destruction. This avoids the need for `Lazy` as well as the
hidden panic inside of the `stderr` function.

Overall this should improve the robustness of printing errors and/or
panics in weird situations, since the `stderr` accessor should be
infallible in more situations.
2020-03-21 13:06:38 +01:00
Dylan DPC
fd3f9176c3
Rollup merge of #69901 - RalfJung:rustc_layout, r=eddyb
add #[rustc_layout(debug)]

@eddyb recently told me about the `#[rustc_layout]` attribute, and I think it would be very useful if it could be used to print all the layout information Rust has about a type. When working with layouts (e.g. in Miri), it is often not clear how certain surface language features get represented internally. I have some awful hacks locally to be able to dump this debug information; with this attribute I could get it on the playground which is so much better. :)
2020-03-21 13:06:35 +01:00
Dylan DPC
a6596f2a4d
Rollup merge of #69497 - Zoxc:ast-fragment-error, r=petrochenkov
Don't unwind when hitting the macro expansion recursion limit

This removes one use of `FatalError.raise()`.

r? @petrochenkov
2020-03-21 13:06:33 +01:00
Wesley Wiser
2fa550b85d Fix ICE caused by truncating a negative ZST enum discriminant 2020-03-21 07:02:12 -04:00
Ralf Jung
e548df7e36 normalize away preferred alignment 2020-03-21 10:07:44 +01:00
Mazdak Farrokhzad
4d30b92e3e recover on for<'a> |...| body closures. 2020-03-21 09:54:03 +01:00
Mazdak Farrokhzad
621f2b7e90
Rollup merge of #70184 - Centril:include-mod-relativism, r=petrochenkov
expand_include: set `.directory` to dir of included file.

Resolves the regression noted in https://github.com/rust-lang/rust/pull/69838/#discussion_r395217057.

r? @petrochenkov
cc @eddyb @Mark-Simulacrum
2020-03-21 05:33:30 +01:00
Mazdak Farrokhzad
855eac345a
Rollup merge of #70176 - rylev:ice-tests, r=Centril
Add tests for #58319 and #65131

Fixes #58319 and fixes #65131
2020-03-21 05:33:27 +01:00
Mazdak Farrokhzad
67e418ce75
Rollup merge of #70058 - Centril:fix-70050, r=petrochenkov
can_begin_literal_maybe_minus: `true` on `"-"? lit` NTs.

Make `can_begin_literal_or_bool` (renamed to `can_begin_literal_maybe_minus`) accept `NtLiteral(e) | NtExpr(e)` where `e` is either a literal or a negated literal.

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

r? @petrochenkov
2020-03-21 05:33:20 +01:00
Mazdak Farrokhzad
45b10f6f98
Rollup merge of #70038 - DutchGhost:const-forget-tests, r=RalfJung
Remove the call that makes miri fail

Fixes the concern raised in https://github.com/rust-lang/rust/pull/69645/files#r392884274

cc @RalfJung
2020-03-21 05:33:18 +01:00
Mazdak Farrokhzad
ef7c8a158f
Rollup merge of #69033 - jonas-schievink:resume-with-context, r=tmandry
Use generator resume arguments in the async/await lowering

This removes the TLS requirement from async/await and enables it in `#![no_std]` crates.

Closes https://github.com/rust-lang/rust/issues/56974

I'm not confident the HIR lowering is completely correct, there seem to be quite a few undocumented invariants in there. The `async-std` and tokio test suites are passing with these changes though.
2020-03-21 05:33:15 +01:00
bors
1057dc97af Auto merge of #69509 - RalfJung:debug-assert-write, r=eddyb
debug-assert ptr sanity in ptr::write

This is a re-submission of the parts that we removed from https://github.com/rust-lang/rust/pull/69208 due to ["interesting" test failures](https://github.com/rust-lang/rust/pull/69208#issuecomment-591310437).

Fixes https://github.com/rust-lang/rust/issues/53871
r? @Mark-Simulacrum @eddyb
2020-03-20 19:02:32 +00:00
Ryan Levick
f1188f7afe Add test for issue #53275 2020-03-20 18:37:57 +01:00
Ralf Jung
c62e36bf4c make rustc_layout also work for type definitions 2020-03-20 17:48:03 +01:00
Mazdak Farrokhzad
0d018a5755 expand_include: set .directory to dir of included file. 2020-03-20 17:39:29 +01:00
Ralf Jung
d9f60bcf67 add a test for rustc_layout(debug) 2020-03-20 17:25:03 +01:00
Mazdak Farrokhzad
9b9a22cd2e can_begin_literal_maybe_minus: true on "-"? lit NTs. 2020-03-20 16:42:53 +01:00
Alex Crichton
5edaa7eefd Fix abort-on-eprintln during process shutdown
This commit fixes an issue where if `eprintln!` is used in a TLS
destructor it can accidentally cause the process to abort. TLS
destructors are executed after `main` returns on the main thread, and at
this point we've also deinitialized global `Lazy` values like those
which store the `Stderr` and `Stdout` internals. This means that despite
handling TLS not being accessible in `eprintln!`, we will fail due to
not being able to call `stderr()`. This means that we'll double-panic
quickly because panicking also attempt to write to stderr.

The fix here is to reimplement the global stderr handle to avoid the
need for destruction. This avoids the need for `Lazy` as well as the
hidden panic inside of the `stderr` function.

Overall this should improve the robustness of printing errors and/or
panics in weird situations, since the `stderr` accessor should be
infallible in more situations.
2020-03-20 07:34:56 -07:00
Ryan Levick
5444aded02 Add tests for #58319 and #65131 2020-03-20 13:24:35 +01:00
DutchGhost
d6f3a433d9
Update const_forget.rs 2020-03-20 10:36:40 +01:00
Yuki Okushi
2f77d5fe39
Rollup merge of #70131 - Aaron1011:fix/issue-55099-test, r=nikomatsakis
Add regression test for TAIT lifetime inference (issue #55099)

Fixes #55099

The minimized reproducer in issue #55099 now compiles successfully.
This commit adds a regression test for it.
2020-03-20 17:02:08 +09:00
Daniel Frampton
d19562062c Ensure there are versions of test code for aarch64 windows 2020-03-19 16:00:45 -07:00
Bastian Kauschke
6cb584608c sort generic param order in generics_of 2020-03-19 20:20:09 +01:00
John Kåre Alsaker
d641ad044e Update test 2020-03-19 14:59:14 +01:00
Mazdak Farrokhzad
73c3a496cc
Rollup merge of #69959 - alexcrichton:fix-panic-in-print, r=Mark-Simulacrum
std: Don't abort process when printing panics in tests

This commit fixes an issue when using `set_print` and friends, notably
used by libtest, to avoid aborting the process if printing panics. This
previously panicked due to borrowing a mutable `RefCell` twice, and this
is worked around by borrowing these cells for less time, instead
taking out and removing contents temporarily.

Closes #69558
2020-03-19 06:57:36 +01:00
Aaron Hill
fda913baae
Add regression test for TAIT lifetime inference (issue #55099)
Fixes #55099

The minimized reproducer in issue #55099 now compiles successfully.
This commit adds a regression test for it.
2020-03-19 00:15:24 -04:00
Aaron Hill
5e2856122a
Properly handle Spans that reference imported SourceFiles
Previously, metadata encoding used DUMMY_SP to represent any spans that
referenced an 'imported' SourceFile - e.g. a SourceFile from an upstream
dependency. These leads to sub-optimal error messages in certain cases
(see the included test).

This PR changes how we encode and decode spans in crate metadata. We
encode spans in one of two ways:

* 'Local' spans, which reference non-imported SourceFiles, are encoded
  exactly as before.
* 'Foreign' spans, which reference imported SourceFiles, are encoded
  with the CrateNum of their 'originating' crate. Additionally, their
'lo' and 'high' values are rebased on top of the 'originating' crate,
which allows them to be used with the SourceMap data encoded for that
crate.

The `ExternalSource` enum is renamed to `ExternalSourceKind`. There is
now a struct called `ExternalSource`, which holds an
`ExternalSourceKind` along with the original line number information for
the file. This is used during `Span` serialization to rebase spans onto
their 'owning' crate.
2020-03-18 23:56:42 -04:00
DutchGhost
4c363e3e8a Move the const-forget test into ui tests 2020-03-18 21:08:52 +01:00
Mazdak Farrokhzad
60a2d063a9
Rollup merge of #70075 - GuillaumeGomez:fix-repr-display, r=petrochenkov
Fix repr pretty display

Fixes #70027.

r? @varkor
2020-03-18 18:03:47 +01:00
Mazdak Farrokhzad
a958314472
Rollup merge of #69839 - RalfJung:miri-error-cleanup, r=oli-obk
Miri error reform

Some time ago we started moving Miri errors into a few distinct categories, but we never classified all the old errors. That's what this PR does.

~~This is on top of https://github.com/rust-lang/rust/pull/69762; [relative diff](https://github.com/RalfJung/rust/compare/validity-errors...RalfJung:miri-error-cleanup).~~

r? @oli-obk

Fixes https://github.com/rust-lang/const-eval/issues/4
2020-03-18 18:03:40 +01:00