Commit Graph

84763 Commits

Author SHA1 Message Date
bors
01ca85becd Auto merge of #55093 - nikomatsakis:nll-issue-54574-multisegment-path, r=pnkfelix
nll type annotations in multisegment path

This turned out to be sort of tricky. The problem is that if you have a path like

```
<Foo<&'static u32>>::bar
```

and it comes from an impl like `impl<T> Foo<T>` then the self-type the user gave doesn't *directly* map to the substitutions that the impl wants. To handle this, then, we have to preserve not just the "user-given substs" we used to do, but also a "user-given self-ty", which we have to apply later. This PR makes those changes.

It also removes the code from NLL relate-ops that handled canonical variables and moves to use normal inference variables instead. This simplifies a few things and gives us a bit more flexibility (for example, I predict we are going to have to start normalizing at some point, and it would be easy now).

r? @matthewjasper -- you were just touching this code, do you feel comfortable reviewing this?

Fixes #54574
2018-10-16 23:27:43 +00:00
Niko Matsakis
b70b4a6814 add ~ERROR annotations 2018-10-16 18:11:55 -04:00
Niko Matsakis
1008539ca6 fix comment 2018-10-16 17:58:32 -04:00
bors
bef62ccddb Auto merge of #54486 - orium:obligation-forest-graphviz, r=nikomatsakis
Added graphviz visualization for obligation forests.

This can be a big help when debugging the trait resolver.
2018-10-16 20:30:43 +00:00
bors
8a7048b72b Auto merge of #54251 - varkor:silence-bad_style, r=Manishearth
Make `bad_style` a silent alias for `nonstandard_style`

Now only `nonstandard_style` is suggested in `rustc -W help`, but `bad_style` will not produce a warning. Closes #41646.

r? @Manishearth
2018-10-16 18:01:41 +00:00
bors
99ab2f4071 Auto merge of #54937 - alexcrichton:update-stdsimd, r=nikomatsakis
Update stdsimd submodule

Should hopefully bring documentation for wasm intrinsics online!
2018-10-16 15:16:12 +00:00
bors
5ea8eb55cd Auto merge of #55067 - ljedrz:generic_iterator_related_improvements, r=petrochenkov
A few iterator-related improvements

- typeck: don't collect into a vector when unnecessary
- create only one vector when winnowing candidates
- change a cloning map to `into_iter`
2018-10-16 07:04:10 +00:00
bors
df0d6ad9c1 Auto merge of #55023 - euclio:llvm-error-handler, r=cuviper
Exit with code 101 on fatal codegen errors

Fixes #54992.

This PR installs a custom fatal error handler that prints the error from LLVM and exits with 101. There should be no visible change in the output from LLVM. This allows distinguishing a fatal LLVM error with a compilation error by exit code.

This PR also modifies the LLVM codegen backend to ICE instead of emitting a fatal error when encountering a LLVM worker thread panic for the same reason.

