Commit graph

199 commits

Author SHA1 Message Date
varkor
c6197541f7 Implement TypeFoldable for InferConst
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-06 14:05:26 +01:00
Eduard-Mihai Burtescu
ff174fe09e rustc: rename hir::def::Def to Res (short for "resolution"). 2019-05-03 22:50:19 +03:00
varkor
d8b9387ace Take ConstValue::Placeholder into account in new locations 2019-05-01 23:11:19 +01:00
varkor
245a474ab7 Inline ConstError into TypeError 2019-05-01 23:10:57 +01:00
varkor
2254727480 Add ConstError
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-05-01 23:10:05 +01:00
Saleem Jaffer
63b4764556 refactor ExprKind to use new PointerCast enum 2019-04-16 17:36:41 +05:30
Saleem Jaffer
6321a323cc refactor Adjustment to use new PointerCast enum 2019-04-16 13:40:04 +05:30
Tyler Mandry
ac29ca75e0 Replace adt_def with name in mir::ProjectionElem::Downcast 2019-04-02 12:02:17 -07:00
Taiki Endo
07021e07ed Allow closure to unsafe fn coercion 2019-04-01 00:00:43 +09:00
Oliver Scherer
5cd2806621 Revert the LazyConst PR 2019-03-16 21:04:10 +01:00
Eduard-Mihai Burtescu
0ee059d5a0 Fix rebase fallout and address some review comments. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
8619edede1 rustc: slice substs in ty::print instead of passing the full ones. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
52b4f2daa0 rustc: remove PrintCx from ty::Print and rely on printers carrying TyCtxt. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
c0c485c3ad rustc: don't thread existential projections through path_generic_args. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
030cdc9729 rustc: remove obsolete hacks from ppaux, relating to normalization under HRTB. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
fb53bb9e2b rustc: move Debug impls from ppaux to ty::structural_impls. 2019-03-15 13:25:10 +02:00
Eduard-Mihai Burtescu
329b8ca818 rustc: always rely on '_ to be not printed by ty::Region itself. 2019-03-15 09:26:13 +02:00
Eduard-Mihai Burtescu
eb525b0916 rustc: tie the 'tcx between Print and PrintCx in ty::print. 2019-03-15 09:26:13 +02:00
varkor
2dfde88438 Implement structural_impls for const generics
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2019-03-05 22:17:42 +00:00
Dan Robertson
08bd4ff998
Rename variadic to c_variadic
Function signatures with the `variadic` member set are actually
C-variadic functions. Make this a little more explicit by renaming the
`variadic` boolean value, `c_variadic`.
2019-02-27 10:21:54 -05:00
Mazdak Farrokhzad
1082a292ea
Rollup merge of #58511 - oli-obk:const_to_op, r=RalfJung
Const to op simplification

r? @RalfJung

alternative to https://github.com/rust-lang/rust/pull/58486
2019-02-24 05:56:01 +01:00
Niko Matsakis
561ce442de restore the actual leak-check 2019-02-21 11:32:17 -05:00
Oliver Scherer
f7c493121d Reuse the Pointer type instead of passing reassembling it at many use sites 2019-02-16 14:29:27 +01:00
bors
d329d46a3f Auto merge of #58207 - nnethercote:intern_lazy_const, r=oli-obk
Make `intern_lazy_const` actually intern its argument.

Currently it just unconditionally allocates it in the arena.

For a "Clean Check" build of the the `packed-simd` benchmark, this
change reduces both the `max-rss` and `faults` counts by 59%; it
slightly (~3%) increases the instruction counts but the `wall-time` is
unchanged.

For the same builds of a few other benchmarks, `max-rss` and `faults`
drop by 1--5%, but instruction counts and `wall-time` changes are in the
noise.

Fixes #57432, fixes #57829.
2019-02-09 12:38:51 +00:00
Nicholas Nethercote
f2871a9ce5 Make intern_lazy_const actually intern its argument.
Currently it just unconditionally allocates it in the arena.

For a "Clean Check" build of the the `packed-simd` benchmark, this
change reduces both the `max-rss` and `faults` counts by 59%; it
slightly (~3%) increases the instruction counts but the `wall-time` is
unchanged.

For the same builds of a few other benchmarks, `max-rss` and `faults`
drop by 1--5%, but instruction counts and `wall-time` changes are in the
noise.

Fixes #57432, fixes #57829.
2019-02-06 12:50:28 +11:00
Mark Mansi
e957ed9d10 move librustc to 2018 2019-02-05 12:45:47 -06:00
Oliver Scherer
fe50b4eb1d ConstValue::ScalarPair only needs to represent slices 2019-01-27 21:41:35 +01:00
bors
d6d32ac25d Auto merge of #56723 - oli-obk:lazy_const, r=nikomatsakis
Don't emit `Unevaluated` from `const_eval`

