Commit graph

73585 commits

Author SHA1 Message Date
Esteban Küber
d17e38f4bf struct pattern parsing and diagnostic tweaks
- Recover from struct parse error on match and point out missing match
   body.
 - Point at struct when finding non-identifier while parsing its fields.
 - Add label to "expected identifier, found {}" error.
2018-01-07 17:04:36 -08:00
Robin Kruppe
cf3fefe97f rustc::ty: Rename struct_variant to non_enum_variant
It is also intended for use with unions.
2018-01-08 00:28:05 +01:00
bors
a29461f322 Auto merge of #47171 - estebank:numeric-literal-suggestion, r=nikomatsakis
Provide suggestion when trying to use method on numeric literal

New output:

```
error[E0688]: can't call method `powi` on ambiguous numeric type `{float}`
  --> $DIR/method-on-ambiguous-numeric-type.rs:12:17
   |
12 |     let x = 2.0.powi(2);
   |                 ^^^^
help: you must specify a concrete type for this numeric value, like `f32`
   |
12 |     let x = 2.0_f32.powi(2);
   |             ^^^^^^^
```

Previous output:

```
error[E0599]: no method named `powi` found for type `{float}` in the current scope
  --> src/main.rs:12:17
   |
12 |     let x = 2.0.powi(2);
   |                 ^^^^
   |
   = help: items from traits can only be used if the trait is in scope
help: the following trait is implemented but not in scope, perhaps add a `use` for it:
   |
11 | use core::num::Float;
   |
```

Fix #40985.
2018-01-07 22:48:16 +00:00
Steven Fackler
1fc6ad56cd Add HashMap::remove_entry
Implements #46344
2018-01-07 14:17:37 -08:00
Robin Kruppe
1df384d32d Rename ReprExtern to ReprC, and similarily rename a few other fields and locals that mentioned "extern repr" 2018-01-07 22:05:32 +01:00
Robin Kruppe
9e4a692e56 Replace empty array hack with repr(align)
As a side effect, this fixes the warning about repr(C, simd) that has been reported during x86_64 windows builds since #47111 (see also: #47103)
2018-01-07 20:25:37 +01:00
bors
ee220daca3 Auto merge of #47161 - MaloJaffre:compiler-docs-regression, r=alexcrichton
Try to fix a perf regression by updating log

Upgrade `log` to `0.4` in multiple crates ~and `cargo`~.
Cc: #47154.
2018-01-07 18:50:30 +00:00
Malo Jaffré
3f073c409a Try to fix a perf regression by updating log
Upgrade `log` to `0.4` in multiple crates.
2018-01-07 16:54:05 +01:00
Robin Kruppe
95c3fc05a9 Remove deprecated unstable attribute #[simd]
The `#[simd]` attribute has been deprecated since c8b6d5b23c back in 2015. Any nightly crates using it have had ample time to switch to `#[repr(simd)]`, and if they didn't they're likely broken by now anyway.
2018-01-07 16:33:45 +01:00
bors
8724337c23 Auto merge of #47039 - ollie27:rustdoc_trait_impl_src, r=GuillaumeGomez
rustdoc: Add missing src links for generic impls on trait pages

`implementor2item` would return `None` for generic impls so instead this clones the entire `clean::Item` into the `implementors` map which simplifies some code.
2018-01-07 13:12:15 +00:00
bors
69f17d1a0a Auto merge of #47177 - michaelwoerister:erase-invalid-spans-during-metadata-encoding, r=alexcrichton
Map invalid Spans to DUMMY_SP during crate metadata encoding.

This mirrors what we do for stabilizing the incr. comp. cache and is necessary for reproducible builds. For the incr. comp. cache, we *have* to do this because the encoding there cannot represent broken Spans. Metadata encoding has to be in sync with that as not to get unexpected interactions when compiling incrementally.

This should help with fixing issue https://github.com/rust-lang/rust/issues/47066.

