Commit graph

18981 commits

Author SHA1 Message Date
Matthew Jasper
9462c8babb Improve hygiene of newtype_index
Also add unit tests
2020-01-06 20:43:10 +00:00
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
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
Mazdak Farrokhzad
7a14073875 move def_id to new rustc_hir crate 2020-01-04 19:01:42 +01:00
Mazdak Farrokhzad
7eb7b23b2a move describe_as_module to where it's used 2020-01-04 19:01:42 +01:00
Mazdak Farrokhzad
e0e9ff06af remove DefId::to_dep_node (dead code) 2020-01-04 19:01:42 +01:00
Mazdak Farrokhzad
2f64ab6633 {HirId,ItemLocal}{Map,Set} -> rustc::hir & nix rustc::nodemap 2020-01-04 19:01:42 +01:00
Mazdak Farrokhzad
ca297f8cf4 DefId{Map,Set} -> rustc::hir::def_id 2020-01-04 19:01:42 +01:00
Mazdak Farrokhzad
8e15bb6546 canonicalize rustc_session imports 2020-01-04 19:00:25 +01:00
Mazdak Farrokhzad
5ccc1e45bd move Node{Map,Set} -> rustc_session::node_id 2020-01-04 18:59:28 +01:00
Mazdak Farrokhzad
f507403517 define_id_collections -> rustc_data_structures 2020-01-04 18:57:22 +01:00
Mazdak Farrokhzad
7901c7f707 canonicalize FxHash{Map,Set} imports 2020-01-04 18:57:22 +01:00
Mazdak Farrokhzad
66f5bf1b8b extract rustc::middle::codegen_fn_attrs 2020-01-04 18:43:06 +01:00
Mazdak Farrokhzad
c19ed3bc5b fn adt_kind -> wfcheck 2020-01-04 18:43:05 +01:00
bors
79cf5e4fe2 Auto merge of #67788 - cjgillot:delint-day, r=Zoxc
Move early and late lint mechanisms to librustc_lint.

As requested, split from #67737

r? @Zoxc
2020-01-04 09:32:29 +00:00
Mazdak Farrokhzad
814e3af8bd
Rollup merge of #67786 - Centril:canon-span, r=petrochenkov
Nix reexports from `rustc_span` in `syntax`

Remove reexports `syntax::{source_map, symbol, edition}` and use `rustc_span` paths directly.

r? @petrochenkov
2020-01-04 02:19:49 +01:00
Yuki Okushi
76c1454d27
Rollup merge of #67595 - ohadravid:impl-trait-does-not-live-long-enough, r=estebank
Suggest adding a lifetime constraint for opaque type

Fixes #67577, where code like this:

```
struct List {
  data: Vec<String>,
}
impl List {
  fn started_with<'a>(&'a self, prefix: &'a str) -> impl Iterator<Item=&'a str> {
    self.data.iter().filter(|s| s.starts_with(prefix)).map(|s| s.as_ref())
  }
}
```

will show this error:
```
   Compiling playground v0.0.1 (/playground)
error[E0597]: `prefix` does not live long enough
 --> src/lib.rs:6:47
  |
5 |   fn started_with<'a>(&'a self, prefix: &'a str) -> impl Iterator<Item=&'a str> {
  |                   -- lifetime `'a` defined here     --------------------------- opaque type requires that `prefix` is borrowed for `'a`
...
```

but without suggesting the lovely `help: you can add a constraint..`.

r? @estebank
2020-01-03 17:56:21 +09:00
Mazdak Farrokhzad
b1aad76586 Normalize syntax::edition imports. 2020-01-02 19:31:38 +01:00
Mazdak Farrokhzad
4ff12ce4c1 Normalize syntax::symbol imports. 2020-01-02 13:57:04 +01:00
Mazdak Farrokhzad
75e4783f63 Normalize syntax::source_map imports. 2020-01-02 13:57:04 +01:00
Markus Westerlind
e6e61d9dff 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-02 12:14:23 +01:00
Camille GILLOT
36b6630771 Move stability queries to librustc_passes.
Contains:
- check_mod_unstable_api_usage query;
- stability_index query;
- check_unused_or_stable features pass.
2020-01-01 14:15:02 +01:00
Camille GILLOT
eca7797d6b Move stability.rs to librustc_passes. 2020-01-01 13:28:12 +01:00
Camille GILLOT
1fab03e908 Move lint levels machanism in librustc_lint. 2020-01-01 13:20:33 +01:00
Camille GILLOT
96180ff655 Move late lint machanism in librustc_lint. 2020-01-01 13:20:18 +01:00
Camille GILLOT
3a350e1a39 Move early lint machanism in librustc_lint. 2020-01-01 13:16:43 +01:00
Vadim Petrochenkov
70f1d57048 Rename syntax_pos to rustc_span in source code 2020-01-01 09:15:18 +03:00