Commit Graph

75521 Commits

Author SHA1 Message Date
Jeremy Fitzhardinge
6d534d5880 Clarify usage message for --remap-path-prefix. 2018-03-13 13:26:07 -07:00
bors
c29085761b Auto merge of #48735 - 1011X:master, r=alexcrichton
Move ascii::escape_default to libcore

As requested in #46409, the `ascii::escape_default` method has been added to the core library. All I did was copy over the `std::ascii` module file, remove the (redundant) `AsciiExt` trait, and change some of the documentation to match. None of the tests were changed.

I wasn't sure how to handle the annotations. For `EscapeDefault` and `escape_default()`, I changed them to `#[unstable(feature = "core_ascii", issue = "46409")]`. Is that alright? Or should I leave them as they were?
2018-03-13 19:50:13 +00:00
bobtwinkles
52bb99dcc7 Move 48070 test to ui 2018-03-13 14:52:11 -04:00
bobtwinkles
21a9770d38 Adds a test for #48070
Resolves #48070.
The bug itself was fixed by #48770, but that PR didn't add a test for it.
2018-03-13 14:21:51 -04:00
bors
8c4ff22a2d Auto merge of #48411 - nikomatsakis:chalkify-canonical-query-mir, r=eddyb
introduce canonical queries, use for normalization and dropck-outlives

This branch adds in the concept of a **canonicalized trait query** and uses it for three specific operations:

- `infcx.at(cause, param_env).normalize(type_foldable)`
    - normalizes all associated types in `type_foldable`
- `tcx.normalize_erasing_regions(param_env, type_foldable)`
    - like normalize, but erases regions first and in the result; this leads to better caching
- `infcx.at(cause, param_env).dropck_outlives(ty)`
    - produces the set of types that must be live when a value of type `ty` is dropped
    - used from dropck but also NLL outlives

This is a kind of "first step" towards a more Chalk-ified approach. It leads to a **big** speedup for NLL, which is basically dominated by the dropck-outlives computation. Here are some timing measurements for the `syn` crate (pre-branch measurements coming soon):

| Commit | NLL disabled | NLL enabled |
| ------- | --- | --- |
| Before my branch | 5.43s | 8.99s |
| After my branch | 5.36s | 7.25s |

(Note that NLL enabled still does *all the work* that NLL disabled does, so this is not really a way to compare the performance of NLL versus the AST-based borrow checker directly.) Since this affects all codepaths, I'd like to do a full perf run before we land anything.

Also, this is not the "final point" for canonicalization etc. I think canonicalization can be made substantially faster, for one thing. But it seems like a reasonable starting point for a branch that's gotten a bit larger than I would have liked.

**Commit convention:** First of all, this entire branch ought to be a "pure refactoring", I believe, not changing anything about external behavior. Second, I've tagged the most important commits with `[VIC]` (very important commit), so you can scan for those. =)

