Commit graph

94272 commits

Author SHA1 Message Date
Ralf Jung
77be06b7ed no longer assume that there is a default tag: give the machine the chance to tag all allocations 2019-06-02 10:36:18 +02:00
0x1793d1
b3fdde431b
Fix missing semicolon in doc
A semicolon is missing in the examples of compile_error.
Macros that expand to items must be delimited with braces or followed by a semicolon.
2019-06-02 10:23:33 +02:00
Ralf Jung
2726a91cca cache tag for vtable; fn_alloc's don't have a stack nor tag 2019-06-02 10:21:00 +02:00
bors
538e17a3fd Auto merge of #61384 - varkor:fmin-fmax-llvm-opt, r=alexcrichton
Update LLVM to include fmin/fmax optimisations

This will enable us to test if the optimisation issues mentioned in https://github.com/rust-lang/rust/issues/18384 really are fixed. Unfortunately, using the intrinsics immediately is problematic due to the libcore/libstd split (see https://github.com/rust-lang/rust/issues/50145).
2019-06-02 04:10:25 +00:00
Esteban Küber
31918d6eef review comments: use param kind type to identify impl Trait 2019-06-01 19:30:13 -07:00
bors
aa5bd03892 Auto merge of #61299 - eddyb:nicer-llvm-builder, r=rkruppe
rustc_codegen_llvm: a couple builder niceties.

r? @nagisa cc @sunfishcode @rkruppe
2019-06-02 01:12:36 +00:00
varkor
e82cd9528c Add regression test for #61422 2019-06-02 01:55:46 +01:00
varkor
5a2410a07c Add error for pattern-matching on arrays without a fixed size 2019-06-02 01:55:46 +01:00
varkor
21551359a5 Use assert_usize instead of unwrap_usize in several places 2019-06-02 01:55:44 +01:00
varkor
c2b663c666 Fix unwrapping usize issue with transparent MaybeUnit array wrapper 2019-06-02 01:50:06 +01:00
Esteban Küber
3d0eae18c6 Tweak wording when encountering fn call in pattern 2019-06-01 16:27:35 -07:00
Esteban Küber
e420f4410b Account for cases where we can find the type arg name, but the local name is _ 2019-06-01 15:33:31 -07:00
Esteban Küber
9616b333b2 review comment: tweak wording 2019-06-01 14:47:15 -07:00
Esteban Küber
e275f2caf6 Extend docstring 2019-06-01 14:13:57 -07:00
bors
03ee55bb1c Auto merge of #61436 - Manishearth:clippyup, r=Manishearth
Update clippy

r? @ghost
2019-06-01 18:58:54 +00:00
Esteban Küber
0754c84611 Explain that impl Trait introduces an implicit type argument 2019-06-01 11:35:54 -07:00
Eduard-Mihai Burtescu
25d6834493 rustc_codegen_llvm: replace fn noname() with const UNNAMED. 2019-06-01 21:13:08 +03:00
Eduard-Mihai Burtescu
268e64641f rustc_codegen_llvm: pretty up a few builder methods with a macro. 2019-06-01 21:12:42 +03:00
Manish Goregaokar
16bc2c2c5e Update clippy 2019-06-01 10:50:55 -07:00
Eduard-Mihai Burtescu
f7a4c9d7b5 rustc: collect upvars from HIR, instead of during name resolution. 2019-06-01 20:44:05 +03:00
Esteban Küber
28859472f7 Point at individual type arguments on arg count mismatch 2019-06-01 10:35:31 -07:00
Eduard-Mihai Burtescu
648b4d884d rustc_resolve: never push ClosureRibKind to label_ribs. 2019-06-01 20:28:59 +03:00
Eduard-Mihai Burtescu
ed1bbbb545 rustc: remove Res::Upvar. 2019-06-01 20:28:48 +03:00
Eduard-Mihai Burtescu
340b91e2ff rustc: remove has_parent from hir::Upvar. 2019-06-01 19:17:23 +03:00
Eduard-Mihai Burtescu
a0ca2a2deb rustc: track the body owner in liveness. 2019-06-01 19:17:23 +03:00
Eduard-Mihai Burtescu
b13d0407d4 rustc: remove closure ID from Res::Upvar. 2019-06-01 19:17:23 +03:00
Eduard-Mihai Burtescu
1768030791 rustc: track the body owner DefId in MC and EUV. 2019-06-01 19:17:23 +03:00
Eduard-Mihai Burtescu
961fe5479f rustc: use indexmap instead of a plain vector for upvars. 2019-06-01 19:17:22 +03:00
bors
afaf976371 Auto merge of #61350 - RalfJung:alloc, r=oli-obk
light refactoring of global AllocMap

* rename AllocKind -> GlobalAlloc. This stores the allocation itself, not just its kind.
* rename the methods that allocate stuff to have consistent names.