r? @cuviper
2018-10-16 02:06:26 +00:00
Niko Matsakis
7ce2e7a5fa fix mir-opt test 2018-10-15 16:25:08 -04:00
Niko Matsakis
087d12972e pacify the mercilous tidy
(long lines)
2018-10-15 16:25:08 -04:00
Niko Matsakis
2e4e983356 update tests 2018-10-15 16:25:08 -04:00
Niko Matsakis
ba20806e46 avoid type variables in the self-type 2018-10-15 16:25:08 -04:00
Niko Matsakis
16a382407b pass along user_self_ty 2018-10-15 16:25:08 -04:00
Niko Matsakis
547182ea94 handle user-self-type for def-ids 2018-10-15 16:25:08 -04:00
Niko Matsakis
0e1d3624e9 pull the common code across user-ty variants up top 2018-10-15 16:25:08 -04:00
Niko Matsakis
1443ac0aa7 introduce a more expressive UserSubsts 2018-10-15 16:25:08 -04:00
Niko Matsakis
2a7fc227a6 introduce FnDef and AdtDef to UserTypeAnnotation 2018-10-15 16:24:46 -04:00
Niko Matsakis
aed6e4a083 introduce a UserTypeAnnotation enum 2018-10-15 16:24:46 -04:00
Niko Matsakis
e339e84fff move force_instantiate_unchecked to be local to nll_relate code 2018-10-15 16:24:46 -04:00
Niko Matsakis
e7ed997d87 extract type_relate into the inference context as nll_relate
The name is not great. Nor is the existence of this code great.  It
should be merged with the main "type relating code" at some point.
2018-10-15 16:24:46 -04:00
Niko Matsakis
b6a080e9d7 rework relate_type_and_user_type to use type inference variables
We used to use a kind of "home-grown" variant where we tracked the
value of each canonical variable.
2018-10-15 16:24:46 -04:00
Niko Matsakis
a3409a1640 make instantiate_canonical_with_fresh_inference_vars public again
This used to be public, then I made it private in a previous PR, but
there really wasn't a strong need for that.
2018-10-15 16:24:31 -04:00
Niko Matsakis
ca52427d06 make TypeRelating take an infcx again
At some point, I had thought to use this code to handle equality
comparisons for the `IfEq` verify bounds; at that point, we might not
have had an infcx to talk about. But we wound up doing "SCC
representatives" instead, so that's fine.
2018-10-15 16:05:31 -04:00
Niko Matsakis
24bee005b6 add force_instantiate_unchecked method 2018-10-15 16:05:31 -04:00
Niko Matsakis
4b69edc19e rename to user_substs_applied_to_def for consistency 2018-10-15 16:05:31 -04:00
bors
46880f41b7 Auto merge of #55095 - Manishearth:rollup, r=Manishearth
Rollup of 11 pull requests

Successful merges:

 - #54820 (Closes #54538: `unused_patterns` lint)
 - #54963 (Cleanup rustc/session)
 - #54991 (add test for #23189)
 - #55025 (Add missing lifetime fragment specifier to error message.)
 - #55047 (doc: make core::fmt::Error example more simple)
 - #55048 (Don't collect to vectors where unnecessary)
 - #55060 (clarify pointer add/sub function safety concerns)
 - #55062 (Make EvalContext::step public again)
 - #55066 (Fix incorrect link in println! documentation)
 - #55081 (Deduplicate tests)
 - #55088 (Update rustc documentation link)

Failed merges:

r? @ghost
2018-10-15 19:50:50 +00:00
Manish Goregaokar
562625dda2
Rollup merge of #55088 - juchiast:master, r=varkor
Update rustc documentation link

Old link: http://manishearth.github.io/rust-internals-docs/rustc/
New link: https://doc.rust-lang.org/nightly/nightly-rustc/rustc/
2018-10-15 10:15:23 -07:00
Manish Goregaokar
4d837bef05
Rollup merge of #55081 - sinkuu:dedup_test, r=Manishearth
Deduplicate tests

* [`ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-4`](0c665e20db/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-4.rs)
and [`ex3-both-anon-regions-both-are-structs-3`](0c665e20db/src/test/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-both-are-structs-3.rs)
* [`ui/lint/lint-group-style`](0c665e20db/src/test/ui/lint/lint-group-style.rs) and [`lint-group-nonstandard-style`](0c665e20db/src/test/ui/lint/lint-group-nonstandard-style.rs)
2018-10-15 10:15:22 -07:00
Manish Goregaokar
6993a051e7
Rollup merge of #55066 - iaz3:patch-1, r=sfackler
Fix incorrect link in println! documentation

The eprintln! link was incorrectly linking to eprint! instead
2018-10-15 10:15:21 -07:00
Manish Goregaokar
96ab4a89ee
Rollup merge of #55062 - bjorn3:ecx-step-public, r=oli-obk
Make EvalContext::step public again

This is needed for priroda

Fixes #55061
2018-10-15 10:15:20 -07:00
Manish Goregaokar
8e42f01f43
Rollup merge of #55060 - jannic:patch-1, r=joshtriplett
clarify pointer add/sub function safety concerns

Ralf Jung made the same changes to the offset functions' documentation
in commit fb089156. As add/sub just call offset, the same limitation
applies here, as well.

