Commit Graph

54542 Commits

Author SHA1 Message Date
Niko Matsakis
38995c9029 consult cache in projection 2016-05-31 19:59:33 -04:00
Niko Matsakis
6751d68f25 cleanup imports for cache 2016-05-31 19:59:03 -04:00
Niko Matsakis
5368432538 thread vtable-closure obligations to result
the vtable.nested obligations were being dropped on the floor.
2016-05-31 19:58:44 -04: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
d042ce2ed3 add a snapshottable hashmap 2016-05-31 19:44:05 -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
b40529c5a9 projection predicates can be copy 2016-05-31 19:44:05 -04:00
Niko Matsakis
9ef768c811 add trailing comma 2016-05-31 19:44:04 -04:00
Niko Matsakis
de6c52d5ea make region-param-def encoding more DRY
we used to have two separate routines, one in tyencode/tydecode, and one
in encode/decode.
2016-05-31 19:44:04 -04:00
Niko Matsakis
8770d0f34a remove VerifyRegSubReg and cleanup region infer
We used to make region->region edges part of the verify set, but this
change stores them like other edges, as a full-fledged constraint.
Besides making the code somewhat cleaner, this allows them to be more
easily dropped as part of `pop_skolemized`. This change also refactors
the code a bit to remove some intermediate data structures that are no
longer particular useful (e.g., VarValue).
2016-05-31 19:43:38 -04:00
Niko Matsakis
cacbb2147f add trailing comma 2016-05-31 19:43:38 -04:00
Niko Matsakis
7cf63a2a72 more debug dumping in trans 2016-05-31 19:43:38 -04:00
Niko Matsakis
d3afbd6c4d more debug dumping in traits 2016-05-31 19:43:38 -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
52b2db1cca warn if leak-check relies on LBRs that will change
When we do a "HR subtype" check, we replace all late-bound regions (LBR)
in the subtype with fresh variables, and skolemize the late-bound
regions in the supertype. If those skolemized regions from the supertype
wind up being super-regions (directly or indirectly) of either

- another skolemized region; or,
- some region that pre-exists the HR subtype check
  - e.g., a region variable that is not one of those created
    to represent bound regions in the subtype

then the subtype check fails.

What will change when we fix #32330 is that some of the LBR in the
subtype may become early-bound. In that case, they would no longer be in
the "permitted set" of variables that can be related to a skolemized
type.

So the foundation for this warning is to collect variables that we found
to be related to a skolemized type. For each of them, we have a
`BoundRegion` which carries a `Issue32330` flag. We check whether any of
those flags indicate that this variable was created from a lifetime
that will change from late- to early-bound. If so, we issue a warning
indicating that the results of compilation may change.

This is imperfect, since there are other kinds of code that will not
compile once #32330 is fixed. However, it fixes the errors observed in
practice on crater runs.
2016-05-31 19:41:25 -04:00
Niko Matsakis
08034eb1a5 add Issue32330 warning marker to bound regions
This indicates whether this `BoundRegion` will change from late to early
bound when issue 32330 is fixed. It also indicates the function on
which the lifetime is declared.
2016-05-31 19:41:25 -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
Niko Matsakis
aecce2ba6e add flag for ReSkolemized 2016-05-31 19:12:35 -04:00
bors
601eb13dc4 Auto merge of #33857 - alexcrichton:new-stage0, r=nikomatsakis
mk: Prepare for a new stage0 compiler

This commit prepares the source for a new stage0 compiler, the 1.10.0 beta
compiler. These artifacts are hot off the bots and should be ready to go.
2016-05-31 16:12:16 -07:00
Alex Crichton
fa45670ce4 mk: Prepare for a new stage0 compiler
This commit prepares the source for a new stage0 compiler, the 1.10.0 beta
compiler. These artifacts are hot off the bots and should be ready to go.
2016-05-31 16:11:49 -07:00
Jack O'Connor
8be9625e2e document that Files close themselves automatically 2016-05-31 17:12:08 -04:00
Peter Atashian
d34ad3c3b2
Print linker arguments if calling the linker fails
Needed to diagnose https://github.com/rust-lang/rust/issues/33844

Signed-off-by: Peter Atashian <retep998@gmail.com>
2016-05-31 16:29:12 -04:00
Alex Crichton
ac19420535 rustbuild: Clean more on make clean
Be sure to not use the old build cache for the bootstrap build system nor the
old caches of the compiler/cargo extractions (in case something went wrong).

Closes #33986
2016-05-31 13:24:28 -07:00
Ivan Shapovalov
7b589f5afb hoedown: fix trigger of -Werror=misleading-indentation 2016-05-31 21:38:29 +03:00
Ariel Ben-Yehuda
e3cff797a7 normalize types in MIR typeck after erasing regions 2016-05-31 18:42:47 +03:00
Ms2ger
7463c95183 Take the def_map argument to TyCtxt::create_and_enter out of its RefCell. 2016-05-31 09:21:49 +02:00
bors
298730e703 Auto merge of #33960 - tbu-:pr_ref_clone_overflow, r=Aatch
Prevent the borrow counter from overflowing in `Ref::clone`

