Commit graph

72663 commits

Author SHA1 Message Date
Michael Hewson
23555b9f12 fix ui test
had to tell the test suite that it's supposed to compile
2017-12-17 10:13:09 +01:00
Michael Hewson
63ce99c6f8 add a ui test for the inference variable warning 2017-12-17 10:13:09 +01:00
Michael Hewson
0cc573a9ee better variable names in tests 2017-12-17 10:13:09 +01:00
Michael Hewson
4cae2c087d Add tests with *const Rc<Self> and similar self types 2017-12-17 10:13:09 +01:00
Michael Hewson
bc0439b388 Warn about inference variables behind raw pointers in method lookup 2017-12-17 10:13:09 +01:00
Michael Hewson
428b0259b6 remove test for issue #26194 because it is now redundant 2017-12-17 10:13:09 +01:00
Michael Hewson
c5fc7c5293 update error message in test/compile-fail/issue-26194.rs 2017-12-17 10:13:09 +01:00
Michael Hewson
8aac984e40 Fix ICE in probe::confirm::extract_existential_trait_ref with raw pointer self 2017-12-17 10:13:09 +01:00
Michael Hewson
cb9f552b7c Add a feature_gate test for raw pointer self 2017-12-17 10:13:09 +01:00
Michael Hewson
bff74fbfe2 shorten lines for tidy 2017-12-17 10:13:09 +01:00
Michael Hewson
e7d1542a52 don't emit a type error if autoderef ends in an inference variable, as long as we went through a raw pointer
This avoids a break in backward compatibility in the following case:

```
let ptr = std::ptr::null();
let _ = &data as *const *const ();
if data.null() {}
```
2017-12-17 10:13:09 +01:00
Michael Hewson
083635eab2 changed some stuff in probe.rs and it broke libstd 2017-12-17 10:13:09 +01:00
Michael Hewson
361b3db886 implement raw-pointer self. Works for traits, including trait objects, but not structs 2017-12-17 10:13:09 +01:00
bors
53a6d14e5b Auto merge of #46778 - petrochenkov:nounwrap, r=arielb1
syntax: Rename `P::unwrap` into something less alarming
2017-12-17 04:23:55 +00:00
bors
35376587c8 Auto merge of #46761 - zackmdavis:concerning_incorrect_suggestions_for_referencing_a_cast, r=estebank
in which suggestions to borrow casts or binary expressions are rectified

 resolves #46756

r? @estebank
2017-12-17 01:56:12 +00:00
bors
1b1c792c77 Auto merge of #46750 - varkor:imp-llmod, r=estebank
Improve error messages on LLVM bitcode parsing failure

The LLVM error causing the parse failure is now printed, in the style
of the other thin LTO error messages. This prevents a flood of
assertion failure messages if the bitcode can’t be parsed.
2017-12-16 23:24:13 +00:00
Vadim Petrochenkov
a4aa26aaa0 syntax: Rename P::unwrap into P::into_inner 2017-12-17 02:21:29 +03:00
bors
3bee2b44cf Auto merge of #46763 - zackmdavis:and_the_case_of_the_erroneous_field_pattern_ellipsis, r=petrochenkov
in which `..` is suggested for erroneous `...` in struct field patterns

Resolves #46718. Supersedes #46721.

r? @petrochenkov
2017-12-16 19:32:19 +00:00
bors
4f2ef415ba Auto merge of #46743 - oli-obk:miri, r=eddyb
Some miri cleanups

r? @eddyb
2017-12-16 16:16:16 +00:00
bors
bdae618418 Auto merge of #46722 - arielb1:single-self, r=eddyb
fix broken assertion in type_param

Nested generics (aka method generics) in trait methods don't have an
*additional* Self parameter in their own type parameter list (they have
a Self parameter in the parent generics), so don't try to check we're
correctly adjusting for it.

Fixes #46568.

r? @eddyb
2017-12-16 09:12:04 +00:00
Zack M. Davis
d40197c471 in which .. is suggested for erroneous ... in struct field patterns
Resolves #46718.
2017-12-16 00:58:19 -08:00
Zack M. Davis
73a90194f9 in which suggestions to borrow casts or binary expressions are rectified
This simple patch resolves #46756 (which was specifically about the case of
casts, but it would be poor form indeed to fix a reported issue without at
least a cursory attempt at answering the immortal question, "How does this bug
generalize?").
2017-12-15 23:26:00 -08:00
bors
00fbfcce96 Auto merge of #46719 - estebank:issue-39268, r=pnkfelix
Point at var in short lived borrows instead of drop location

For RLS' sake, point at the borrow location as primary span for short lived borrows, instead of the borrow drop location.

Fix #39268.
2017-12-16 06:31:35 +00:00
Simon Sapin
60dc10492c Move PhantomData<T> from Shared<T> to users of both Shared and #[may_dangle]
After discussing [1] today with @pnkfelix and @Gankro,
we concluded that it’s ok for drop checking not to be much smarter
than the current `#[may_dangle]` design which requires an explicit
unsafe opt-in.

[1] https://github.com/rust-lang/rust/issues/27730#issuecomment-316432083
2017-12-16 06:58:16 +01:00
bors
b3392f8ae4 Auto merge of #46560 - Yoric:incr, r=michaelwoerister
Loading the dependency graph in the background

Patch is a bit longer than I expected, due to the fact that most of this code relies upon a `Session` value, which is not `Sync`.
2017-12-16 03:54:10 +00:00
bors
39cb4c6057 Auto merge of #46757 - michaelwoerister:revert-46562, r=eddyb
incr.comp.: Revert hashing optimization that caused regression.

