Commit Graph

9421 Commits

Author SHA1 Message Date
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
Mazdak Farrokhzad
23b79d83f2 Rollup merge of #69838 - Centril:expand-module, r=petrochenkov
Expansion-driven outline module parsing

After this PR, the parser will not do any conditional compilation or loading of external module files when `mod foo;` is encountered. Instead, the parser only leaves `mod foo;` in place in the AST, with no items filled in. Expansion later kicks in and will load the actual files and do the parsing. This entails that the following is now valid:

```rust
#[cfg(FALSE)]
mod foo {
    mod bar {
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error!
    }
}
```

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

r? @petrochenkov
2020-03-18 18:03:38 +01:00
Mazdak Farrokhzad
4118ff61ec Rollup merge of #69837 - jonas-schievink:gen-discr-opt, r=tmandry
Use smaller discriminants for generators

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

I'm not yet sure about the runtime performance impact of this, so I'll try running this on some benchmarks (if I can find any). (Update: No impact on the benchmarks I've measured on)

* [x] Add test with a generator that has exactly 256 total states
* [x] Add test with a generator that has more than 256 states so that it needs to use a u16 discriminant
* [x] Add tests for the size of `Option<[generator]>`
* [x] Add tests for the `discriminant_value` intrinsic in all cases
2020-03-18 18:03:37 +01:00
Mazdak Farrokhzad
3f583fc270 Rollup merge of #69189 - matthewjasper:erase-the-world, r=nikomatsakis
Erase regions in writeback

Regions in `TypeckTables` (except canonicalized user annotations) are now erased. Further, we no longer do lexical region solving on item bodies with `-Zborrowck=mir`.

cc #68261
r? @nikomatsakis
2020-03-18 18:03:35 +01:00
Mazdak Farrokhzad
8188b2163d Rollup merge of #69139 - GuillaumeGomez:cleanup-e0308, r=Dylan-DPC
clean up E0308 explanation

r? @Dylan-DPC
2020-03-18 18:03:33 +01:00