Commit graph

18735 commits

Author SHA1 Message Date
bors
5c5c8eb864 Auto merge of #66927 - RalfJung:engines-dont-panic, r=oli-obk
Miri core engine: use throw_ub instead of throw_panic

See https://github.com/rust-lang/rust/issues/66902 for context: panicking is not really an "interpreter error", but just part of a normal Rust execution. This is a first step towards removing the `InterpError::Panic` variant: the core Miri engine does not use it any more.

ConstProp and ConstEval still use it, though. This will be addressed in future PRs.

From what I can tell, all the error messages this removes are actually duplicates.

r? @oli-obk @wesleywiser
2019-12-07 14:46:30 +00:00
Mazdak Farrokhzad
459398dc40
Rollup merge of #67071 - estebank:issue-66868, r=davidtwco
Do not ICE on closure typeck

Tackle #66868.

r? @davidtwco
2019-12-06 23:27:00 +01:00
bors
ae1b871cca Auto merge of #65195 - varkor:to_option, r=Centril
Rename `bool::then_*` to `bool::to_option_*` and use where appropriate

Name change following https://github.com/rust-lang/rfcs/pull/2757. Also try it out throughout the compiler in places I think makes the code more readable.
2019-12-06 19:14:51 +00:00
Yuki Okushi
2a4f638d24
Rollup merge of #66846 - gizmondo:master, r=michaelwoerister
Make try_mark_previous_green aware of cycles.

Fixes #61323

r? @michaelwoerister
2019-12-07 00:09:52 +09:00
varkor
f1db60ca95 Fix rebase issues 2019-12-06 13:09:03 +00:00
varkor
9f1269f23c Rename to then_some and then 2019-12-06 12:24:54 +00:00
varkor
e3a8ea4e18 Use to_option in various places 2019-12-06 12:23:23 +00:00
Alex Aktsipetrov
de255a9163 Make try_mark_previous_green aware of cycles. 2019-12-06 12:48:53 +03:00
Esteban Küber
22c65f9242 Do not ICE on closure typeck
Tackle #66868.
2019-12-05 14:53:16 -08:00
Mazdak Farrokhzad
7945dcdfdc
Rollup merge of #67011 - Aaron1011:fix/expected-found-span, r=Dylan-DPC
Include a span in more `expected...found` notes

In most places, we use a span when emitting `expected...found` errors.
However, there were a couple of places where we didn't use any span,
resulting in hard-to-interpret error messages.

This commit attaches the relevant span to these notes, and additionally
switches over to using `note_expected_found` instead of manually
formatting the message
2019-12-05 19:03:17 +01:00
Mazdak Farrokhzad
8e6cf861e5
Rollup merge of #67010 - estebank:raw-idents, r=Centril
Accurately portray raw identifiers in error messages

When refering to or suggesting raw identifiers, refer to them with `r#`.

Fix #65634.
2019-12-05 19:03:15 +01:00
bors
7fa046534e Auto merge of #66275 - oli-obk:organize-intrinsics-promotion-checks, r=RalfJung
Organize intrinsics promotion checks

cc @vertexclique

supersedes #61835

r? @RalfJung
2019-12-04 11:22:26 +00:00
bors
5f1d6c4403 Auto merge of #65947 - eddyb:fn-abi, r=oli-obk,nagisa
rustc: split FnAbi's into definitions/direct calls ("of_instance") and indirect calls ("of_fn_ptr").

After this PR:
* `InstanceDef::Virtual` is only used for "direct" virtual calls, and shims around those calls use `InstanceDef::ReifyShim` (i.e. for `<dyn Trait as Trait>::f as fn(_)`)
  * this could easily be done for intrinsics as well, to allow their reification, but I didn't do it
* `FnAbi::of_instance` is **always** used for declaring/defining an `fn`, and for direct calls to an `fn`
  * this is great for e.g. https://github.com/rust-lang/rust/pull/65881 (`#[track_caller]`), which can introduce the "caller location" argument into "codegen signatures" by only changing `FnAbi::of_instance`, after this PR