r? @alexcrichton
2018-01-07 09:23:33 +00:00
bors
2148bcd5fa Auto merge of #47157 - malbarbo:shared-build-musl, r=alexcrichton
ci: use a shared script to build musl

The dist-x86_64-musl, dist-various-1 and dist-i586-gnu-i686-musl builders had different scripts to build musl. This PR creates an unified script, which makes it easier to add new musl targets and update musl and libunwind (used in the musl targets).

The libunwind is update from 3.7 to 3.9 for dist-x86_64-musl and dist-i586-gnu-i686-musl (dist-various-1 already used 3.9 version).
2018-01-07 03:41:00 +00:00
Björn Steinbrink
907855fe88 Remove unused LLVMRustJITMemoryManagerRef typedef 2018-01-07 04:39:58 +01:00
Björn Steinbrink
ebc85077df Remove dead function rustc_llvm::debug_loc_to_string()
Refs #46437 as it also removes LLVMRustWriteDebugLocToString()
2018-01-07 04:39:58 +01:00
Björn Steinbrink
4be1d5c37b Remove dead function LLVMRustLinkInParsedExternalBitcode()
Refs #46437
2018-01-07 04:39:58 +01:00
Björn Steinbrink
92189bc521 Remove redundant -Zdebug-llvm option
The same effect can be achieved using -Cllvm-args=-debug

Refs #46437 as it removes LLVMRustSetDebug()
2018-01-07 04:39:58 +01:00
Aidan Hobson Sayers
fd37526fa5 Make wasm obey backtrace feature, like other targets 2018-01-07 02:54:02 +00:00
Isaac van Bakel
6132806d36 Correct reasoning behind writeback ref removal
The ref was actually always necessary.
This clarifies some incorrect thinking in the original code that might
have led to errors in the future to do with unsizing.
2018-01-07 01:30:21 +00:00
Isaac van Bakel
2133ace207 Removed trailing whitespace 2018-01-07 01:30:21 +00:00
Isaac van Bakel
137a63c6a2 Made requested changes 2018-01-07 01:30:21 +00:00
Isaac van Bakel
21ddc181f9 Fixed unsize changing adjusted type
If the final type coming out of an Adjust is a ref, it is deconstructed.
Also made some formatting changes.
2018-01-07 01:30:21 +00:00
Isaac van Bakel
8ec3696b37 Made eddyb's suggested change
The adjusted type is now used instead in cases of autoderefs.
2018-01-07 01:30:21 +00:00
Isaac van Bakel
bf199d4965 Added tests for non-obvious builtin indexing
Tests match issues opened on Github.
Tests would not previously compile and pass.
2018-01-07 01:30:21 +00:00
Isaac van Bakel
23bc6418e8 Moved builtin indexing checks to writeback stage
Use of builtin indexing is now only checked after types are fully
resolved.
Types are not correctly checked in case of autoderefs.
2018-01-07 01:30:20 +00:00
Zack M. Davis
aba56ddd05 type error method suggestions use whitelisted identity-like conversions
Previously, on a type mismatch (and if this wasn't preëmpted by a
higher-priority suggestion), we would look for argumentless methods
returning the expected type, and list them in a `help` note.

This had two major shortcomings. Firstly, a lot of the suggestions didn't
really make sense (if you used a &str where a String was expected,
`.to_ascii_uppercase()` is probably not the solution you were hoping
for). Secondly, we weren't generating suggestions from the most useful
traits!

We address the first problem with an internal
`#[rustc_conversion_suggestion]` attribute meant to mark methods that keep
the "same value" in the relevant sense, just converting the type. We
address the second problem by making `FnCtxt.probe_for_return_type` pass
the `ProbeScope::AllTraits` to `probe_op`: this would seem to be safe
because grep reveals no other callers of `probe_for_return_type`.

Also, structured suggestions are preferred (because they're pretty, but
also for RLS and friends).

