John Kåre Alsaker
a70babed03
Use a function to access the Hir map to be able to turn it into a query later
2018-12-06 17:24:36 +01:00
Ralf Jung
ef2b18a873
fix recently added Retag statement
2018-12-03 13:02:02 +01:00
Ralf Jung
af9b057156
drop glue takes in mutable references, it should reflect that in its type
2018-11-22 16:08:58 +01:00
bors
4ec0ba9545
Auto merge of #55716 - RalfJung:escape-to-raw, r=oli-obk
...
Add escape-to-raw MIR statement
Add a new MIR "ghost state statement": Escaping a ptr to permit raw accesses.
~~This includes #55549 , [click here](https://github.com/RalfJung/rust/compare/miri-visitor...RalfJung:escape-to-raw ) for just the new commits.~~
2018-11-15 01:12:01 +00:00
Oliver Scherer
4a9ed3f25a
Use type safe VariantIdx
instead of usize
everywhere
2018-11-12 14:24:45 +01:00
ljedrz
e3390d89ea
Improve creation of 3 IndexVecs
2018-11-08 11:55:10 +01:00
Ralf Jung
b891a81164
comment
2018-11-07 16:54:31 +01:00
Ralf Jung
9e3f571cc3
drop glue works with raw ptrs, it must EscapeToRaw
2018-11-07 16:54:31 +01:00
scalexm
d99195ad8f
Rename Binder::no_late_bound_regions
to Binder::no_bound_vars
2018-11-03 11:41:55 +01: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
b569caf267
Checkpoint: Added abstraction over collection of projections into user type.
...
I did not think I would need this in the MIR, but in general local
decls are going to need to support this. (That, or we need to be able
define a least-upper-bound for a collection of types encountered via
the pattern compilation.)
2018-10-26 23:46:21 +02:00
Shotaro Yamada
3878d24ef6
Remove redundant clone
2018-10-26 12:07:39 +09:00
Masaki Hara
7c965e3e65
Prefer Move over Copy when dereferencing rvalue objects.
2018-10-24 21:59:07 +09:00
Masaki Hara
250979c0ae
Implement vtable shim generation.
2018-10-24 21:59:07 +09:00
Masaki Hara
0ad4c6f850
Add InstanceDef::VtableShim.
2018-10-24 21:59:06 +09:00
bors
dbecb7a644
Auto merge of #54782 - pnkfelix:issue-54556-semi-on-tail-diagnostic, r=nikomatsakis
...
NLL: temps in block tail expression diagnostic
This change adds a diagnostic that explains when temporaries in a block tail expression live longer than block local variables that they borrow, and attempts to suggest turning the tail expresion into a statement (either by adding a semicolon at the end, when its result value is clearly unused, or by introducing a `let`-binding for the result value and then returning that).
Fix #54556
2018-10-07 00:28:26 +00:00
Pietro Albini
3810657ae3
Rollup merge of #54787 - varkor:unused-mut-in-desugaring, r=nikomatsakis
...
Only warn about unused `mut` in user-written code
Fixes https://github.com/rust-lang/rust/issues/54586 .
r? @pnkfelix
cc @blitzerr
2018-10-05 22:33:13 +02:00
Felix S. Klock II
4fff54381b
Add flag to mir::LocalDecl
to track whether its a temp from some subexpr a block tail expression.
...
Slightly refactored the `LocalDecl` construction API in the process.
2018-10-05 10:39:39 +02:00
Matthew Jasper
cc09cb5e5a
Record whether a Call in MIR corresponds to a call in HIR
2018-10-03 19:54:55 +01:00
varkor
113141b6f5
Only warn about unused mut
in user-written code
2018-10-03 14:14:11 +01:00
Nicholas Nethercote
a577f900a9
Shrink StatementKind::Assign.
...
This shrinks StatementKind from 80 bytes to 64 bytes on 64-bit.
2018-09-24 18:45:37 +10:00
Niko Matsakis
e87bf30f5f
propagate user-ascribes types down onto resulting bindings
...
But only in very simple cases.
2018-09-10 10:58:31 -04:00
Niko Matsakis
56506cfa25
support user-given types in adts
2018-08-24 13:27:38 -04:00
Niko Matsakis
e23ad83fbc
add a user_ty
annotation to Constant
2018-08-24 13:27:38 -04:00
varkor
6f637da50c
Remove Ty prefix from Ty{Adt|Array|Slice|RawPtr|Ref|FnDef|FnPtr|Dynamic|Closure|Generator|GeneratorWitness|Never|Tuple|Projection|Anon|Infer|Error}
2018-08-22 16:07:44 +01:00
Oliver Schneider
de511438cd
Promoteds are statics and statics have a place, not just a value
2018-07-23 09:51:30 +02:00
Felix S. Klock II
cac61267a7
Thread info about form of variable bindings, including spans of arg types, down into mir::LocalDecls
.
...
As a drive-by: the ref_for_guards created by `fn declare_binding`
should not have been tagged as user_variables in the first
place. These secret internal locals are *pointers* to user variables,
but themselves are not such (IMO. For now at least.)
2018-06-19 19:38:37 +02:00
Eduard-Mihai Burtescu
5a5c7ded0d
rustc: rename ty::maps to ty::query.
2018-06-14 18:05:12 +03:00
Eduard-Mihai Burtescu
06d88cda08
rustc: rename mir::LocalDecl's syntactic_source_info to source_info.
2018-05-30 20:30:10 +03:00
Eduard-Mihai Burtescu
6c53972478
rustc: turn mir::LocalDecl's visibility_source_info into a SourceScope.
2018-05-30 20:30:10 +03:00
Eduard-Mihai Burtescu
0895590c53
rustc: rename mir::LocalDecl's source_info to visibility_source_info.
2018-05-30 20:30:10 +03:00
Eduard-Mihai Burtescu
b10c157bd8
rustc: turn mir::LocalDecl's syntactic_scope into a SourceInfo.
2018-05-30 20:30:10 +03:00
Eduard-Mihai Burtescu
85d44c4276
rustc: rename mir::VisibilityScope to mir::SourceScope.
2018-05-30 20:30:09 +03:00
Eduard-Mihai Burtescu
73f62106ad
rustc: move TypeParamDef's fields into GenericParamDefKind::Type.
2018-05-21 12:13:19 +03:00
Eduard-Mihai Burtescu
7e4d8718cb
rustc: use intern_* instead of mk_* where possible.
2018-05-21 12:13:19 +03:00
Eduard-Mihai Burtescu
196b2e0d82
rustc: don't call Kind::from directly, use .into() instead.
2018-05-21 12:13:19 +03:00
Irina Popa
b63d7e2b1c
Rename trans to codegen everywhere.
2018-05-17 15:08:30 +03:00
varkor
e9c28b2564
Use Kind instead of UnpackedKind in Substs methods
2018-05-15 14:22:25 +01:00
varkor
d9190da982
Refactor Substs methods on generic parameters
2018-05-15 14:22:11 +01:00
John Kåre Alsaker
fdd9787777
Introduce ConstValue and use it instead of miri's Value for constant values
2018-05-11 13:01:44 +02:00
bors
7d8f0e22f5
Auto merge of #50253 - nikomatsakis:regressions-2018-04-26, r=eddyb
...
drop elaboration should reveal all
This used to happen implicitly through the normalization function; but we now keep the param-env as is, which seems less surprising.
cc #49685
r? @eddyb
2018-04-26 23:11:39 +00:00
Niko Matsakis
0361e5938c
use reveal_all
during drop elaboration
...
This used to happen by default as part of the normalization routine
that was being used.
2018-04-26 13:31:52 -04:00
Irina Popa
04fa0e7bb3
rustc_target: move in syntax::abi and flip dependency.
2018-04-26 17:49:16 +03:00
Andrew Cann
9b15ddb29e
remove defaulting to unit
...
Types will no longer default to `()`, instead always defaulting to `!`.
This disables the associated warning and removes the flag from TyTuple
2018-03-14 12:44:51 +08:00
Niko Matsakis
e4728e494e
transition various normalization functions to the new methods
...
In particular:
- `fully_normalize_monormophic_ty` => `normalize_erasing_regions`
- `normalize_associated_type_in_env` => `normalize_erasing_regions`
- `fully_normalize_associated_types_in` => `normalize_erasing_regions`
- `erase_late_bound_regions_and_normalize` => `normalize_erasing_late_bound_regions`
2018-03-13 11:22:07 -04:00
Oliver Schneider
9857eaa4df
Nuke ConstInt and Const*size
2018-03-08 08:34:10 +01:00
Oliver Schneider
28572d2c1f
Nuke the entire ctfe from orbit, it's the only way to be sure
2018-03-08 08:08:14 +01:00
Oliver Schneider
918b6d7633
Produce instead of pointers
2018-03-08 08:08:14 +01:00
Felix S. Klock II
c00266b7ac
Encode (in MIR) whether borrows are explicit in source or arise due to autoref.
...
This is foundation for issue 46747 (limit two-phase borrows to method-call autorefs).
2018-02-08 12:16:25 +01:00
Manish Goregaokar
8a8f91b89e
Generalize tuple_like_shim's code to be useful for enums
2018-02-01 08:05:37 +05:30