Cc @oli-obk
2019-06-01 16:06:11 +00:00
Eduard-Mihai Burtescu
9fe0052e54 rustc: remove the closure ID from hir::Upvar's parent field. 2019-06-01 19:01:09 +03:00
Eduard-Mihai Burtescu
4b9670a245 rustc: remove the index field from Res::Upvar. 2019-06-01 19:01:09 +03:00
Eduard-Mihai Burtescu
26e61dd826 rustc: replace Res in hir::Upvar with only Local/Upvar data. 2019-06-01 19:01:09 +03:00
bors
cd3f21bc7d Auto merge of #61388 - Amanieu:hashbrown4, r=alexcrichton
Bump hashbrown to 0.4.0

Fixes #61357

This also includes rust-lang/hashbrown#80.
2019-06-01 11:10:11 +00:00
David Wood
e71f4665f6
codegen: change $6d$ to $u6d$
This changes a mistake introduced in #61195 where the mangling
workaround used was incorrect.
2019-06-01 11:37:11 +01:00
Amanieu d'Antras
a386a9edcc Bump hashbrown to 0.4.0
Fixes #61357
2019-06-01 10:29:23 +01:00
bors
885c7dfddc Auto merge of #61418 - Centril:rollup-yvj33a1, r=Centril
Rollup of 8 pull requests

Successful merges:

 - #60729 (Expand dynamic drop tests for cases in #47949)
 - #61263 (Don't generate div inside header (h4/h3/h...) elements)
 - #61364 (Stabilize reverse_bits feature)
 - #61375 (Make "panic did not include expected string" message consistent)
 - #61387 (Remove ty::BrFresh and RegionConstraintCollector::new_bound)
 - #61389 (Remove GlobalArenas and use Arena instead)
 - #61391 (Doc comment fixes for `rustc::mir::interpret::InterpretCx`)
 - #61403 (Remove unnecessary `-Z continue-parse-after-error` from tests)

Failed merges:

r? @ghost
2019-06-01 06:34:15 +00:00
Esteban Küber
8e595f5610 Make generics always have a valid span 2019-05-31 22:19:30 -07:00
Mazdak Farrokhzad
23de376572
Rollup merge of #61403 - estebank:test-cleanup, r=petrochenkov
Remove unnecessary `-Z continue-parse-after-error` from tests

r? @petrochenkov
2019-06-01 06:50:10 +02:00
Mazdak Farrokhzad
c081974845
Rollup merge of #61391 - wesleywiser:doc_comments_interpretcx, r=Centril
Doc comment fixes for `rustc::mir::interpret::InterpretCx`

Fixes some stuff I noticed while working in const-prop.
2019-06-01 06:50:09 +02:00
Mazdak Farrokhzad
760a98fb5e
Rollup merge of #61389 - Zoxc:arena-cleanup, r=eddyb
Remove GlobalArenas and use Arena instead

r? @eddyb
2019-06-01 06:50:07 +02:00
Mazdak Farrokhzad
93fc627c7d
Rollup merge of #61387 - JohnTitor:remove-unused, r=matthewjasper
Remove ty::BrFresh and RegionConstraintCollector::new_bound

Fixes #60957

r? @matthewjasper
2019-06-01 06:50:06 +02:00
Mazdak Farrokhzad
d0a0ba42d7
Rollup merge of #61375 - varkor:panic-contains-string-lowercase, r=Centril
Make "panic did not include expected string" message consistent

Note messages are typically lowercase.
2019-06-01 06:50:05 +02:00
Mazdak Farrokhzad
7d3a0dd2fb
Rollup merge of #61364 - lzutao:stabilize-reverse_bits, r=Centril
Stabilize reverse_bits feature

FCP done in https://github.com/rust-lang/rust/issues/48763#issuecomment-497349379

Closes #48763

r? @Centril
2019-06-01 06:50:03 +02:00
Mazdak Farrokhzad
525d7deb6d
Rollup merge of #61263 - GuillaumeGomez:valid-html, r=Manishearth
Don't generate div inside header (h4/h3/h...) elements

Fixes #60865.

According to the HTML spec, we're not supposed to put `div` elements inside heading elements (h4/h3/h...). It doesn't change the display as far as I could tell.

r? @QuietMisdreavus
2019-06-01 06:50:02 +02:00
Mazdak Farrokhzad
837df52d85
Rollup merge of #60729 - matthewjasper:leak-after-into, r=nikomatsakis
Expand dynamic drop tests for cases in #47949

Adds test cases for #47949
2019-06-01 06:50:00 +02:00
Esteban Küber
ebbe725dd0 Tweak wording 2019-05-31 20:48:09 -07:00
bors
8b40a188ce Auto merge of #60145 - little-dude:ip2, r=alexcrichton
std::net: Ipv4Addr and Ipv6Addr improvements