I did not copy the whole explanation ("In particular, the resulting pointer may *not* be used to access a different allocated object [...]") because I'd consider that as being too repetitive. The documentation of add/sub already refers to the offset function, so people interested in the details can look it up, there.
But changing 'an object' to 'the same object' is a small change which improves clarity a lot.
2018-10-15 10:15:19 -07:00
Manish Goregaokar
2e8b61dce6
Rollup merge of #55048 - ljedrz:begone_vecc, r=estebank
Don't collect to vectors where unnecessary

This removes 3 vector allocations and a call to `cloned()`.
2018-10-15 10:15:17 -07:00
Manish Goregaokar
dc87247538
Rollup merge of #55047 - tshepang:simple, r=alexcrichton
doc: make core::fmt::Error example more simple
2018-10-15 10:15:16 -07:00
Manish Goregaokar
78765e5244
Rollup merge of #55025 - ehuss:missing-lifetime-err-msg, r=petrochenkov
Add missing lifetime fragment specifier to error message.

A very minor issue, `lifetime` was missing from the error list.
I left `literal` in the list, even though it is unstable. It looks like it may stabilize soon anyways.
2018-10-15 10:15:15 -07:00
Manish Goregaokar
defcb164b1
Rollup merge of #54991 - euclio:issue-23189, r=tmandry
add test for #23189

Fixes #23189
2018-10-15 10:15:13 -07:00
Manish Goregaokar
3ffb16f6c6
Rollup merge of #54963 - ljedrz:cleanup_rustc_session, r=varkor
Cleanup rustc/session

- improve allocations
- improve common patterns
- use `to_owned` when no string conversion is needed
- move `const`s up to improve readability
- whitespace & formatting improvements
2018-10-15 10:15:12 -07:00
Manish Goregaokar
7ba24e8fcf
Rollup merge of #54820 - kleimkuhler:issue-54538-unused_patterns-lint, r=nikomatsakis
Closes #54538: `unused_patterns` lint

Closes #54538

r? @nikomatsakis
2018-10-15 10:15:11 -07:00
bors
5a52983d69 Auto merge of #54858 - nikomatsakis:universes-refactor-2, r=scalexm
second round of refactorings for universes

A second round of (what I believe to be) "no functional change" refactorings, taken from my universes branch.

r? @scalexm
2018-10-15 16:46:55 +00:00
Niko Matsakis
05f67ca1a2 remove the sub/super terminology for universes
Instead, we talk about:

- creating the "next" universe
- universes "extending" one another
- and `u1.can_name(u2)`, meaning that `u1` contains all names from `u2`
2018-10-15 11:42:07 -04:00
Niko Matsakis
f419077811 pacify the mercilous tidy with rustfmt 2018-10-15 11:42:07 -04:00
Niko Matsakis
be02f74ea9 remove dead iterator code 2018-10-15 11:42:07 -04:00
Niko Matsakis
6ace43cf77 hide SmallCanonicalVarValues in OriginalQueryValues struct 2018-10-15 11:42:07 -04:00
Niko Matsakis
da76b4d4e1 convert UniverseIndex into a newtype_index! 2018-10-15 11:42:07 -04:00
Niko Matsakis
460915be73 make UniverseIndex hashable, rename "sub-" to "superuniverse"
The only name was silly. U1 can contain everything from U0 *plus* more
things.
2018-10-15 11:42:07 -04:00
Niko Matsakis
28df2bf7b5 control canonicalization with a trait vs bools 2018-10-15 11:42:07 -04:00
bors
4f9b581f71 Auto merge of #54917 - varkor:unused-which, r=cramertj
Unused result warning: "X which must" ↦ "X that must"

Address a little grammatical faux pas in the unused result warning.
2018-10-15 14:16:45 +00:00
Niko Matsakis
42a661843c introduce canonical_var_for_region helper fn 2018-10-15 08:57:22 -04:00
Niko Matsakis
71caf8ae93 type_op/mod.rs: rustfmt 2018-10-15 08:57:22 -04:00
Niko Matsakis
bca294da1f rename QueryResult to QueryResponse
`Result` really sounds like the rustc result type
2018-10-15 08:57:22 -04:00
Niko Matsakis
fd046a2ede bundle up "canonical instantiation" with infcx creation 2018-10-15 08:57:22 -04:00