51 Commits

Author SHA1 Message Date
Eduard Burtescu
bfdfa1ce1d rustc_typeck: use Substs::from_generics instead of manually building them. 2016-08-17 05:50:57 +03:00
Eduard Burtescu
4b25f08512 rustc: move trait objects from TraitRef to ExistentialTraitRef. 2016-08-17 05:50:57 +03:00
Eduard Burtescu
5ef6af09e3 rustc: move defaulting's use of &mut Substs from InferCtxt to typeck. 2016-08-17 05:50:57 +03:00
Andrew Cann
ed02344fbc Remove obsolete divergence related stuff
Replace FnOutput with Ty
Replace FnConverging(ty) with ty
Purge FnDiverging, FunctionRetTy::NoReturn and FunctionRetTy::None
2016-08-13 21:37:09 +08:00
Eduard Burtescu
d1d16c94c5 rustc: rename ProjectionMode and its variant to be more memorable. 2016-08-12 06:43:34 +03:00
Manish Goregaokar
bc283bb8ae Rollup merge of #35040 - soltanmm:couple-is-a-pun, r=nikomatsakis
Use &mut for `CombineFields` in inference relations

Because dropping obligations on the floor makes a mess.

r? @nikomatsakis
2016-07-28 20:33:07 +05:30
Masood Malekghassemi
e88df943dd Use &mut for CombineFields in inference relations 2016-07-25 17:38:05 -07:00
Masood Malekghassemi
dddaf34cfc Move a_is_expected out of CombineFields 2016-07-25 16:38:43 -07:00
Masood Malekghassemi
cdb0867493 Unpublicize inference relations 2016-07-25 13:08:53 -07:00
Ariel Ben-Yehuda
717e39294f address review comments
I split the RFC1592 commit out
2016-07-23 00:03:19 +03:00
ggomez
e76a46a10d Add new error codes in librustc_typeck 2016-07-22 22:47:38 +03:00
Ariel Ben-Yehuda
cea88ebb39 refactor type error reporting 2016-07-22 14:32:56 +03:00
Ariel Ben-Yehuda
8eb12d91aa remove rustc_typeck::same_type_err 2016-07-22 14:32:56 +03:00
Ariel Ben-Yehuda
b2422ab806 remove never-called type-error reporting functions 2016-07-22 14:32:56 +03:00
Jonathan Turner
6ae3502134 Move errors from libsyntax to its own crate 2016-06-23 08:07:35 -04:00
bors
f97c411548 Auto merge of #33622 - arielb1:elaborate-drops, r=nikomatsakis
[MIR] non-zeroing drop

This enables non-zeroing drop through stack flags for MIR.