Fixes #33880.
2016-05-30 23:09:00 -07:00
Alex Crichton
b64c9d5670 std: Clean out old unstable + deprecated APIs
These should all have been deprecated for at least one cycle, so this commit
cleans them all out.
2016-05-30 20:46:32 -07:00
Zack M. Davis
06ebda837e revise explanation for E0429 (focus on error first) 2016-05-30 16:45:41 -07:00
bors
a967611d8f Auto merge of #33968 - srinivasreddy:slice.rs, r=Manishearth
Correct grammar; and remove redundant comment
2016-05-30 16:34:34 -07:00
Zack M. Davis
06c9e0f5f8 stable features lint warning mentions version stabilized
To accomplish this, we alter the checks in `rustc::middle::stability` to
use the `StabilityLevel` defined in `syntax::attr` (which includes the
version in which the feature was stabilized) rather than the local
`StabilityLevel` in the same module, and make the
`declared_stable_lang_features` field of
`syntax::feature_gate::Features` hold a Vec of feature-name, span
tuples (in analogy to the `declared_lib_features` field) rather than
just spans.

This is in the matter of issue #33394.
2016-05-30 15:17:13 -07:00
bors
b522b25a41 Auto merge of #33909 - michaelwoerister:frame-pointer-fix, r=nikomatsakis
Emit "no-frame-pointer-elim" attribute for closures, shims, and glue.

This will hopefully let `perf` give better backtraces.
r? @nikomatsakis
2016-05-30 11:01:55 -07:00
Srinivas Reddy Thatiparthy
87bc04f45c Correct grammar; and remove redundant comment 2016-05-30 22:38:07 +05:30
Daan Sprenkels
cde0f94a52 librustc_resolve: make sure pattern def gets recorded if resolve_path returns Err(true)
In 1a374b8, (pr #33046) fixed the error reporting of a specific
case, but the change that was introduced did not make sure that
`record_def` was called in all cases, which lead to an ICE in [1].
This change restores the original `else` case, but keeps the changes
that were committed in 1a374b8.

This commit fixes issue #33293.

[1] `rustc::middle::mem_categorization::MemCategorizationContext::cat_pattern_`
2016-05-30 18:31:01 +02:00
bors
f3bfa313ec Auto merge of #33965 - Manishearth:rollup, r=Manishearth
Rollup of 5 pull requests

- Successful merges: #33867, #33926, #33942, #33958, #33964
- Failed merges:
2016-05-30 08:13:08 -07:00
Manish Goregaokar
26c209897f Rollup merge of #33964 - Ms2ger:refcell-resolutions, r=Manishearth
Move driver::Resolutions::def_map out of its RefCell.
2016-05-30 20:35:47 +05:30
Manish Goregaokar
5ef7c43a76 Rollup merge of #33958 - kennytm:patch-1, r=GuillaumeGomez
Use Path::is_dir() in fs::read_dir()'s example.

Basically reverts #25508. The `is_dir()` function has been stable since 1.5.0.
2016-05-30 20:35:47 +05:30
Manish Goregaokar
066fc8d9a6 Rollup merge of #33942 - srinivasreddy:rustfmt_llvm_folder, r=nrc
run rustfmt on librustc_llvm folder
2016-05-30 20:35:46 +05:30
Manish Goregaokar
2b5724f0c4 Rollup merge of #33926 - jseyfried:fix_derive_span, r=nrc
Fix the span of generated `#[derive_*]` attributes

Fixes #33571.
r? @nrc
2016-05-30 20:35:46 +05:30
Manish Goregaokar
653ce3e525 Rollup merge of #33867 - oli-obk:rustdoc_variant_types, r=GuillaumeGomez
print enum variant fields in docs

Right now we are repeating enum variants at the top, because the fields aren't shown with the actual docs. It's very annoying to have to scroll up and down to have both docs and field info. For struct variants we already list the fields.

enum docs look like this after this PR:

![screenshot from 2016-05-25 14-02-42](https://cloud.githubusercontent.com/assets/332036/15539231/84b018cc-2281-11e6-9666-1063655931f4.png)

There are degenerate cases for enum tuple variants with lots of fields:

![screenshot from 2016-05-25 14-01-00](https://cloud.githubusercontent.com/assets/332036/15539260/91e537ca-2281-11e6-8bf1-a3d6b2e78f65.png)

I was thinking that we could move the docs below the variant (slightly indented) or list the variant fields vertically instead of horizontally

r? @steveklabnik
2016-05-30 20:35:46 +05:30
Oliver Schneider
b0c7033042
print enum variant fields in docs 2016-05-30 16:11:53 +02:00
Ms2ger
989a3034db Move driver::Resolutions::def_map out of its RefCell. 2016-05-30 15:17:16 +02:00
bors
5da602bda3 Auto merge of #33959 - Manishearth:rollup, r=Manishearth
Rollup of 8 pull requests

- Successful merges: #33793, #33893, #33912, #33913, #33914, #33917, #33937, #33938
- Failed merges:
2016-05-30 02:54:00 -07:00
Manish Goregaokar
9d2ec40b74 Rollup merge of #33938 - srinivasreddy:rustfmt_libunwind, r=Manishearth
run rustfmt on libunwind
2016-05-30 15:19:01 +05:30
Manish Goregaokar
21dc6c2678 Rollup merge of #33937 - srinivasreddy:rustfmt_librand, r=GuillaumeGomez
run rustfmt on librand folder
2016-05-30 15:19:01 +05:30
Manish Goregaokar
0072e6b9e3 Rollup merge of #33917 - srinivasreddy:rustfmt_liballoc, r=GuillaumeGomez
rustfmt liballoc folder
2016-05-30 15:19:00 +05:30
Manish Goregaokar
c41e9d9f40 Rollup merge of #33914 - GuillaumeGomez:improve_err_expl, r=GuillaumeGomez
Improve err expl

r? @steveklabnik
2016-05-30 15:19:00 +05:30
Manish Goregaokar
6c6dcc9539 Rollup merge of #33913 - GuillaumeGomez:improve_e0133, r=GuillaumeGomez
Improve E0133 error explanation

r? @steveklabnik
2016-05-30 15:19:00 +05:30