Commit Graph

70178 Commits

Author SHA1 Message Date
Niko Matsakis
5e0e8ae291 rename issue-21410.rs to ui/unboxed-closure-no-cyclic-sig.rs 2017-11-18 07:47:39 -05:00
Niko Matsakis
1e9de11e62 add a compile-fail test for cyclic generators being forbidden 2017-11-18 07:47:39 -05:00
Niko Matsakis
5e04c66885 remove the generator_sigs map, query, and plumbing 2017-11-18 07:47:38 -05:00
Niko Matsakis
7010d8cf51 add Yield and Return type into generator 2017-11-18 07:47:38 -05:00
Niko Matsakis
7c609eb090 TyClosure no longer needs to use freshen_closure_like
All the data is now part of its type.
2017-11-18 07:47:38 -05:00
Niko Matsakis
e6fca1d565 remove the closure_tys map from TypeckTables
The information we need is now part of the closure type.
2017-11-18 07:47:38 -05:00
Niko Matsakis
d0bda669ea move the signature into the closure type 2017-11-18 07:47:37 -05:00
Niko Matsakis
54f4f396d9 convert the closure_kinds map to just store the origin information
The closure kinds themselves are now completely found in the `ClosureSubsts`.
2017-11-18 07:47:37 -05:00
Niko Matsakis
eb26e30b91 kill the closure_kind query 2017-11-18 07:47:37 -05:00
Niko Matsakis
2dff9a49e5 stop using the closure_kinds query / table for anything
Closure Kind is now extracted from the closure substs exclusively.
2017-11-18 07:47:37 -05:00
Niko Matsakis
716f75b1b8 traits: prefer ClosureSubsts to InferCtxt::closure_kind 2017-11-18 07:47:36 -05:00
Niko Matsakis
decf3d33d0 make ty::Predicate carry a ClosureSubsts 2017-11-18 07:47:36 -05:00
Niko Matsakis
0ac8542abc make mk_closure take a ClosureSubsts 2017-11-18 07:47:36 -05:00
Niko Matsakis
3349e7bb45 thread the closure-kind through in the closure substs
Similar to how freshen handled things, but "always happening"; we can
thus remove the corresponding code from `freshen`.
2017-11-18 07:47:36 -05:00
Niko Matsakis
1d96819dc0 upvar.rs: rustfmt 2017-11-18 07:47:36 -05:00
Niko Matsakis
eab5b263e8 flatten the arguments to analyze_closure
They were oddly tupled.
2017-11-18 07:47:35 -05:00
Scott McMurray
cef45b3baf Undo the Sized specialization from Iterator::nth 2017-11-18 03:45:51 -08:00
bors
18250b0349 Auto merge of #46073 - GuillaumeGomez:rollup, r=GuillaumeGomez
Rollup of 4 pull requests

- Successful merges: #45767, #46044, #46066, #46071
- Failed merges:
2017-11-18 11:38:06 +00:00
Guillaume Gomez
5f1c37a0fa Rollup merge of #46071 - LooMaclin:fix-46001, r=estebank
Remove return_ty from Mir

https://github.com/rust-lang/rust/issues/46001
2017-11-18 12:15:24 +01:00
Guillaume Gomez
1389b6203e Rollup merge of #46066 - GuillaumeGomez:primitive-search, r=QuietMisdreavus
Fix primitive types not showing up

Fixes #46017.

r? @QuietMisdreavus
2017-11-18 12:15:23 +01:00
Guillaume Gomez
c36228f696 Rollup merge of #46044 - collinanderson:py3, r=kennytm
fix some python3 incompatibilities
2017-11-18 12:15:22 +01:00
Guillaume Gomez
cdadb6c725 Rollup merge of #45767 - QuietMisdreavus:who-docs-the-doc-tool, r=frewsxcv
rustdoc book: talk about #![doc(test(no_crate_inject))] and #![doc(test(attr(...)))]

