Ariel Ben-Yehuda
571a15bd15
avoid giving a principal to marker-only trait objects
...
Fixes #33140 .
2019-01-04 00:34:52 +02:00
Ariel Ben-Yehuda
3aa1503a61
add support for principal-less trait object types
...
should be a pure refactoring.
2019-01-04 00:34:52 +02:00
Matthew Jasper
65c1f54a06
Forbid impl Trait from referring to unnamable recursive types
...
There is no type T, such that `T = [T; 2]`, we should not allow this
to be circumvented by impl Trait.
2019-01-03 22:15:02 +00:00
Georg Semmler
ae5c092682
More test deduplication
2019-01-03 22:29:11 +01:00
Georg Semmler
2bc436e713
Add missing files
2019-01-03 22:27:12 +01:00
Georg Semmler
d6ffd88d21
Fix typo
2019-01-03 22:27:09 +01:00
Georg Semmler
464b4dcb2b
Unify tests
...
Implement compile tests as variants of existing tests
2019-01-03 22:27:06 +01:00
Georg Semmler
2888d5631c
Update some new tests to changed error messages
2019-01-03 22:27:03 +01:00
Georg Semmler
992712ef30
Fix failing compile tests
2019-01-03 22:27:00 +01:00
Georg Semmler
a31dd0a2f7
Directly check if input_ty is a type parameter and therefore a
...
uncoverd type
2019-01-03 22:26:57 +01:00
varkor
854ac40104
Update src/doc/unstable-book/src/language-features/re-rebalance-coherence.md
...
Co-Authored-By: weiznich <Georg_semmler_05@web.de>
2019-01-03 22:26:54 +01:00
Georg Semmler
1715be0e3c
Fix tidy
2019-01-03 22:26:51 +01:00
Georg Semmler
70645e79b6
Add some docs about the new feature to the unstable book
2019-01-03 22:26:47 +01:00
Georg Semmler
bcd7acfe04
Add some tests
...
This copies and adjusts the existing coherence tests to ensure that
they continue to work using the new implementation.
2019-01-03 22:26:44 +01:00
Georg Semmler
757d7ba9c9
Implement the re-rebalance coherence rfc
2019-01-03 22:26:40 +01:00
Eric Huss
57790b8524
Update cargo
2019-01-03 12:59:54 -08:00
Matthew Jasper
7ba17aa72f
Display impl Sized
correctly
...
It used to display as just `impl`
2019-01-03 20:49:01 +00:00
Wiktor Kuchta
190d139f3a
Fix repeated word typos
...
Found with `git grep -P '\b([a-z]+)\s+\1\b'`
2019-01-03 21:33:37 +01:00
Alex Crichton
66f0e42b4e
ci: Upgrade Travis to Xenial
...
In theory we shouldn't require trusty so long as docker continues to
work!
2019-01-03 12:22:37 -08:00
Wim Looman
d1a42ea8d0
Add discoverable function for converting Box<T> -> Pin<Box<T>>
2019-01-03 21:04:35 +01:00
Wim Looman
5e3a560299
Allow converting Box<T: !Sized> -> Pin<Box<T>>
2019-01-03 21:03:29 +01:00
Mendess2526
3fb42cfb7c
const fn no longer comming soon on const docs
2019-01-03 19:23:25 +00:00
bors
c0bbc3927e
Auto merge of #55517 - nikomatsakis:universes, r=scalexm
...
Universes
This PR transitions the compiler to use **universes** instead of the **leak-check**. It is marked as [WIP] for a few reasons:
- The diagnostics at present are terrible =)
- This changes the behavior of coherence, regressing some things that used to compile
The goals of this PR at present are:
- To start getting some eyes on the code
- To do a crater run
- To see the full travis results (due to https://github.com/rust-lang/rust/issues/52452 , I am not able to run the full test suite locally anymore at present)
The first few commits in the PR are changing how `evaluate` treats regions. We now track whether region comparisons occurred, reverting the "staticized" query approach that @arielb1 put in. The problem with "staticized" queries is that it relied on the leak-check to get higher-ranked things correct, and we are removing the leak-check in this PR series, so that caused problems.
You can see at the end a collection of test updates. Mostly we behave the same but with atrocious diagnostics, but there are a number of cases where we used to error and now no longer do, as well as single case where we used to **not** error but we now do (the coherence-subtyping change).
(Note: it would be possible to do a version of leak-check that propagates universe information and recover the old behavior. I am reluctant to do so because I'd like to leave us room to get more precise -- e.g., I want to eventually handle things like `exists<'a> { for<'b> { if ('a: 'b) { 'a: 'b } } }` which presently the leak-check cannot cope with etc. Also because it seems more consistent to me: most folks I've talked to expect the new behavior and are surprised to learn that binding sites were so significant before when it comes to coherence. One question is, though, to what extent are people relying on this in the wild?)
2019-01-03 17:18:15 +00:00
Dan Robertson
917985e7fe
VaList::copy should not require a mutable ref
...
VaList::copy does not need to take a mutable reference. The va_copy
intrinsic takes a immutable reference.
2019-01-03 15:51:50 +00:00
bors
2442823ef5
Auto merge of #56507 - nikomatsakis:polonius-integrate, r=MatthewJasper
...
polonius tweaks
- bump polonius to 0.6.0
- fix 2-phase-borrow activations
r? @matthewjasper
2019-01-03 12:42:16 +00:00
bors
140936307e
Auto merge of #57282 - matthewjasper:wellformed-return-ty, r=nikomatsakis
...
Wf-check the output type of a function in MIR-typeck
Closes #57265
cc @scalexm
2019-01-03 03:48:12 +00:00
Daniel Mueller
a944ecfa15
Fix 'be be' constructs
...
I noticed a duplicated "be" somewhere in the code. A search for it
manifested a couple more locations with the same problem. This change
removes one of the "be"s.
2019-01-02 18:06:49 -08:00
Niko Matsakis
8e89184a7b
rename type_moves_by_default
to type_is_copy_modulo_regions
2019-01-02 17:35:06 -05:00
Niko Matsakis
4c8fd2e80a
try to detect affected code and direct people to #56105
2019-01-02 17:35:06 -05:00
Niko Matsakis
2c17af0bf7
track if any region constraints involved placeholders
2019-01-02 17:35:06 -05:00
Niko Matsakis
13ea9b877c
pacify the mercilous eddyb ;)
2019-01-02 17:35:06 -05:00
Niko Matsakis
c04563e1b0
add some comments about lifetimes etc
2019-01-02 17:35:06 -05:00
Niko Matsakis
1db7193162
address tmandry nits
2019-01-02 17:35:06 -05:00
Niko Matsakis
cf2f7cccb4
pacify the mercilous tidy
2019-01-02 17:35:06 -05:00
Niko Matsakis
bc4404c0b5
improve handling for subtype
...
Still not great, but good enough to land this PR.
2019-01-02 17:35:06 -05:00
Niko Matsakis
a24e04dff6
say "the lifetime" instead of "some lifetime" when it feels right
...
In particular, when we want to indicate that there is a connection
between the self type and the other types.
2019-01-02 17:35:06 -05:00
Niko Matsakis
7bc3f5585a
apply the same logic to ConcreteFailure errors
2019-01-02 17:35:06 -05:00
Niko Matsakis
77924de4a6
refactor highlighting to take any RegionKind, making it more general
2019-01-02 17:35:06 -05:00
Niko Matsakis
6cbbee1dc7
apply the new placeholder errors even with just one placeholder
2019-01-02 17:35:06 -05:00
Niko Matsakis
0a61d682a1
introduce placeholder-placeholder errors for trait matching
2019-01-02 17:35:06 -05:00
Niko Matsakis
1597f2a0fc
add the ability to highlight placeholders
2019-01-02 17:35:05 -05:00
Niko Matsakis
37b0b3e9a3
generalize region highlights into a struct
2019-01-02 17:35:05 -05:00
Niko Matsakis
6a6d2f4b3f
dump out the exact state in error reporting debugs
2019-01-02 17:35:05 -05:00
Niko Matsakis
995192a472
make get_highlight_region_for_regionvid
only affect re-vid
...
In NLL, ReVid is all there is, but I might want to repurpose.
2019-01-02 17:35:05 -05:00
Niko Matsakis
0b03b9bbcf
remove outdated rustc_driver
tests
...
they are subsumed by `hr-subtype/hr-subtype.rs` and other tests
2019-01-02 17:35:05 -05:00
Niko Matsakis
a2d917989c
WIP other test changes
2019-01-02 17:35:05 -05:00
Niko Matsakis
c8e0a90dfc
tests: cases where we now do the right thing but did not before
...
Fixes #33684
2019-01-02 17:35:05 -05:00
Niko Matsakis
d3c96ff152
tests: worse diagnostics, but basically same errors
2019-01-02 17:35:05 -05:00
Niko Matsakis
78705b5ec7
tests: move coherence-subtyping from run-pass to compile-fail
...
This is the pattern we no longer accept.
2019-01-02 17:35:05 -05:00
Niko Matsakis
652fd2efdf
add tests exercising exists<'a> { forall<'b> { .. } }
pattern
...
Amazingly, this scenario was not tested for trait matching.
2019-01-02 17:35:05 -05:00