Also also, we make the E0055 autoderef recursion limit error use the
one-time-diagnostics set, because we can potentially hit the limit a lot
during probing. (Without this,
test/ui/did_you_mean/recursion_limit_deref.rs would report "aborting due to
51 errors").

Unfortunately, the trait probing is still not all one would hope for: at a
minimum, we don't know how to rule out `into()` in cases where it wouldn't
actually work, and we don't know how to rule in `.to_owned()` where it
would. Issues #46459 and #46460 have been filed and are ref'd in a FIXME.

This is hoped to resolve #42929, #44672, and #45777.
2018-01-06 17:15:59 -08:00
bors
a704583d43 Auto merge of #47156 - petrochenkov:extpath, r=nikomatsakis
Support `extern` in paths

Implement the primary alternative to https://github.com/rust-lang/rust/pull/46613 + https://github.com/rust-lang/rust/pull/45771, achieving the same effect without requiring changes to other imports.
Both need to be experimentally evaluated before making further progress.

The PR also adds docs for all these related features into the unstable book.

cc https://github.com/rust-lang/rust/issues/44660
r? @nikomatsakis
2018-01-07 00:51:42 +00:00
varkor
2d8334358a Use next and next_back 2018-01-06 22:14:02 +00:00
bors
6828cf9014 Auto merge of #47235 - kennytm:rollup, r=kennytm
Rollup of 7 pull requests

- Successful merges: #46947, #47170, #47190, #47205, #47217, #47220, #47230
- Failed merges: #47233
2018-01-06 20:41:33 +00:00
keatinge
6aafdc3781 Fix tidy error 2018-01-06 15:29:08 -05:00
keatinge
a9b746bb23 Use span_suggestion instead of span_err_help 2018-01-06 15:22:29 -05:00
Wesley Wiser
fc2424b988 Add raw bytes functions
Part of #45875
2018-01-06 14:57:27 -05:00
Zack M. Davis
3cfea33432 wherein careful doc-decoration arithmetic proves quite the ICE-breaker
This `horizontal_trim` function strips the leading whitespace from
doc-comments that have a left-asterisk-margin:

  /**
   * You know what I mean—
   *
   * comments like this!
   */

The index of the column of asterisks is `i`, and if trimming is deemed
possible, we slice each line from `i+1` to the end of the line. But if, in
particular, `i` was 0 _and_ there was an empty line (as in the example
given in the reporting issue), we ended up panicking trying to slice an
empty string from 0+1 (== 1).

Let's tighten our check to say that we can't trim when `i` is even the same
as the length of the line, not just when it's greater. (Any such cases
would panic trying to slice `line` from `line.len()+1`.)

Resolves #47197.
2018-01-06 11:17:29 -08:00
kennytm
ce70106138 Rollup merge of #47230 - nerd2:debuginfo_shadow, r=alexcrichton
Debuginfo Shadowed Variable test: fix check numbering

Appears to be a simple fix to restore this test. Ref issue #47163, CC @arielb1
2018-01-07 02:36:07 +08:00
kennytm
f6125846b6 Rollup merge of #47220 - nagisa:nonamellvm, r=rkruppe
Use name-discarding LLVM context

This is only applicable when neither of --emit=llvm-ir or --emit=llvm-bc are not
requested.

In case either of these outputs are wanted, but the benefits of such context are
desired as well, -Zfewer_names option provides the same functionality regardless
of the outputs requested.

Should be a viable fix for https://github.com/rust-lang/rust/issues/46449
2018-01-07 02:36:06 +08:00
kennytm
e7192c1a4b Rollup merge of #47217 - stjepang:set-examples, r=frewsxcv
Write examples for {BTree,Hash}Set::{get,replace,take}
2018-01-07 02:36:05 +08:00
kennytm
c6bf11cf2b Rollup merge of #47205 - eddyb:alloc-id, r=oli-obk
miri: use AllocId instead of u64.