While investigating https://github.com/rust-lang/rust/issues/45750 i noticed that `#![doc(test(attr(...)))]` wasn't documented at all. Since this is useful for making your examples follow the same coding guidelines as your code, i wanted to add it to the Rustdoc Book. I also added `#![doc(test(no_crate_inject))]` since it's used in the same place and might be useful for macro-heavy crates. I added mentions for these to "The `doc` attribute" as well as "Documentation tests" since it's useful information in both places.

Technically the step reordering in the second commit is gated on https://github.com/rust-lang/rust/pull/45764, since before that lands attributes from the doctest come before the ones from `#![doc(test(attr(...)))]`.
2017-11-18 12:15:21 +01:00
bors
130eaaeaba Auto merge of #46000 - kennytm:fix-45640-extern-type-ice-in-rustdoc, r=QuietMisdreavus
Support `extern type` in rustdoc.

Fixes #45640.

(cc #43467)
2017-11-18 09:18:13 +00:00
loomaclin
0b508846ec Remove return_ty from Mir
https://github.com/rust-lang/rust/issues/46001
2017-11-18 10:27:24 +03:00
bors
859c716fbb Auto merge of #45999 - jseyfried:def_site_span, r=nrc
Rename `Span::default` -> `Span::def_site`

I think the explicitness here is warranted.
c.f. #45934
r? @nrc
2017-11-18 05:36:37 +00:00
bors
79a138594f Auto merge of #45989 - davidtwco:issue-45360, r=nikomatsakis
MIR-borrowck: emit "`foo` does not live long enough" instead of borrow errors

Fixes #45360. As of writing, contains deduplication of existing errors.

r? @nikomatsakis
2017-11-18 03:11:18 +00:00
bors
8752aeed3a Auto merge of #45899 - eddyb:meta-race, r=alexcrichton
rustc_trans: atomically write .rmeta outputs to avoid races.

Fixes #45841 in a similar vein to how LLVM writes archives: write a temporary file and then rename it.

r? @alexcrichton
2017-11-18 00:44:58 +00:00
Wesley Wiser
f726634198 [incremental] Collect stats about duplicated edge reads from queries
Part of #45873
2017-11-17 18:03:29 -05:00
Keith Yeung
f8ba371b1e Add run-pass test for assignment to static mut 2017-11-17 14:22:04 -08:00
Keith Yeung
c9d1db7bc5 Do not registor borrows for unsafe lvalues 2017-11-17 14:16:37 -08:00
bors
18d8acf41d Auto merge of #45853 - nikomatsakis:chalk-simplify-hr-lub-glb, r=arielb1
Simplify higher-ranked LUB/GLB

This is a better version of https://github.com/rust-lang/rust/pull/44211. It still makes higher-ranked LUB/GLB into a hard equality test, however, it does try to identify that something changed and issue a notice to the user. I wroteup https://github.com/rust-lang/rust/issues/45852 as a tracking issue for this change.

Currently, this moves straight to a hard-error, on the basis that the crater run in #44211 saw no impact. It might be good to retest -- or perhaps to try for a warning period. Trying to do the latter in a precise way would be somewhat painful, but an imprecise way might suffice -- that is, we could issue warning *whenever* a LUB/GLB operation succeeds that will later fail, even if it doesn't ultimately impact the type check. I could experiment with this.

~~I am *mildly* wary about landing this independently of other code that moves to a universe-based system. In particular, I was nervous that this change would make coherence accepts new pairs of impls that will later be errors. I have the code for the universe-based approach available, I hope to open an PR and run some tests on its impact very shortly.~~ @arielb1 points out that I was being silly.

r? @arielb1
2017-11-17 22:16:11 +00:00
Guillaume Gomez
d86621f69e Add trait methods as well 2017-11-17 22:50:15 +01:00
Guillaume Gomez
85dcf2ecb6 Improve modal display and add JS events 2017-11-17 22:50:15 +01:00
Guillaume Gomez
aca1bd7d7e First step for important traits UI 2017-11-17 22:50:15 +01:00
QuietMisdreavus
be68d34a7e update links and tracking issue for doc_spotlight 2017-11-17 22:50:15 +01:00
QuietMisdreavus
831fd78341 add doc_highlight feature flag and tests 2017-11-17 22:50:15 +01:00
QuietMisdreavus
cbe4ac3079 spotlight Iterator/Read/Write impls on function return types 2017-11-17 22:50:15 +01:00
Guillaume Gomez
955c054ab1 Fix primitive types not showing up 2017-11-17 22:33:02 +01:00
David Wood
a1d55be3e1
Fixed bug with the implementation that was suppressing expected errors from the same line in other tests. 2017-11-17 19:58:11 +00:00
Marc-Antoine Perennou
90e54f4340 update openssl{,-sys} to fix build with libressl 2.6.x
Signed-off-by: Marc-Antoine Perennou <Marc-Antoine@Perennou.com>
2017-11-17 20:40:25 +01:00
Keith Yeung
3be597acf3 Allow assignment to static muts 2017-11-17 11:21:43 -08:00
Taylor Cramer
bc4810d907 Fix impl Trait Lifetime Handling
After this change, impl Trait existentials are
desugared to a new `abstract type` definition
paired with a set of lifetimes to apply.

In-scope generics are included as parents of the
`abstract type` generics. Parent regions are
replaced with static, and parent regions
referenced in the `impl Trait` type are duplicated
at the end of the `abstract type`'s generics.
2017-11-17 10:01:54 -08:00
Eduard-Mihai Burtescu
fab2532ef9 rustc_trans: move const & lvalue access helpers from adt. 2017-11-17 18:25:31 +02:00
David Wood
bf76ffe4e3
Corrected error output with many labels. 2017-11-17 16:20:34 +00:00
Niko Matsakis
9877fa048d use a BTreeMap instead of an FxHasMap for the skol regions
The ordering can affect error msg, and this map is not a high
performance pathway.
2017-11-17 10:32:53 -05:00
Niko Matsakis
ff8cd2e428 strip old lub-glb tests from librustc_driver
Good riddance.
2017-11-17 10:32:15 -05:00
Niko Matsakis
b224397b7c issue better error message when LUB/GLB diverge under new behavior 2017-11-17 10:32:15 -05:00
Niko Matsakis
397973b601 make LUB/GLB of higher-ranked things actually do EQ 2017-11-17 10:32:15 -05:00
bors
aabfed5e0c Auto merge of #45996 - eddyb:even-mirer-1, r=arielb1
MIR: hide .rodata constants vs by-ref ABI clash in trans.

Back in #45380, constants were copied into locals during MIR creation to ensure that arguments ' memory can be used by the callee, if the constant is placed in `.rodata` and the ABI passes it by-ref.

However, there are several drawbacks (see https://github.com/rust-lang/rust/pull/45380#discussion_r150447709), most importantly the complication of constant propagation (UB if a constant ends up in `Call` arguments) and inconveniencing analyses.

Instead, I've modified the `rustc_trans` implementation of calls to copy an `Operand::Constant` argument locally if it's not immediate, and added a test that segfaults without the copy.

cc @dotdash @arielb1
2017-11-17 13:30:24 +00:00
bors
02eed2e9a5 Auto merge of #46004 - michaelwoerister:cached-mir-wip-3, r=nikomatsakis
incr.comp.: Implement query result cache and use it to cache type checking tables.

This is a spike implementation of caching more than LLVM IR and object files when doing incremental compilation. At the moment, only the `typeck_tables_of` query is cached but MIR and borrow-check will follow shortly. The feature is activated by running with `-Zincremental-queries` in addition to `-Zincremental`, it is not yet active by default.

r? @nikomatsakis
2017-11-17 10:12:21 +00:00