Saleem Jaffer
2a33fbff22
addding an interp_error module
2019-07-30 13:18:36 +05:30
Saleem Jaffer
9f8b099846
code review fixes
2019-07-29 20:17:52 +05:30
Saleem Jaffer
03d47be8f0
code review fixes
2019-07-29 13:41:32 +05:30
Saleem Jaffer
654519d3c5
use PanicInfo and UnsupportedOpInfo
2019-07-29 13:35:59 +05:30
Saleem Jaffer
8e9d0faff2
adding a err macro for each of the InterpError variants
2019-07-29 13:35:59 +05:30
Saleem Jaffer
9782b373b3
implementing Debug for UnsupportedInfo
2019-07-29 13:35:10 +05:30
Saleem Jaffer
307798aa38
fixing fallout due to InterpError refactor
2019-07-29 13:35:09 +05:30
Saleem Jaffer
4f0ab6ccce
code review fixes
2019-07-29 13:33:54 +05:30
Saleem Jaffer
eeb2335401
moving remaining variants to UnsupportedInfo
2019-07-29 13:33:54 +05:30
Saleem Jaffer
fc48f3e824
more grouping of the variants in InterpError
2019-07-29 13:33:54 +05:30
Saleem Jaffer
01859bb160
grouping the variants of InterpError
2019-07-29 13:33:54 +05:30
Saleem Jaffer
0aa9658f5d
changing the fields of InterpError
2019-07-29 13:33:54 +05:30
Mazdak Farrokhzad
5a7db0e19a
Rollup merge of #62901 - petrochenkov:serde, r=Centril
...
cleanup: Remove `extern crate serialize as rustc_serialize`s
2019-07-25 01:05:03 +02:00
Ralf Jung
ff18786683
Apply suggestions from code review
...
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-24 11:45:39 +02:00
Ralf Jung
495f9509fe
use PanicMessage type for MIR assertion errors
2019-07-24 10:24:55 +02:00
Ralf Jung
3694d176a2
kill InterpError::description
2019-07-24 09:29:18 +02:00
Ralf Jung
c0420b1a59
do not use InterpError::description outside librustc::mir
2019-07-24 09:12:21 +02:00
Mark Rousskov
b2155dd747
Rollup merge of #62859 - spastorino:rename-to-as-ref, r=Centril
...
Place::as_place_ref is now Place::as_ref
r? @oli-obk
2019-07-23 12:51:16 -04:00
Mark Rousskov
52e9e44c7f
Rollup merge of #60951 - saleemjaffer:mir_better_error_enum, r=oli-obk
...
more specific errors in src/librustc/mir/interpret/error.rs
Implements [this](https://github.com/rust-rfcs/const-eval/issues/4 )
2019-07-23 12:51:02 -04:00
Vadim Petrochenkov
614037171b
cleanup: Remove extern crate serialize as rustc_serializes
2019-07-23 19:20:16 +03:00
Saleem Jaffer
3730ed9e5b
renames EvalErrorPanic to PanicMessage
2019-07-23 16:42:46 +05:30
Saleem Jaffer
90426ed642
moving some variants from InterpError to EvalErrorPanic
2019-07-23 13:37:04 +05:30
Santiago Pastorino
795d96d87b
Place::as_place_ref is now Place::as_ref
2019-07-22 00:25:07 +02:00
Saleem Jaffer
fd352b02e1
alters the panic variant of InterpError
2019-07-20 11:48:16 +05:30
Santiago Pastorino
d77653e88b
Avoid cloning Place in calculate_fake_borrows
2019-07-20 05:08:39 +02:00
Santiago Pastorino
46f81fc53d
Avoid cloning Place in report_use_of_moved_or_uninitialized and friends
2019-07-20 05:08:39 +02:00
Santiago Pastorino
438aeb8ca3
Avoid cloning Place in codegen_place
2019-07-20 05:08:38 +02:00
Santiago Pastorino
e11adb13b6
Implement Place::as_place_ref
2019-07-20 05:08:38 +02:00
Santiago Pastorino
98d2324875
Avoid cloning place in LocalAnalyzer visitor
2019-07-20 05:08:38 +02:00
Santiago Pastorino
d0accade3e
Migrate from Place enum to Place struct
2019-07-20 05:08:38 +02:00
Saleem Jaffer
589f6a7dc6
tries to refactor InterpError in mir
2019-07-18 14:52:30 +05:30
Albin Stjerna
9d3c59d697
rustfmt all the things!
2019-07-12 22:49:15 +02:00
Albin Stjerna
ac0a3d106b
polonius: add generation of liveneness-related facts
...
Notably contains an ugly hack to generate initialization information for
variables that will go away when we have that functionality in Polonius.
2019-07-12 22:48:02 +02:00
Vadim Petrochenkov
16918a8e28
Rename some things in syntax_pos/hygiene
...
More consistent with other naming:
ExpnFormat -> ExpnKind
ExpnKind::name -> ExpnKind::descr
DesugaringKind::name -> DesugaringKind::descr
Shorter, no tautology:
CompilerDesugaring -> Desugaring
CompilerDesugaringKind -> DesugaringKind
2019-07-11 00:12:07 +03:00
Ralf Jung
08e7a84354
remove another unused method
2019-07-06 13:09:00 +02:00
Ralf Jung
eed52de6b7
add assert_{bits,ptr}; document which methods we hope to get rid of
2019-07-06 10:02:15 +02:00
Mazdak Farrokhzad
3c2cba847b
Rollup merge of #62396 - RalfJung:miri-no-null, r=alexcrichton
...
remove Scalar::is_null_ptr
Comparing pointers should be done more carefully than that. With https://github.com/rust-lang/miri/pull/825 , Miri does not need it any more and it is otherwise unused.
2019-07-05 20:27:05 +02:00
Ralf Jung
50510e4491
remove Scalar::is_null_ptr
...
Miri does not need it any more and it is otherwise unused
2019-07-05 08:44:19 +02:00
ljedrz
37d7e1f22a
rename hir::map::local_def_id_from_hir_id to local_def_id
2019-07-04 12:53:12 +02:00
Mazdak Farrokhzad
740d5bd157
Rollup merge of #62173 - RalfJung:miri-interp, r=oli-obk
...
rename InterpretCx -> InterpCx
That's more consistent with InterpResult and InterpError.
r? @oli-obk
2019-07-04 01:38:42 +02:00
Jeremy Stucki
d28832dde9
Remove needless lifetimes
2019-07-03 10:01:02 +02:00
bors
ef064d2f66
Auto merge of #61871 - Zoxc:no-lift-branch, r=eddyb
...
Don't use lift to detect local types
This overlaps with https://github.com/rust-lang/rust/pull/61392 .
r? @eddyb
2019-07-02 08:09:15 +00:00
John Kåre Alsaker
930ad86e3d
Clean up query cache code
2019-06-30 11:18:44 +02:00
Ralf Jung
fc918a395a
rename InterpretCx -> InterpCx
...
That's more consistent with InterpResult and InterpError.
2019-06-27 13:23:34 +02:00
John Kåre Alsaker
c9325181d6
Don't use lift to detect local types
2019-06-26 13:04:05 +02:00
Santiago Pastorino
099f9e4e8a
Implement From<Local> for Place and PlaceBase
2019-06-25 15:46:23 +02:00
Ralf Jung
7e830286c7
fix reoccurring typo
2019-06-24 14:28:16 +02:00
Ralf Jung
c12c8a78ea
clean up internals of pointer checks; make get_size_and_align also check for fn allocations
2019-06-23 17:25:58 +02:00
Ralf Jung
dcc8371d4e
move CheckInAllocMsg to more logical place
2019-06-23 16:31:16 +02:00
Ralf Jung
c50b9d197f
Centralize bounds, alignment and NULL checking for memory accesses in one function: memory.check_ptr_access
...
That function also takes care of converting a Scalar to a Pointer, should that be needed. Not all accesses need that though: if the access has size 0, None is returned.
Everyone accessing memory based on a Scalar should use this method to get the Pointer they need.
All operations on the Allocation work on Pointer inputs and expect all the checks to have happened (and will ICE if the bounds are violated).
The operations on Memory work on Scalar inputs and do the checks themselves.
The only other public method to check pointers is memory.ptr_may_be_null, which is needed in a few places.
With this, we can make all the other methods (tests for a pointer being in-bounds and checking alignment) private helper methods, used to implement the two public methods.
That maks the public API surface much easier to use and harder to mis-use.
While I am at it, this also removes the assumption that the vtable part of a `dyn Trait`-fat-pointer is a `Pointer` (as opposed to a pointer cast to an integer, stored as raw bits).
2019-06-23 15:55:04 +02:00