This PR reverts part of #46562 which caused [a regression in the crossbeam rust-icci](https://travis-ci.org/rust-icci/crossbeam/builds/316574774) test. I don't know what the problem is exactly yet. Fortunately, the problematic part is also the less important one, so reverting should not have much impact on performance.

r? @eddyb
2017-12-16 01:12:00 +00:00
Michael Woerister
c7e5b703cd incr.comp.: Revert hashing optimization that caused regression. 2017-12-15 16:50:07 -06:00
bors
abab7633d3 Auto merge of #46540 - euclio:import-parents, r=nrc
save-analysis: add parents to imports

This PR populates the `parent` field added to `Import` in `rls-data` 0.14.

I'm not quite sure if I handled nested imports' parents correctly: this is a new feature to me.

r? @nrc

cc https://github.com/nrc/rls-analysis/issues/123
2017-12-15 22:22:13 +00:00
Niko Matsakis
4f43c5b1e7 stop dumping DefPath into "failed type test" errors
The prior messages were not stable across platforms.
2017-12-15 17:04:48 -05:00
Andy Russell
b82d2809fd
save-analysis: dump extern crate imports 2017-12-15 16:57:51 -05:00
Andy Russell
b3c39560a4
save-analysis: document process_use_tree 2017-12-15 16:57:51 -05:00
Andy Russell
59fafc8889
save-analysis: add parents to imports 2017-12-15 16:57:42 -05:00
Esteban Küber
b562565b09 Same change to point at borrow for mir errors 2017-12-15 13:52:05 -08:00
varkor
a399326ca2 Improve error messages on LLVM bitcode parsing failure
The LLVM error causing the parse failure is now printed, in the style
of the other thin LTO error messages. This prevents a flood of
assertion failure messages if the bitcode can’t be parsed.
2017-12-15 19:25:05 +00:00
bors
77efd6800c Auto merge of #46623 - eddyb:issue-46449, r=nagisa
rustc_trans: approximate ABI alignment for padding/union fillers.

Before #45225 and after this PR, unions and enums are filled with integers of size and alignment matching their alignment (e.g. `Option<u32>` becomes `[u32; 2]`) instead of mere bytes.
Also, the alignment padding between struct fields gets this treatment after this PR.

Partially helps with some reduced testcases in #46449, although it doesn't solve the bug itself.
2017-12-15 19:02:22 +00:00
David Teller
a0fb93ddb4 Resolves #46555 - Moving loading and decoding of dependency graph to background thread 2017-12-15 12:01:11 -06:00
bors
50f6c3ece0 Auto merge of #46745 - steveklabnik:rollup, r=steveklabnik
Rollup of 7 pull requests

- Successful merges: #46601, #46652, #46690, #46705, #46710, #46728, #46737
- Failed merges:
2017-12-15 16:08:07 +00:00
Oliver Schneider
2d161f10e5
Allow easily creating cheap eval context instances 2017-12-15 16:56:58 +01:00
Niko Matsakis
0f8ef0ca1a more concise debug output when dumping the value of a region 2017-12-15 10:27:54 -05:00
Niko Matsakis
0d6bd42abb make blame_span deterministic 2017-12-15 10:27:54 -05:00
Niko Matsakis
a118afe7ca add a test regarding relating closure and fn generics
Turns out this works but we had no test targeting it.
2017-12-15 10:27:53 -05:00
Niko Matsakis
e9824c50ed impose inputs/ouputs on MIR after the fact
The input/output types found in `UniversalRegions` are not normalized.
The old code used to assign them directly into the MIR, which would
lead to errors when there was a projection in a argument or return
type. This also led to some special cases in the `renumber` code.

We now renumber uniformly but then pass the input/output types into
the MIR type-checker, which equates them with the types found in MIR.
This allows us to normalize at the same time.
2017-12-15 10:27:53 -05:00
Niko Matsakis
3fcb13ae45 handle projections with regions 2017-12-15 10:27:52 -05:00
Niko Matsakis
3a5842afe1 add a new RegionKind variant: ReClosureBound
This is needed to allow the `ClosureRegionRequirements` to capture
types that include regions.
2017-12-15 10:27:52 -05:00
Niko Matsakis
85e1d4749e propagate type tests from closure to closure creators
Currently, we only propagate type tests that exclude all regions from
the type.
2017-12-15 10:27:51 -05:00
Niko Matsakis
5804637a81 permit ClosureOutlivesRequirement to constrain regions or types 2017-12-15 10:27:51 -05:00
Niko Matsakis
c7cfa2367b thread through an implicit region body of the fn body 2017-12-15 10:27:50 -05:00
Niko Matsakis
154cd94197 rework region flags: 'static can be erased too
The existing flags did not consider `'static` to be "free". This then
fed into what was "erasable" -- but `'static` is most certainly
erasable.
2017-12-15 10:27:50 -05:00
Niko Matsakis
02e65250e4 mild refactors of the control flow (no functional changes)
In the future, `check_type_tests` will also potentially propagate
constriants to its caller.
2017-12-15 10:27:49 -05:00
Niko Matsakis
47c1921b9a move some parts of liveness to happen during type checking
This allows us to re-use the `normalize` method on `TypeCheck`, which
is important since normalization may create fresh region
variables. This is not an ideal solution, though, since the current
representation of "liveness constraints" (a vector of (region, point)
pairs) is rather inefficient. Could do somewhat better by converting
to indices, but it'd still be less good than the older code. Unclear
how important this is.
2017-12-15 10:27:49 -05:00