* `FnAbi::of_fn_ptr` is used primarily for indirect calls, i.e. to `fn` pointers
  * *not* virtual calls (which use `FnAbi::of_instance` with `InstanceDef::Virtual`)
  * there's also a couple uses where the `rustc_codegen_llvm` needs to declare (i.e. FFI-import) an LLVM function that has no Rust declaration available at all
    * at least one of them could probably be a "weak lang item" instead

As there are many steps, this PR is best reviewed commit by commit - some of which arguably should be in their own PRs, I may have gotten carried away a bit.

cc @nagisa @rkruppe @oli-obk @anp
2019-12-04 08:22:05 +00:00
Aaron Hill
168e35d569
Include a span in more expected...found notes
In most places, we use a span when emitting `expected...found` errors.
However, there were a couple of places where we didn't use any span,
resulting in hard-to-interpret error messages.

This commit attaches the relevant span to these notes, and additionally
switches over to using `note_expected_found` instead of manually
formatting the message
2019-12-03 23:13:10 -05:00
Esteban Küber
f6b435d923 Accurately portray raw identifiers in error messages
When refering to or suggesting raw identifiers, refer to them with `r#`.

Fix #65634.
2019-12-03 19:01:42 -08:00
Oliver Scherer
5cef094a72 Leave fixme 2019-12-04 01:51:26 +01:00
Mazdak Farrokhzad
71d1286bdf
Rollup merge of #66951 - RalfJung:miri-machine-stop, r=oli-obk
miri: add throw_machine_stop macro