cc @eddyb @RalfJung
2019-01-04 17:01:24 +00:00
Niko Matsakis
bc4404c0b5 improve handling for subtype
Still not great, but good enough to land this PR.
2019-01-02 17:35:06 -05:00
Oliver Scherer
37a0df3e9d <&'tcx ty::Const as Deref>::deref 2019-01-01 20:05:02 +01:00
Oliver Scherer
b903cb9d60 Move the Unevaluated constant arm upwards in the type structure 2019-01-01 20:05:02 +01:00
scalexm
50f8ae364b Add a def-id in ty::ParamEnv 2018-12-27 19:21:15 +01:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
Oliver Scherer
16d2a92b3d Improve the diagnostic message 2018-11-30 09:44:15 +01:00
scalexm
05995a8522 Introduce TyKind::Placeholder variant 2018-11-24 01:24:40 +01:00
Oliver Scherer
740fb0cbaa Use IndexVec instead of usize in librustc 2018-11-12 12:33:16 +01:00
Oliver Scherer
19ae2b940c Shrink some internal enums 2018-11-12 12:33:16 +01:00
scalexm
1003b7f85e Move BoundTy to ty::TyKind 2018-11-03 11:33:14 +01:00
bors
5eda136f62 Auto merge of #55305 - nikomatsakis:universes-refactor-3, r=scalexm
universes refactor 3

Some more refactorings from my universe branch. These are getting a bit more "invasive" -- they start to plumb the universe information through the canonicalization process. As of yet though I don't **believe** this branch changes our behavior in any notable way, though I'm marking the branch as `WIP` to give myself a chance to verify this.

r? @scalexm
2018-11-02 01:19:17 +00:00
Niko Matsakis
c244fd79f2 kill old-style-lub warnings 2018-10-31 12:11:02 -04:00
bors
cae6efc37d Auto merge of #54183 - qnighy:by-value-object-safety, r=oli-obk
Implement by-value object safety

This PR implements **by-value object safety**, which is part of unsized rvalues #48055. That means, with `#![feature(unsized_locals)]`, you can call a method `fn foo(self, ...)` on trait objects. One aim of this is to enable `Box<FnOnce>`  in the near future.

The difficulty here is this: when constructing a vtable for a trait `Foo`, we can't just put the function `<T as Foo>::foo` into the table. If `T` is no larger than `usize`, `self` is usually passed directly. However, as the caller of the vtable doesn't know the concrete `Self` type, we want a variant of `<T as Foo>::foo` where `self` is always passed by reference.

Therefore, when the compiler encounters such a method to be generated as a vtable entry, it produces a newly introduced instance called `InstanceDef::VtableShim(def_id)` (that wraps the original instance). the shim just derefs the receiver and calls the original method. We give different symbol names for the shims by appending `::{{vtable-shim}}` to the symbol path (and also adding vtable-shimness as an ingredient to the symbol hash).

r? @eddyb
2018-10-27 19:29:35 +00:00
Felix S. Klock II
82ab668a55 Further foundational stuff on ProjectionKind before I add it to AscribeUserType. 2018-10-26 23:47:53 +02:00
Oliver Schneider
7fdf06cdde Report const eval error inside the query 2018-10-25 16:46:19 +02:00
Masaki Hara
0ad4c6f850 Add InstanceDef::VtableShim. 2018-10-24 21:59:06 +09:00
Niko Matsakis
460915be73 make UniverseIndex hashable, rename "sub-" to "superuniverse"
The only name was silly. U1 can contain everything from U0 *plus* more
things.
2018-10-15 11:42:07 -04:00
Ralf Jung
616cb6356f miri engine: also check return type before calling function 2018-10-09 13:08:00 +02:00
bors
fddcd316af Auto merge of #54743 - ljedrz:cleanup_ty_p2, r=zackmdavis
Cleanup rustc/ty part 2

The second part of cleanups and minor improvements for rustc/ty.
- improve allocations
- calculate span after a possible early continue
- simplify some patterns
- mark a comment as FIXME
- whitespace fixes

The PR is independent from from the first part.
2018-10-05 19:32:14 +00:00
scalexm
608adfc3f0 Introduce TyKind::UnnormalizedProjection 2018-10-03 17:06:28 +02:00
ljedrz
f8caccacf4 rustc/ty: simplify some patterns 2018-10-03 09:04:02 +02:00
ljedrz
187bcb9bd1 rustc/ty: whitespace fixes 2018-10-03 08:56:43 +02:00