Commit Graph

75740 Commits

Author SHA1 Message Date
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
Simon Sapin
4897935e86 Add hexadecimal formatting of integers with fmt::Debug
This can be used for integers within a larger types which implements Debug
(possibly through derive) but not fmt::UpperHex or fmt::LowerHex.

```rust
assert!(format!("{:02x?}", b"Foo\0") == "[46, 6f, 6f, 00]");
assert!(format!("{:02X?}", b"Foo\0") == "[46, 6F, 6F, 00]");
```

RFC: https://github.com/rust-lang/rfcs/pull/2226
2018-03-13 14:53:06 +01:00
Anthony Defranceschi
a48224b9ac Add a section for using assertions into doc tests.
See #47945.
2018-03-13 14:20:57 +01: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
0ca9a4c55b Move librustdoc readme to rustc guide 2018-03-12 20:09:50 -05: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
Alex Crichton
0511077ef2 rustc: Add sha to the x86 feature whitelist
This'll help us bind the [`SHA` intrinsics][intr] in stdsimd!

[intr]: https://software.intel.com/sites/landingpage/IntrinsicsGuide/#othertechs=SHA
2018-03-12 14:33:37 -07: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
74f5dd07cf rustc: Start a custom cabi module for wasm32
It actually was already using the `cabi_asmjs` module but that was by accident,
so route the new `wasm32-unknown-unknown` target to a new `cabi_wasm32` module.
The first entries in this module are to use `signext` and `zeroext` for types
that are under 32 bytes in size

Closes rust-lang-nursery/rust-wasm#88
2018-03-12 13:09:03 -07: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
Bastien Orivel
a67e0723a3 Dedupe rand 2018-03-12 20:23:23 +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
kennytm
14574db793
Rollup merge of #48928 - zackmdavis:span_suggestion_field_day, r=estebank
in which some labels and notes are upgraded to structured suggestions

(Meanwhile, a couple of parse-fail tests are moved to UI tests so that
the reader can see the new output, and an existing UI test is given a
more evocative name.)

r? @estebank
2018-03-13 00:54:32 +08:00
kennytm
2d13cc4d79
Rollup merge of #48887 - alexcrichton:update-stdsimd, r=kennytm
Update stdsimd module

Pulls in a redesigned `std::simd` module as well as a replacement for the
`is_target_feature_detected!` macro
2018-03-13 00:54:31 +08:00
kennytm
3d2db9bba8
Rollup merge of #48880 - petrochenkov:badstderr, r=kennytm
tidy: Add a check for stray `.stderr` and `.stdout` files in UI test directories
2018-03-13 00:54:30 +08:00