Commit graph

19005 commits

Author SHA1 Message Date
Markus Westerlind
a5657dbc43 perf: Avoid creating a SmallVec if nothing changes during a fold
Not sure if this helps but in theory it should be less work than what
the current micro optimization does for `ty::Predicate` lists.

(It would explain the overhead I am seeing from `perf`.)
2020-01-08 23:20:19 +01:00
Camille GILLOT
700ac84eae Rename traits::drop -> traits::misc. 2020-01-07 19:36:50 +01:00
Camille GILLOT
f629baf96c Move magic traits queries to rustc::traits::drop. 2020-01-07 18:14:32 +01:00
Camille GILLOT
86ec4b5f85 Move required_region_bounds to rustc::infer::opaque_types. 2020-01-07 18:08:47 +01:00
Camille GILLOT
24d09c7c1b Move free_region_map to rustc::ty. 2020-01-07 18:07:36 +01:00
Camille GILLOT
e905d5da93 Move structural_match to rustc::traits. 2020-01-07 18:07:08 +01:00
Camille GILLOT
73667af444 Move ty::wf to traits. 2020-01-07 18:03:53 +01:00
Camille GILLOT
787cd5493a Make traits::util::* free functions. 2020-01-07 17:48:41 +01:00
Camille GILLOT
56a0aec07f Move subst_and_normalize_erasing_regionsto rustc::ty. 2020-01-07 17:47:49 +01:00
Camille GILLOT
a80bff87c1 Move normalize_erasing_regions to rustc::ty. 2020-01-07 17:46:23 +01:00
Camille GILLOT
7770bce178 Make rustc::traits::object_safety::{astconv_object_safety_violations,is_vtable_safe_method,object_safety_violations} free functions. 2020-01-07 17:44:53 +01:00
Camille GILLOT
0b1521e6d3 Make rustc::traits::error_reporting::{recursive_type_with_infinite_size_error, report_object_safety_error} free functions. 2020-01-07 17:43:55 +01:00
Camille GILLOT
d53bf7a676 Make rustc::infer::error_reporting::{note_and_explain_free_region, note_and_explain_region} free functions. 2020-01-07 17:43:03 +01:00
Camille GILLOT
7118e33bfd Remove private methods from TyCtxt impl block: rustc::ty::print::pretty. 2020-01-07 17:42:13 +01:00
Camille GILLOT
640cae257b Remove private methods from TyCtxt impl block: rustc::ty::outlives. 2020-01-07 17:41:23 +01:00
Camille GILLOT
0d9f4fb270 Remove trivial function. 2020-01-07 17:40:31 +01:00
Camille GILLOT
c1afe6a9c9 Remove private methods from TyCtxt impl block: rustc::trait::object_safety. 2020-01-07 17:39:41 +01:00
Camille GILLOT
811adb5ddc Remove private methods from TyCtxt impl block: rustc::middle::stability. 2020-01-07 17:38:24 +01:00
Camille GILLOT
47256b8b7c Remove private methods from TyCtxt impl block: rustc::infer::error_reporting. 2020-01-07 17:37:01 +01:00
Yuki Okushi
318d6c259d
Rollup merge of #67909 - varkor:obsolete-const-print, r=davidtwco
Fix ICE in const pretty printing and resolve FIXME

Consts now have a `fmt::Display` impl, so we can just use that to pretty-print.

This resolves an ICE in https://github.com/rust-lang/rust/issues/61936, though it hits more ICEs afterwards. I couldn't find a test case that was resolved by this that didn't hit errors later on.
2020-01-07 13:46:08 +09:00
Yuki Okushi
9ef3b2ca2a
Rollup merge of #67898 - matthewjasper:newtype-index-hygiene, r=Centril
Improve hygiene of `newtype_index`

`newtype_index` no longer needs `rustc_index::vec::Idx` to be in scope.

r? @Centril
2020-01-07 13:46:05 +09:00
Yuki Okushi
4ed415b547
Rollup merge of #67727 - Dylan-DPC:stabilise/remove_item, r=alexcrichton
Stabilise vec::remove_item

Closes #40062

r? @alexcrichton
2020-01-07 13:46:01 +09:00
Matthew Jasper
9462c8babb Improve hygiene of newtype_index
Also add unit tests
2020-01-06 20:43:10 +00:00
dylan_DPC
0a739ce0a5 remove usage of feature gate 2020-01-06 19:36:46 +05:30
bors
ebbb2bf37a Auto merge of #67886 - Centril:rustc_hir_canon_imports, r=nagisa
Nix `rustc_hir` reexports in rustc::hir

r? @Zoxc cc @Mark-Simulacrum
2020-01-06 12:55:40 +00:00
Dylan DPC
c79034ed47
Rollup merge of #67906 - varkor:silence-toogeneric, r=nagisa
Silence `TooGeneric` error

This error may be produced during intermediate failed attempts at evaluation of a generic const, which may nevertheless succeed later.

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

r? @eddyb
2020-01-06 12:00:20 +05:30
Dylan DPC
3692075049
Rollup merge of #67800 - Aaron1011:fix/mir-generic-instance, r=oli-obk
Fix ICE involving calling `Instance.ty` during const evaluation

Fixes #67639