Picking this up again from my previous PR: https://github.com/rust-lang/rust/pull/56050
Related to: https://github.com/rust-lang/rust/issues/27709
Fixes: https://github.com/rust-lang/rust/issues/57558

- add `add Ipv4Addr::is_reserved()`
  - [X] implementation
  - [X] tests
- add `Ipv6Addr::is_unicast_link_local_strict()` and update `Ipv6Addr::is_unicast_link_local()` documentation
  - [X] implementation
  - [X] test
- add `Ipv4Addr::is_benchmarking()`
  - [X] implementation
  - [X] test
- add `Ipv4Addr::is_ietf_protocol_assignment()`
  - [X] implementation
  - [X] test
- add `Ipv4Addr::is_shared()`
  - [X] implementation
  - [x] test
- fix `Ipv4Addr:is_global()`
  - [X] implementation
  - [x] test
- [X] refactor the tests for IP properties. This makes the tests more verbose, but using macros have two advantages:
    - it will now be easier to add tests for all the new methods
    - we get clear error messages when a test is failing. For instance:

```
---- net::ip::tests::ip_properties stdout ----
thread '<unnamed>' panicked at 'assertion failed: !ip!("fec0::").is_global()', src/libstd/net/ip.rs:2036:9

```

Whereas previously it was something like

```
thread '<unnamed>' panicked at 'assertion failed: `(left == right)`
   left: `true`,
  right: `false`', libstd/net/ip.rs:1948:13
```

-----------------------

# Ongoing discussions:

## Should `Ipv4Addr::is_global()` return `true` or `false` for reserved addresses?

Reserved addresses are addresses that are matched by `Ipv4Addr::is_reserved()`.
@the8472 [pointed out](https://github.com/rust-lang/rust/pull/60145#issuecomment-485458319) that [RFC 4291](https://tools.ietf.org/html/rfc4291#section-2.4) says IPv6 reserved addresses should be considered global:

```
Future specifications may redefine one or more sub-ranges of the
Global Unicast space for other purposes, but unless and until that
happens, implementations must treat all addresses that do not start
with any of the above-listed prefixes as Global Unicast addresses.
```

We could extrapolate that this should also be the case for IPv4. However, it seems that [IANA considers them non global](https://www.iana.org/assignments/ipv4-address-space/ipv4-address-space.xhtml) (see [my comment](https://github.com/rust-lang/rust/pull/60145#issuecomment-485713270))

### Final decision

There seems to be a consensus that reserved addresses have a different meaning for IPv4 and IPv6 ([comment1](https://github.com/rust-lang/rust/pull/60145#issuecomment-485963789) [comment2](https://github.com/rust-lang/rust/pull/60145#issuecomment-485944582), so we can consider that RFC4291 does not apply to IPv4, and that reserved IPv4 addresses are _not_ global.

## Should `Ipv6Addr::is_unicast_site_local()` exist?

@pusateri [noted](https://github.com/rust-lang/rust/pull/60145#issuecomment-485507515) that site-local addresses have been deprecated for a while by [RFC 3879](https://tools.ietf.org/html/rfc3879) and new implementations _must not_ support them. However, since this method is stable, removing does not seem possible. This kind of situation is covered by the RFC which stated that existing implementation _may_ continue supporting site-local addresses.

### Final decision

Let's keep this method. It is stable already, and the RFC explicitly states that existing implementation may remain.

---------

Note: I'll be AFK from April 27th to May 11th. Anyone should feel free to pick this up if the PR hasn't been merged by then. Sorry for dragging that for so long already.
2019-06-01 03:46:13 +00:00
Esteban Küber
74fb3bbee4 On type inference errors use the type argument name when possible
```
error[E0282]: type annotations needed in `std::result::Result<i32, E>`
 --> file7.rs:3:13
  |
3 |     let b = Ok(4);
  |         -   ^^ cannot infer type for `E` in `std::result::Result<i32, E>`
  |         |
  |         consider giving `b` a type`
```
2019-05-31 18:33:59 -07:00
Esteban Küber
65c2a7b18b Alternative wording for inference failure 2019-05-31 18:33:59 -07:00
Esteban Küber
8bb094dac5 Add more detail to type inference error
When encountering code where type inference fails, add more actionable
information:

```
fn main() {
    let foo = Vec::new();
}
```

```
error[E0282]: type annotations needed for `std::vec::Vec<_>`
  --> $DIR/vector-no-ann.rs:2:16
   |
LL |     let foo = Vec::new();
   |         ---   ^^^^^^^^ cannot infer type for `T`
   |         |
   |         consider giving `foo` the type `std::vec::Vec<_>` with the type parameter `T` specified
```

We still need to modify type printing to optionally accept a
`TypeVariableTable` in order to properly print `std::vec::Vec<T>`.

CC #25633.
2019-05-31 18:33:59 -07:00