r? @eddyb
2018-03-13 15:24:45 +00:00
Niko Matsakis
17c4103f3f add "text" sections for things that seem likely to be a problem 2018-03-13 11:22:08 -04:00
Niko Matsakis
29dc902beb remove dead code 2018-03-13 11:22:08 -04:00
Niko Matsakis
d326738586 replace inline docs with references to rustc-guide 2018-03-13 11:22:08 -04:00
Niko Matsakis
fc04c41a40 add a debug assertion that only outlives-oblig. result from norm. 2018-03-13 11:22:08 -04:00
Niko Matsakis
6288faa3a3 trans_apply_param_substs => subst_and_normalize_erasing_regions
Consolidate `trans_apply_param_substs` and
`trans_apply_param_substs_env`. Also remove `trans_impl_self_ty`
2018-03-13 11:22:08 -04:00
Niko Matsakis
0d17f95465 short-circuit work when instantiating query responses
Also, perform substitution in smaller parts.
2018-03-13 11:22:08 -04:00
Niko Matsakis
03c5428be3 short-circuit dropck_outlives for simple cases 2018-03-13 11:22:07 -04:00
Niko Matsakis
1e4e632ad8 add regression tests for various MIR bugs that get fixed
Fixes #31567
Fixes #47470
Fixes #48132
Fixes #48179
2018-03-13 11:22:07 -04:00
Niko Matsakis
36e5092dfa add some debug output 2018-03-13 11:22:07 -04:00
Niko Matsakis
0a2ac85e3f move drain_fulfillment_cx_or_panic to be private to traits::trans 2018-03-13 11:22:07 -04: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
Niko Matsakis
211d9ad7db introduce tcx.normalize_erasing_regions(..) operaton [VIC] 2018-03-13 11:22:07 -04:00
Niko Matsakis
ca87d24467 introduce infcx.at(..).dropck_outlives(..) operaton [VIC]
Backed by a canonicalized query. This computes all the types/regions that need
to be live when the destructor runs (i.e., that the dtor may access).
2018-03-13 11:22:07 -04:00
Niko Matsakis
3a50b41da4 introduce infcx.at(..).normalize(..) operation [VIC]
It is backed by the new `normalize_projection_ty` query, which uses
canonicalization.
2018-03-13 11:22:05 -04:00
Oliver Schneider
0d88db1693
Reuse the query caching infrastructure for const eval 2018-03-13 16:21:54 +01:00
Niko Matsakis
8c024fdafb in Foo(X) dep-nodes, allow X to be a ty not a tt
Before, the identifier `X` was also used when generating a pattern
to match against the dep-node. So `Foo(DefId)` would generate a match
pattern like:

    match foo {
        Foo(DefId) => ...
    }

This does not scale to more general types like `&'tcx
Ty<'tcx>`. Therefore, we now require *exactly one* argument (the macro
was internally tupling anyway, and no actual nodes use more than one
argument), and then we can generate a fixed pattern like:

    match foo {
        Foo(arg) => ...
    }

Huzzah. (Also, hygiene is nice.)
2018-03-13 11:21:31 -04:00
Niko Matsakis
993c1488cc add canonicalize method to InferCtxt [VIC] 2018-03-13 11:21:31 -04:00
Niko Matsakis
80b4c45ee4 change ParamEnv::and to sometimes keep the environment [VIC]
In general, we've been moving towards a semantics where you can have
contradictory where-clauses, and we try to honor them.  There are
already existing run-pass tests where we take that philosophy as
well (e.g., `compile-fail/issue-36839.rs`). The current behavior of
`and`, where it strips the environment, breaks that code.
2018-03-13 11:21:31 -04:00
Niko Matsakis
64d4ed300b move ParamEnv methods from ty/util to ty/mod 2018-03-13 11:21:30 -04:00
Niko Matsakis
6d0f9319df refactor ParamEnv::empty(Reveal) into two distinct methods
- `ParamEnv::empty()` -- does not reveal all, good for typeck
- `ParamEnv::reveal_all()` -- does, good for trans
- `param_env.with_reveal_all()` -- converts an existing parameter environment
2018-03-13 11:21:30 -04:00
Niko Matsakis
1d377d10a1 add handy helper for Cell<usize>, used for perf stats 2018-03-13 11:21:30 -04:00
Niko Matsakis
652b3b71f3 random reformatting 2018-03-13 11:21:30 -04:00
Niko Matsakis
0037cca2f7 comment the purpose of TransNormalize 2018-03-13 11:21:30 -04:00
Niko Matsakis
d0aff859d5 make regions "traceable" so you can do infcx.at(..).eq(r1, r2) 2018-03-13 11:21:30 -04:00
Niko Matsakis
10ae216b75 fix typo in comment 2018-03-13 11:21:30 -04:00
Niko Matsakis
5ddcd09b53 add TypeRelation and Lift impls for Kind 2018-03-13 11:21:29 -04:00
Niko Matsakis
23837c1901 improve TypeFoldable/Lift macros and make a bunch of stuff use them
Improvements:

- Use Clone not Copy for the "simple cases"
- Separate TypeFoldable and Lift for the "simple cases"
- Support generics type parameters
- Support named fields in enum variants
- etc
2018-03-13 11:21:29 -04:00
Niko Matsakis
f873c1e2db require Lifted types to outlive 'tcx 2018-03-13 11:21:29 -04:00
Oliver Schneider
af099bb240
Cache const eval queries 2018-03-13 15:57:59 +01:00
Alex Crichton
04442af18b rustc: Don't invoke lld with an @-file
Looks like LLD doesn't support this yet, so always try to use the OS before we
fall back to using `@`
2018-03-13 07:54:03 -07:00
bors
e65547d4fa Auto merge of #48958 - alexcrichton:update-rls-rustc, r=sfackler
Update the rls-rustc package