`Instance.ty` assumes that we are in a fully monomorphic context (e.g.
codegen), and can therefore use an empty `ParamEnv` when performing
normalization. Howver, the MIR constant evaluator code ends up calling
`Instance.ty` as a result of us attemptign to 'speculatively'
const-evaluate generic functions during const propagation.

As a result,
we may end up with projections involving type parameters
(e.g. <T as MyTrait>::Bar>) in the type we are trying to normalize.
Normalization expects us to have proper predicates in the `ParamEnv` for
such projections, and will ICE if we don't.

This commit adds a new method `Instance.ty_env`, which takes a
`ParamEnv` for use during normalization. The MIR const-evaluator code is
changed to use this method, passing in the proper `ParamEnv` for the
context at hand.
2020-01-06 12:00:16 +05:30
varkor
8f94d9bb08 Fix ICE in const pretty printing and resolve FIXME
Consts now have a `fmt::Display` impl, so we can just use that to pretty-print.
2020-01-06 00:11:27 +00:00
varkor
adb46fd0a4 Silence TooGeneric error
This error may be produced during intermediate failed attempts at evaluation of a generic const, which may nevertheless succeed later.
2020-01-05 23:00:47 +00:00
Aaron Hill
db2c4f214f
Fix typo 2020-01-05 15:00:55 -05:00
Aaron Hill
33caf0b61f
Rename Instance.ty to Instance.monomorphic_ty 2020-01-05 14:59:40 -05:00
Aaron Hill
464b58ca11
s/projections/params/ 2020-01-05 14:37:59 -05:00
Aaron Hill
71d163b53c
Run rustfmt 2020-01-05 14:37:59 -05:00
Aaron Hill
d41f9dd5dd
Change 'panic!' to 'bug!'
Co-Authored-By: Wesley Wiser <wwiser@gmail.com>
2020-01-05 14:37:59 -05:00
Aaron Hill
ee922d47f2
Fix ICE involving calling Instance.ty during const evaluation
Fixes #67639

`Instance.ty` assumes that we are in a fully monomorphic context (e.g.
codegen), and can therefore use an empty `ParamEnv` when performing
normalization. Howver, the MIR constant evaluator code ends up calling
`Instance.ty` as a result of us attemptign to 'speculatively'
const-evaluate generic functions during const propagation.

As a result,
we may end up with projections involving type parameters
(e.g. <T as MyTrait>::Bar>) in the type we are trying to normalize.
Normalization expects us to have proper predicates in the `ParamEnv` for
such projections, and will ICE if we don't.

This commit adds a new method `Instance.ty_env`, which takes a
`ParamEnv` for use during normalization. The MIR const-evaluator code is
changed to use this method, passing in the proper `ParamEnv` for the
context at hand.
2020-01-05 14:37:59 -05:00
Dylan DPC
10a12c539a
Rollup merge of #67881 - varkor:scattering-of-backticks, r=Centril
Add backticks to various diagnostics
2020-01-05 22:44:33 +05:30
Mazdak Farrokhzad
ebfd8673a7 Remove rustc_hir reexports in rustc::hir. 2020-01-05 12:49:22 +01:00
Mazdak Farrokhzad
1c091bba51 librustc/hir.rs -> librustc/hir/mod.rs 2020-01-05 12:47:11 +01:00
Mazdak Farrokhzad
62ac10ffde simplify reexports in rustc::hir 2020-01-05 12:47:11 +01:00
bors
7785834159 Auto merge of #67777 - Zoxc:time-refactor, r=wesleywiser
Use self profile infrastructure for -Z time and -Z time-passes

There's no longer indentation for -Z time and -Z time-passes and duplicate timers between self profiling and -Z time-passes have been removed.

r? @wesleywiser
2020-01-05 07:54:23 +00:00
John Kåre Alsaker
5a485ce4a3 Use self profile infrastructure for -Z time and -Z time-passes 2020-01-05 02:57:14 +01:00
bors
093241deae Auto merge of #67808 - Marwes:projection_normalization_recurse, r=nikomatsakis
perf: Don't recurse into types that do not need normalizing

A bit speculative at this stage but profiling shows that type folding
takes up a substantial amount of time during normalization which may
indicate that many types may be folded despite there being nothing to
normalize
2020-01-05 01:18:57 +00:00
varkor
0c2cf07d6e Add backticks to various diagnostics 2020-01-05 00:17:46 +00:00
Mazdak Farrokhzad
ef08662613 hir::{hir,def,itemlikevisit,pat_util,print} -> rustc_hir
Also fix fallout wrt. HashStable.
2020-01-04 19:03:27 +01:00
Mazdak Farrokhzad
1f7b4e9a59 extract Export, ExportMap from hir::def 2020-01-04 19:03:27 +01:00
Mazdak Farrokhzad
702b2d736a simplify self::Namespace::* import 2020-01-04 19:03:27 +01:00
Mazdak Farrokhzad
60d5d36370 move {Par}DeepVisitor to intravisit 2020-01-04 19:03:27 +01:00
Mazdak Farrokhzad
e1087213ef hir::hir: simplify some imports 2020-01-04 19:03:27 +01:00
Mazdak Farrokhzad
3b66f4e792 split hir/mod.rs -> hir.rs & hir/hir.rs 2020-01-04 19:03:27 +01:00
Mazdak Farrokhzad
72241ad348 move HirId to librustc_hir::hir_id 2020-01-04 19:01:42 +01:00