This makes @alexreg's miri allocation -> LLVM global translation more straight-forward.

r? @oli-obk
2018-01-07 02:36:04 +08:00
kennytm
48a0f3a5ca Rollup merge of #47190 - EdSchouten:cloudabi-libpanic, r=alexcrichton
Port libpanic_abort and libpanic_unwind to CloudABI

This change ports both the libpanic* libraries to CloudABI.

The most interesting part of this pull request, however, is that it imports the CloudABI system call API into the Rust tree through a Git submodule. These will also be used by my port of libstd to CloudABI extensively, as that library obviously needs to invoke system calls to implement its primitives.

I have taken the same approach as libc: `src/libcloudabi` + `src/rustc/cloudabi_shim`. If some other naming scheme is preferred, feel free to let me know! As `libcloudabi` is pretty small, maybe it makes sense to copy, instead of using a submodule?
2018-01-07 02:36:03 +08:00
kennytm
b63f89783d Rollup merge of #47170 - eddyb:us-vs-usize, r=nikomatsakis
rustc: use {U,I}size instead of {U,I}s shorthands.

`Us`/`Is` come from a time when `us` and `is` were the literal suffixes that are now `usize` / `isize`.

r? @nikomatsakis
2018-01-07 02:36:02 +08:00
kennytm
d9d5c667d8 Rollup merge of #46947 - tspiteri:checked-div-rem-none, r=frewsxcv
doc: improve None condition doc for `checked_div` and `checked_rem`

This commit improves the condition mentioned in the docs for which `checked_div` and `checked_rem` return `None`.

For signed division, the commit changes "the operation results in overflow" to "the division results in overflow", otherwise there is room for misinterpretation for `checked_rem`: Without considering overflow, `MIN % -1` would be simply zero, allowing the misinterpretation that "the operation" does not result in overflow in this case. This ambiguity is removed using "when the division results in overflow".

For unsigned division, the condition for `None` should be simply when `rhs == 0`, as no other overflow is possible.
2018-01-07 02:36:01 +08:00
keatinge
8260209bb2 Add tests for error message for pattern matching typo 2018-01-06 12:34:19 -05:00
keatinge
4436bca5af fix style 2018-01-06 10:05:02 -05:00
keatinge
dcb53d754b Emit non-fatal error instead 2018-01-06 10:01:54 -05:00
bors
72176cf96c Auto merge of #47141 - alexcrichton:bump-bootstrap, r=alexcrichton
Bump to 1.25.0

* Bump the release version to 1.25
* Bump the bootstrap compiler to the recent beta
* Allow using unstable rustdoc features on beta - this fix has been applied to
  the beta branch but needed to go to the master branch as well.
2018-01-06 14:50:14 +00:00
keatinge
13576dfcd4 fix capitalization 2018-01-06 08:37:01 -05:00
keatinge
41f58a7cf6 Add help message for incorrect pattern syntax 2018-01-06 07:47:51 -05:00
bors
a9a03d9bfb Auto merge of #47099 - SergioBenitez:master, r=jseyfried
Add 'Span::parent()' and 'Span::source()' to proc_macro API.

As the title suggests: a couple of useful methods for `proc_macro`.
2018-01-06 12:02:36 +00:00
Sam
7c971b2ab1 Debuginfo Shadowed Variable test: fix check numbering 2018-01-06 11:10:17 +00:00
bors
90e019bacd Auto merge of #47083 - CAD97:issue-46976, r=nikomatsakis
Issue 46976

ICE is due to an empty path segments, so I set the path to be the same as the in band ty params symbol. (I think this is how regular generics end up being handled?)

Pinging @cramertj, this is your code I'm editing here.
2018-01-06 09:22:16 +00:00
ritiek
4054030542 Show line numbers 2018-01-06 11:43:34 +05:30
Manish Goregaokar
9066219f43 Regression tests for #47175 2018-01-06 11:17:12 +05:30