75483 Commits

Author SHA1 Message Date
kennytm
6639b60ec6
Rollup merge of #48966 - retep007:hir-fingerprint-optimization, r=michaelwoerister
Speed up SVH computation by using Fingerprint::combine()

Fix #47297
2018-03-15 00:15:55 +08:00
kennytm
55e5ba3b81
Rollup merge of #48991 - jsgf:remap-path-prefix, r=estebank
Clarify usage message for --remap-path-prefix.
2018-03-15 00:15:54 +08:00
kennytm
4074bafcf1
Rollup merge of #48988 - bobtwinkles:add_48070_test, r=nikomatsakis
Add a test for #48070

Resolves #48070.
The bug itself was fixed by #48770, but that PR didn't add a test for it.

r? @nikomatsakis
2018-03-15 00:15:52 +08:00
kennytm
088bf643bd
Rollup merge of #48981 - alexcrichton:lld-no-at-file, r=michaelwoerister
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 `@`

cc https://github.com/rust-lang/rust/issues/48948
2018-03-15 00:15:51 +08:00
kennytm
ff80cde998
Rollup merge of #48971 - mark-i-m:fix_readmes, r=nikomatsakis
Move librustc_typeck READMEs to rustc guide

cc https://github.com/rust-lang-nursery/rustc-guide/issues/2 and #48478

Don't merge this before https://github.com/rust-lang-nursery/rustc-guide/pull/85

r? @nikomatsakis
2018-03-15 00:15:50 +08:00
kennytm
c144fb79cd
Rollup merge of #48970 - GuillaumeGomez:doc-examples, r=QuietMisdreavus
Add missing examples

r? @QuietMisdreavus
2018-03-15 00:15:49 +08:00
kennytm
57f76783be
Rollup merge of #48964 - QuietMisdreavus:picket-fence, r=GuillaumeGomez
tweak code fences in the rustdoc book

You can stack backticks to create "big code fences" if you're documenting some markdown and need to have code fences inside your code fences. This is especially important in this spot in the Rustdoc Book, because we're showing that using no language specifier on your code blocks is interpreted as using `rust`, but the code blocks here lose their code fences!

`````````markdown
``````markdown
Just showing some recursion, nbd.

```rust
println!("sup");
```
``````

(If you have edit powers in the rust-lang/rust repo, hit the edit button to view the source and see even more recursion :P)
`````````
2018-03-15 00:15:47 +08:00
kennytm
b5f102c7ae
Rollup merge of #48840 - varkor:idxset-cleanup, r=pnkfelix
Remove some unnecessary IdxSet methods

This replaces `IdxSet:: reset_to_empty` with `IdxSet:: clear`, and `IdxSet::elems`/`IdxSet::each_bit` with `IdxSet::iter`. Based on some [comments on #rustc](https://botbot.me/mozilla/rustc/2018-01-23/?msg=96063396).

r? @pnkfelix
2018-03-15 00:15:46 +08:00
kennytm
c65ee94365
Rollup merge of #48831 - GuillaumeGomez:fix-theme-blink, r=QuietMisdreavus
Fix blink when main theme is selected

r? @QuietMisdreavus
2018-03-15 00:15:45 +08:00
kennytm
4ea78d4c84
Rollup merge of #48765 - Phlosioneer:10234-wall-help-message, r=estebank
Add info message for -Wall command

Users coming from other languages (namely C and C++) often expect
to use a -Wall flag. Rustc doesn't support that, and previously it
simply printed that it didn't recognize the "all" lint.

This change makes rustc print out a help message, explaining:
- Why there is no -Wall flag
- How to view all the available warnings
- Point out that the most commonly used warning is -Wunused
- Instead of using a command-line flag, the user should consider
  a !#[warn(unused)] directive in the root of their crate.

I tried to keep the language consistent with the other usage help. Comment if I should change anything.

closes #10234, if accepted.
2018-03-15 00:15:44 +08:00
bors
d089fe974e Auto merge of #48811 - Zoxc:syntax-globals, r=michaelwoerister
Remove syntax and syntax_pos thread locals

This moves `syntax` and `syntax_pos` globals into a struct which are pointed to by thread locals. Most of the changes here are indentation changes in test. It would probably be a good idea to ignore whitespace changes while reviewing. Some indentation is unchanged to avoid merge conflicts.

r? @michaelwoerister
2018-03-14 12:44:17 +00:00
John Kåre Alsaker
cbdf4ec03e Remove syntax and syntax_pos thread locals 2018-03-14 11:56:01 +01:00
bors
24e679c375 Auto merge of #48859 - bdrewery:update-libc, r=alexcrichton
Update libc to 0.2.39

CC #42681

r? @alexcrichton
2018-03-14 08:20:23 +00:00
bors
fab632f975 Auto merge of #48684 - GuillaumeGomez:put-back-ui-json-check, r=petrochenkov
Put back ui json check

r? @petrochenkov
2018-03-14 01:40:42 +00:00
Guillaume Gomez
2e104a77cf update tests 2018-03-14 00:53:24 +01:00
Guillaume Gomez
8c75e18e5d test for putting back check on json 2018-03-14 00:52:17 +01:00
Peter Hrvola
2f2e17341c Speed up SVH computation by using Fingerprint::combine()
Fix #47297

r? @michaelwoerister
2018-03-14 00:10:57 +01:00
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
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
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