Commit graph

97 commits

Author SHA1 Message Date
scalexm
37c5c0bf9c Change wording 2018-07-09 21:20:26 +02:00
csmoe
b9c6dba5c4 extend where clauses 2018-07-07 11:02:47 +08:00
csmoe
a6d4d2b945 refactor 2018-07-06 18:44:42 +08:00
csmoe
ff83ef0c24 merge wellformed(wc)s 2018-07-05 18:49:02 +08:00
csmoe
dabd3f6935 split IntoWellFormedGoal 2018-07-05 18:47:00 +08:00
csmoe
e2f3577131 wellformed wc 2018-07-05 18:46:43 +08:00
Niko Matsakis
90ea49b891 introduce predicates_defined_on for traits
This new query returns only the predicates *directly defined* on an
item (in contrast to the more common `predicates_of`, which returns
the predicates that must be proven to reference an item). These two
sets are almost always identical except for traits, where
`predicates_of` includes an artificial `Self: Trait<...>` predicate
(basically saying that you cannot use a trait item without proving
that the trait is implemented for the type parameters).

This new query is only used in chalk lowering, where this artificial
`Self: Trait` predicate is problematic. We encode it in metadata but
only where needed since it is kind of repetitive with existing
information.

Co-authored-by: Tyler Mandry <tmandry@gmail.com>
2018-07-02 11:33:24 -04:00
Niko Matsakis
c9d4f0615f use ty::TraitRef::identity where possible
Co-authored-by: Tyler Mandry <tmandry@gmail.com>
2018-07-02 10:38:33 -04:00
Vadim Petrochenkov
f0622dfe5d Use Idents for associated item definitions in HIR
Remove emulation of hygiene with gensyms
2018-06-28 11:04:50 +03:00
Vadim Petrochenkov
1fe9b4d763 Use Idents for associated type bindings in HIR 2018-06-28 11:04:50 +03:00
Niko Matsakis
1523de34a2 rustfmt various files 2018-06-27 16:30:38 -04:00
Niko Matsakis
9b1d2229ff change the enter_canonical_trait_query method to give a fulfill cx 2018-06-27 16:04:32 -04:00
Niko Matsakis
0a0dae0964 pull out ParamEnvAnd and remove QueryKey 2018-06-27 15:45:49 -04:00
Niko Matsakis
b2e899f843 move into provide methods 2018-06-27 09:42:21 -04:00
Niko Matsakis
d49d5222a9 merge all the type_op_foo modules into one as they are so trivial 2018-06-27 06:53:54 -04:00
Niko Matsakis
66c88392b4 use query boiler plate for normalize_projection_ty too 2018-06-27 06:49:43 -04:00
Niko Matsakis
e6c8c632b7 use query boilerplate for prove-predicate -- slightly inefficient
This requires us to allocate a single entry vector we didn't use to
allocate. I doubt this makes a difference in practice, as this only
occurs for cache misses.
2018-06-27 06:49:20 -04:00
Niko Matsakis
ac40d73c6f use query boilerplate for subtype 2018-06-27 06:48:52 -04:00
Niko Matsakis
fa71af4192 use query boilerplate for normalize 2018-06-27 06:48:43 -04:00
Niko Matsakis
2fd8a312d9 extract out query boilerplate and use for Eq 2018-06-27 06:48:32 -04:00
Niko Matsakis
2a0b3d6224 introduce Normalizable trait for things directly normalizable 2018-06-26 10:59:40 -04:00
Niko Matsakis
de7e941e4e convert prove_predicate into a query 2018-06-26 10:59:40 -04:00
Niko Matsakis
4beea9943b make Subtype a true query 2018-06-26 10:59:40 -04:00
Niko Matsakis
71ce2e7eb6 make Eq a true query 2018-06-26 10:59:40 -04:00
Niko Matsakis
1d664622b6 remove Canonicalization trait, which serves no purpose 2018-06-26 10:59:38 -04:00
Niko Matsakis
dfd33f5932 move make_query_response into method on infcx 2018-06-26 10:49:24 -04:00
bors
0b8d817404 Auto merge of #51433 - scalexm:finish-rules, r=nikomatsakis
[chalkify] Small refactoring and WF/FromEnv rules for types