Fixes #30380.
Fixes #5016.
2016-06-04 23:49:29 -07:00
Ariel Ben-Yehuda
a091cfd4f3 implement drop elaboration
Fixes #30380
2016-06-03 16:11:18 +03:00
Niko Matsakis
24d4f10ab2 change to use higher_ranked_match
also, consolidate the return type into from a tuple into a struct
`Progress`
2016-05-31 19:58:44 -04:00
Niko Matsakis
21eb36608e create but do not use a projection cache 2016-05-31 19:44:43 -04:00
Niko Matsakis
5cff88f2a0 add a higher-ranked match routine
Currently, when projecting out of a higher-ranked where-clause, we
instantiate all higher-ranked regions with lifetime variables. This is
unnecessary since the language rules ought to guarantee (modulo #32330)
that each of those higher-ranked regions is equated with some regions
from the input types. This routine figures out what those regions are
and just uses them. Also, since #32330 is not fully fixed, it detects
when we may have unconstrained variables and indicates that in its
return value.
2016-05-31 19:44:05 -04:00
Niko Matsakis
eaf13b2f01 better debug dumping with inference variables 2016-05-31 19:42:59 -04:00
Niko Matsakis
75543c08c7 simplify HR subtyping back to what we did before
A lot of the refactors, however, seem helpful, so leave those in,
particularly since we may want to make this change in the future.
2016-05-31 19:42:22 -04:00
Niko Matsakis
11984340bf make HR algorithms account for region subtyping
Currently, we consider region subtyping a failure
if a skolemized lifetime is relatable to any
other lifetime in any way at all. But a more precise
formulation is to say that a skolemized lifetime:

- must not have any *incoming* edges in the region graph
- only has *outgoing* edges to nodes that are `'static`

To enforce the latter requirement, we add edges from `'static -> 'x` for
each lifetime '`x' reachable from a skolemized region.

We now have to add a new `pop_skolemized` routine to do cleanup.
Whereas before if there were *any* edges relating to a skolemized
region, we would return `Err` and hence rollback the transaction, we now
tolerate some edges and return `Ok`. Therefore, the `pop_skolemized`
routine runs and cleans up those edges.
2016-05-31 19:41:25 -04:00
Ariel Ben-Yehuda
040fc94b4e catch attempts to leak obligations out of snapshots 2016-05-25 21:12:35 +03:00
ggomez
e9797d4be5 Extend rustc_on_unimplemented flag: if a message is available at an impl, this message will be displayed instead 2016-05-11 13:18:57 +02:00
Eduard Burtescu
42eb7032fa Fixup indentation after methodification. 2016-05-11 08:48:12 +03:00
Eduard Burtescu
a1c170fc35 rustc: Split local type contexts interners from the global one. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
31a07b0ce6 rustc_typeck: Generalize over 'tcx != 'gcx. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
20652162ca rustc: More interning for data used in Ty<'tcx>. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8f72d8127f rustc: Generalize a minimum set of functions over 'tcx != 'gcx. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
12e56ea56b rustc: Wrap users of InferCtxt in an anonymous scope. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
8a704f6dc7 rustc: Remove the TyCtxt field from ParameterEnvironment. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
76affa5d6f rustc: Split 'tcx into 'gcx and 'tcx for InferCtxt and its users. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
513d392f7e rustc: Replace &'a TyCtxt<'tcx> with a TyCtxt<'a, 'tcx> wrapper. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
f8ea24edc8 rustc: Avoid free functions taking &TyCtxt and &InferCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
6e290998c3 infer: Turn normalize_associated_type into a method on TyCtxt. 2016-05-11 04:14:58 +03:00
Eduard Burtescu
0907c198c4 infer: Use methods for creating an InferCtxt. 2016-05-11 04:14:58 +03:00
Ariel Ben-Yehuda
62db786fc8 stop using commit_if_ok where no errors can happen 2016-05-03 18:52:55 +03:00
bors
90318b8c22 Auto merge of #32258 - nikomatsakis:fewer-errors, r=arielb1
Suppress fallback and ambiguity errors

If the infcx has observed other errors, then suppress both default type
parameter fallback (which can be unreliable, as the full constraint set
is not available) and errors related to unresovled
variables (annoyingly, integer type variables cannot currently be
unified with error, so that has to be a separate mechanism). Also add a
flag to `infcx` to allow us to independently indicate when we have
observed an error and hence should trigger this suppression mode.

Fixes #31997

cc @alexcrichton
r? @arielb1
2016-04-25 08:13:22 -07:00
Niko Matsakis
ccaa2f855e Suppress fallback and ambiguity errors
If the infcx has observed other errors, then suppress both default type
parameter fallback (which can be unreliable, as the full constraint set
is not available) and errors related to unresovled
variables (annoyingly, integer type variables cannot currently be
unified with error, so that has to be a separate mechanism). Also add a
flag to `infcx` to allow us to independently indicate when we have
observed an error and hence should trigger this suppression mode.
2016-04-12 13:29:46 -04:00
Seo Sanghyeon
01fb27f648 Remove unused trait imports 2016-04-12 22:58:55 +09:00
Eduard Burtescu
ffca6c3e15 rustc: move middle::{def,def_id,pat_util} to hir. 2016-04-06 09:14:21 +03:00
Eduard Burtescu
8b0937293b rustc: move rustc_front to rustc::hir. 2016-04-06 09:01:55 +03:00
Manish Goregaokar
f6019760f9 Rollup merge of #32596 - soltanmm:lazy, r=nikomatsakis
Plumb obligations through librustc/infer

Like #32542, but more like #31867.

TODO before merge: make an issue for the propagation of obligations through... uh, everywhere... then replace the `#????`s with the actual issue number.

cc @jroesch
r? @nikomatsakis
2016-04-05 16:43:21 +05:30
Masood Malekghassemi
86071aca3d Address nits 2016-04-04 12:41:05 -07:00
Benjamin Herr
bcdaccfbbe librustc: replace span_bug calls with span_bug!() 2016-03-31 22:04:23 +02:00
Benjamin Herr
859b5a141c librustc: replace tcx.sess.bug calls with bug!() 2016-03-31 22:04:23 +02:00
Masood Malekghassemi
dcdf3d62c1 Plumb obligations through librustc/infer 2016-03-29 20:06:42 -07:00
Masood Malekghassemi
8cd0f0cc3a Refactor s.t. TypeRelation implementors don't escape InferCtxt 2016-03-28 22:10:26 -07:00
Masood Malekghassemi
f10a12c49f Remove some dead code 2016-03-28 22:10:15 -07:00