r? @oli-obk
This helps Miri: https://github.com/rust-lang/miri/pull/1093
2019-12-03 19:41:52 +01:00
Mark Rousskov
cc2c33a156 Move Session to librustc_session 2019-12-03 12:19:16 -05:00
Mark Rousskov
2731075a6b Duplicate CrateConfig into Session
Since it's just a type alias this isn't too difficult and once Session
is moved back we can make this be the canonical location.
2019-12-03 12:19:16 -05:00
Mark Rousskov
f2a8aed380 Directly use types from libsyntax::ast 2019-12-03 12:19:16 -05:00
Mark Rousskov
72c67bec09 Re-export Client from rustc_data_structures::jobserver 2019-12-03 12:19:16 -05:00
Mark Rousskov
285144a8de Move NativeLibraryKind to rustc_session 2019-12-03 12:19:16 -05:00
Mark Rousskov
f03d8f305a Move early lint declarations to librustc_session 2019-12-03 12:19:14 -05:00
Mark Rousskov
526ee51ccc Move Lint to rustc_session
This commit breaks early-lint registration, which will be fixed in the
next commit. This movement will allow essentially all crates in the compiler
tree to declare lints (though not lint passes).
2019-12-03 12:18:32 -05:00
Mark Rousskov
433e546af9 Move Level to rustc_session 2019-12-03 12:18:32 -05:00
Mark Rousskov
43516981cb Move duration_to_secs_str to rustc_session 2019-12-03 12:18:32 -05:00
Mark Rousskov
984c74a40a Move cgu_reuse_tracker to librustc_session 2019-12-03 12:18:32 -05:00
Mark Rousskov
c761ec1ac9 Introduce rustc_session crate 2019-12-03 12:18:32 -05:00
Mark Rousskov
b7cd58c00e Decouple CguReuseTracker from Session 2019-12-03 12:18:32 -05:00
Mark Rousskov
2ea18337f7 Use FxHash* from data structures not nodemap 2019-12-03 12:18:32 -05:00
Eduard-Mihai Burtescu
c2f4c57296 rustc: add docs to FnAbi::{of_fn_ptr,of_instance} and InstanceDef::Virtual. 2019-12-03 15:55:21 +02:00
Eduard-Mihai Burtescu
9da14a82c6 rustc: move Instance::fn_sig to ty::layout and privatize it. 2019-12-03 15:55:21 +02:00
Eduard-Mihai Burtescu
79d908b301 rustc_target: add abi::call::Conv::Rust distinct from Conv::C. 2019-12-03 15:55:21 +02:00
Eduard-Mihai Burtescu
902433b5bf rustc: take a PolyFnSig instead of an FnSig in FnAbi::of_fn_ptr. 2019-12-03 15:55:14 +02:00
Eduard-Mihai Burtescu
2b921d51d7 rustc: rename FnAbi::new to FnAbi::of_fn_ptr. 2019-12-03 15:41:56 +02:00
Eduard-Mihai Burtescu
052d0edbc1 rustc: compute FnAbi's for virtual calls through FnAbi::of_instance. 2019-12-03 15:41:56 +02:00
Eduard-Mihai Burtescu
39e50e2f28 rustc: use ReifyShim for reifying Virtual call instances. 2019-12-03 15:41:56 +02:00
Eduard-Mihai Burtescu
a57aea88d4 rustc: expose the mir::Body reference lifetime from mir::ReadOnlyBodyCache (#64736 fallout). 2019-12-03 13:04:28 +02:00
Eduard-Mihai Burtescu
552ea447e4 rustc: combine Instance::fn_sig_noadjust and Instance::fn_sig. 2019-12-03 12:54:36 +02:00
Mazdak Farrokhzad
1303bf2f3c
Rollup merge of #66941 - CAD97:nord, r=Dylan-DPC
Remove `ord` lang item

At this point it seems to be unused, and just `partial_ord` is used instead. This removes the unused lang item.
2019-12-03 11:07:07 +01:00
Mazdak Farrokhzad
cf937fa84d
Rollup merge of #66935 - petrochenkov:attrtok2, r=Centril
syntax: Unify macro and attribute arguments in AST

The unified form (`ast::MacArgs`) represents parsed arguments instead of an unstructured token stream that was previously used for attributes.
It also tracks some spans and delimiter kinds better for fn-like macros and macro definitions.

I've been talking about implementing this with @nnethercote in https://github.com/rust-lang/rust/pull/65750#issuecomment-546517322.
The parsed representation is closer to `MetaItem` and requires less token juggling during conversions, so it potentially may be faster.

r? @Centril
2019-12-03 11:07:05 +01:00
Mazdak Farrokhzad
8dacfc2ada
Rollup merge of #66651 - Areredify:on-unimplemented-scope, r=davidtwco
Add `enclosing scope` parameter to `rustc_on_unimplemented`

Adds a new parameter to `#[rustc_on_unimplemented]`, `enclosing scope`, which highlights the function or closure scope with a message.

The wip part refers to adding this annotation to `Try` trait to improve ergonomics (which I don't know how to do since I change both std and librustc)

Closes #61709.
2019-12-03 11:07:01 +01:00
Oliver Scherer
d9cca74ffc const fns can read constants that invoke unstable const fns 2019-12-03 10:20:15 +01:00
Oliver Scherer
1f20b4dc19 Explain the difference between the two whitelists 2019-12-03 10:20:15 +01:00
Oliver Scherer
46c00a21e1 Move all intrinsic whitelists into the constness check file 2019-12-03 10:20:15 +01:00
Mahmut Bulut
f1bacb2dca Check intrinsics for callability in const fns 2019-12-03 10:20:15 +01:00
Vadim Petrochenkov
537895535d syntax: Use ast::MacArgs for macro definitions 2019-12-02 21:56:34 +03:00
Vadim Petrochenkov
1a496f3379 syntax: Use ast::MacArgs for attributes 2019-12-02 21:56:34 +03:00
bors
fdc0011561 Auto merge of #64736 - Nashenas88:mir_predecessors_cache_cleanup, r=oli-obk
Remove interior mutability in mir predecessors cache
2019-12-02 14:51:02 +00:00
Paul Daniel Faria
38bd3a2342 Use new HashStable proc macro 2019-12-02 08:43:01 -05:00