r? @nikomatsakis
2018-06-22 01:17:52 +00:00
Eduard-Mihai Burtescu
5a5c7ded0d rustc: rename ty::maps to ty::query. 2018-06-14 18:05:12 +03:00
scalexm
6656c0f09f Add rules for type well-formedness 2018-06-07 14:38:23 +02:00
scalexm
0347b32a26 Refactor the chalkify lowering process 2018-06-04 18:21:14 +02:00
John Kåre Alsaker
b7aabaa3fc Update recursion limits 2018-06-01 14:56:01 +02:00
Matthew Jasper
b83daea479 Register outlives predicates from queries the right way around. 2018-05-31 20:40:25 +01:00
Niko Matsakis
8fd316f5b5 pacify the mercilous tidy 2018-05-24 12:01:28 -04:00
Niko Matsakis
6f425a9201 implement the chalk traits, albeit with many placeholders 2018-05-24 12:01:27 -04:00
Eduard-Mihai Burtescu
7e4d8718cb rustc: use intern_* instead of mk_* where possible. 2018-05-21 12:13:19 +03:00
Mark Simulacrum
54df1bf200
Rollup merge of #50818 - nnethercote:faster-normalize, r=nikomatsakis
Speed up `opt_normalize_projection_type`

`opt_normalize_projection_type` is hot in the serde and futures benchmarks in rustc-perf. These two patches speed up the execution of most runs for them by 2--4%.
2018-05-17 13:51:27 -06:00
Nicholas Nethercote
47bc774ab6 Avoid allocations in opt_normalize_projection_type.
This patch changes `opt_normalize_project_type` so it appends
obligations to a given obligations vector, instead of returning a new
obligations vector.

This change avoids lots of allocations. In the most extreme case, for a
clean "Check" build of serde it reduces the total number of allocations
by 20%.
2018-05-17 10:35:39 +10:00
varkor
39a68e9069 Clean up dropck_outlives PhantomData handling 2018-05-15 14:22:25 +01:00
varkor
0a9371ab77 Add mk_param_from_def 2018-05-15 14:22:25 +01:00
varkor
4bed895cab Pull common parameters into GenericParamDef
This leads to a lot of simplifications, as most code doesn't actually need to know about the specific lifetime/type data; rather, it's concerned with properties like name, index and def_id.
2018-05-15 14:21:32 +01:00
varkor
5e89312a22 Inline get_type 2018-05-15 14:21:32 +01:00
varkor
d62fc236f9 Refactor to address comments 2018-05-15 14:21:31 +01:00
varkor
b75f421ee9 Generalise more cases of explicit iteration of specific kinds 2018-05-15 14:21:03 +01:00
varkor
a9622dc5c6 Fix generics type parameter handling in miri 2018-05-15 14:20:19 +01:00
John Kåre Alsaker
710b4ad2a5 Store the GeneratorInterior in the new GeneratorSubsts 2018-05-08 16:21:58 +02:00
John Kåre Alsaker
0edc8f4270 Store generator movability outside GeneratorInterior 2018-05-08 16:21:58 +02:00
Felix S. Klock II
edb8d1c0d4 Conservatively assume dropping a generator touches its upvars, via locals' dtors.
This is meant to address rust-lang/rust#49918.

Review feedback: put back comment justifying skipping interior traversal.

Review feedback: dropck generators like trait objects: all their upvars must
outlive the generator itself, so just create a DtorckConstraint saying so.
2018-05-01 22:28:54 +02:00
bors
8a09bc6a77 Auto merge of #48995 - aravind-pg:canonical-query, r=nikomatsakis
Create a canonical trait query for `evaluate_obligation`

This builds on the canonical query machinery introduced in #48411 to introduce a new canonical trait query for `evaluate_obligation` in the trait selector. Also ports most callers of the original `evaluate_obligation` to the new system (except in coherence, which requires support for intercrate mode). Closes #48537.

r? @nikomatsakis
2018-04-27 03:53:39 +00:00
Aravind Gollakota
d5b2e90744 Retry canonical trait query in standard mode if overflow occurs
This is slightly hacky and hopefully only a somewhat temporary solution.
2018-04-26 20:28:30 -05:00
Aravind Gollakota
5cb0372160 Remove the stored obligation in OverflowError to simplify things
We will shortly refactor things so that it is no longer needed
2018-04-26 20:28:30 -05:00