Should hopefully fix compiling the rls!
2018-03-13 09:18:12 +00:00
Phlosioneer
c1337cda4c Update -Wall message based on feedback
The reference to -Wunused was removed, and some phrasing was changed.
2018-03-12 21:26:51 -04:00
Mark Mansi
5a073d496d Move librustc_typeck READMEs to rustc guide 2018-03-12 20:05:18 -05:00
bors
c7cbe14264 Auto merge of #48955 - kennytm:rollup, r=kennytm
Rollup of 13 pull requests

- Successful merges: #48201, #48705, #48725, #48824, #48877, #48880, #48887, #48928, #48934, #48480, #48631, #48898, #48954
- Failed merges:
2018-03-12 23:47:10 +00:00
Guillaume Gomez
da257b8fec Add missing examples 2018-03-12 22:42:23 +01:00
QuietMisdreavus
c80220436b big fences to show that ``rust is the same as `` 2018-03-12 16:15:38 -05:00
kennytm
99d0ac0b65
Rollup merge of #48954 - GuillaumeGomez:missing-links-fmt, r=QuietMisdreavus
Add missing links
2018-03-13 05:02:03 +08:00
kennytm
e30d89d7a5
Rollup merge of #48898 - GuillaumeGomez:remove-empty-section, r=QuietMisdreavus
Remove auto trait implementation section when empty

Fixes #48882.
2018-03-13 05:01:37 +08:00
kennytm
15d71d3285
Rollup merge of #48631 - focusaurus:remember-collapse-setting, r=QuietMisdreavus
Remember state of top-level collapse toggle widget

This change allows the big top-right expand/collapse toggle to remember its setting across navigation or page reloads. Prior to this change, there was this annoyance:

- browse to some docs
- Click the minus button to collapse them
- browse to other docs (or reload the page)
- Everything is expanded again

The solution is based on storing a simple boolean flag in localStorage. I think it's a good improvement, but it does introduce the following potentially surprising behavior:

- browse to some docs
- click the minus button to collapse them
- click to expand a particular item (not the main top-right big one)
- reload the page, everything is collapsed

Paired with @debugsteven on this.
2018-03-13 05:01:15 +08:00
kennytm
684c6d17c5
Rollup merge of #48480 - jethrogb:patch-5, r=alexcrichton
Clarify interfaction between File::set_len and file cursor
2018-03-13 05:00:26 +08:00
Alex Crichton
9b1c69ec93 Update the rls-rustc package
Should hopefully fix compiling the rls!
2018-03-12 13:02:49 -07:00
Guillaume Gomez
366ee8518f Fix blink when main theme is selected 2018-03-12 20:51:23 +01:00
Guillaume Gomez
bda5a45793 Add missing links 2018-03-12 20:47:34 +01:00
Bryan Drewery
c63d5e04df Update libc to 0.2.39
CC #42681
2018-03-12 10:07:48 -07:00
kennytm
34d9ffec17
Rollup merge of #48934 - Phlosioneer:42453-debug-hygene, r=petrochenkov
Fix hygene issue when deriving Debug

The code for several of the core traits doesn't use hygenic macros.
This isn't a problem, except for the Debug trait, which is the only
one that uses a variable, named "builder".

Variables can't share names with unit structs, so attempting to
[derive(Debug)] on any type while a unit struct with the name
"builder" was in scope would result in an error.

This commit just changes the name of the variable to
"__debug_trait_builder", because I couldn't figure out how to get a
list of all unit structs in-scope from within the derive expansion
function. If someone wants to have a unit struct with
the exact name "__debug_trait_builder", they'll just have to do it
without a [derive(Debug)].

I also checked the implementations of the other built-in derives to
ensure they didn't declare any variables.
2018-03-13 00:54:33 +08:00