Commit Graph

84963 Commits

Author SHA1 Message Date
Vadim Petrochenkov
64c0efab85 Make some ui/parser tests compile-pass 2018-10-21 14:06:28 +03:00
Vadim Petrochenkov
51f3b6241d Move more parsing tests to ui/parser 2018-10-21 14:06:28 +03:00
Vadim Petrochenkov
52ede63263 Remove the parse-fail test suite 2018-10-21 14:06:28 +03:00
Vadim Petrochenkov
73e1f8970f Move parse-fail tests to UI 2018-10-21 14:06:28 +03:00
bors
554b7874a9 Auto merge of #54919 - alexcrichton:update-cargo, r=Mark-Simulacrum
Update Cargo, build curl/OpenSSL statically via features

In addition to to updating Cargo's submodule and Cargo's dependencies,
this also updates Cargo's build to build OpenSSL statically into Cargo
as well as libcurl unconditionally. This removes OpenSSL build logic
from the bootstrap code, and otherwise requests that even on OSX we
build curl statically.
2018-10-21 06:48:10 +00:00
Alex Crichton
4f661c016f Update Cargo, build curl/OpenSSL statically via features
In addition to to updating Cargo's submodule and Cargo's dependencies,
this also updates Cargo's build to build OpenSSL statically into Cargo
as well as libcurl unconditionally. This removes OpenSSL build logic
from the bootstrap code, and otherwise requests that even on OSX we
build curl statically.
2018-10-20 18:47:01 -07:00
bors
d5418764ad Auto merge of #55230 - Manishearth:rollup, r=Manishearth
Rollup of 5 pull requests

Successful merges:

 - #55156 (Fixed: Multiple errors on single typo in match pattern)
 - #55189 (update books for the next release)
 - #55193 (make asm diagnostic instruction optional)
 - #55203 (Write an initial version of the `program_clauses` callback)
 - #55213 (ignore target folders)

Failed merges:

r? @ghost
2018-10-20 22:23:36 +00:00
Manish Goregaokar
f2848a010a Rollup merge of #55213 - qmx:tidy-fix, r=tmandry
when you try to edit a crate inside the compiler tree using rls, it
generates it's assets under target/rls, then tidy is trying to validate
line lenghts for C headers, etc
2018-10-20 13:15:52 -07:00
Manish Goregaokar
50cc08dd94 Rollup merge of #55203 - scalexm:program-clauses, r=nikomatsakis
Sometimes I just return `ty::List::empty()` because I cannot express these \"built-in\" clauses without bound tys support.

r? @nikomatsakis
2018-10-20 13:15:48 -07:00
Manish Goregaokar
ddf33eaa67 Rollup merge of #55189 - steveklabnik:update-books, r=QuietMisdreavus
Sending this PR in today so we can see what linkchecker wants overnight; please don't r+ until travis is green!
2018-10-20 13:15:45 -07:00
Manish Goregaokar
b860765355 Rollup merge of #55073 - alexcrichton:demote-simd, r=nagisa
The issue of passing around SIMD types as values between functions has
seen [quite a lot] of [discussion], and although we thought [we fixed
it][quite a lot] it [wasn't]! This PR is a change to rustc to, again,
try to fix this issue.

The fundamental problem here remains the same, if a SIMD vector argument
is passed by-value in LLVM's function type, then if the caller and
callee disagree on target features a miscompile happens. We solve this
by never passing SIMD vectors by-value, but LLVM will still thwart us
with its argument promotion pass to promote by-ref SIMD arguments to
by-val SIMD arguments.

This commit is an attempt to thwart LLVM thwarting us. We, just before
codegen, will take yet another look at the LLVM module and demote any
by-value SIMD arguments we see. This is a very manual attempt by us to
ensure the codegen for a module keeps working, and it unfortunately is
likely producing suboptimal code, even in release mode. The saving grace
for this, in theory, is that if SIMD types are passed by-value across
a boundary in release mode it's pretty unlikely to be performance
sensitive (as it's already doing a load/store, and otherwise
perf-sensitive bits should be inlined).

The implementation here is basically a big wad of C++. It was largely
copied from LLVM's own argument promotion pass, only doing the reverse.
In local testing this...

Closes #50154
Closes #52636
Closes #54583
Closes #55059

[quite a lot]: https://github.com/rust-lang/rust/pull/47743
[discussion]: https://github.com/rust-lang/rust/issues/44367
[wasn't]: https://github.com/rust-lang/rust/issues/50154
2018-10-20 13:15:39 -07:00
bors
155510e377 Auto merge of #55156 - PramodBisht:issue/52717, r=estebank
Fixed: Multiple errors on single typo in match pattern

Here we have fixed the case where we were throwing two diagnostic messages `E0026` and `E0027` for same case.

Example
```
error[E0026]: variant `A::A` does not have a field named `fob`
  --> src/test/ui/issue-52717.rs:20:12
   |
20 |     A::A { fob } => { println!("{}", fob); }
   |            ^^^ variant `A::A` does not have this field

error[E0027]: pattern does not mention field `foo`
  --> src/test/ui/issue-52717.rs:20:5
   |
20 |     A::A { fob } => { println!("{}", fob); }
   |     ^^^^^^^^^^^^ missing field `foo`

error: aborting due to 2 previous errors
```

Here above we can see that both `E0026` and `E0027` are depicting
same thing.

So, to fix this issue, we are simply checking if for last element of `inexistent_fields` is there any value lies in `unmentioned_fields` using levenshtein algorithm, if it does then for that case we are simply deleting element from `unmentioned_fields`. More or less, now instead of showing separate message in `E0027` we are giving extra hint on `E0026`

r? @estebank
2018-10-20 19:45:53 +00:00
bors
22cc2ae805 Auto merge of #55119 - varkor:unwarned-match-on-never, r=nikomatsakis
Allow explicit matches on ! without warning

It's now possible to explicitly match on `!` without an unreachable code warning. This seems desirable as promoting explicitness.

Fixes https://github.com/rust-lang/rust/issues/55116.
2018-10-20 15:02:26 +00:00
Steve Klabnik
69daa9aac1 update books for the next release 2018-10-20 07:47:32 -04:00
bors
ca2639e82e Auto merge of #55014 - ljedrz:lazyboye_unwraps, r=matthewjasper
Prefer unwrap_or_else to unwrap_or in case of function calls/allocations

The contents of `unwrap_or` are evaluated eagerly, so it's not a good pick in case of function calls and allocations. This PR also changes a few `unwrap_or`s with `unwrap_or_default`.

An added bonus is that in some cases this change also reveals if the object it's called on is an `Option` or a `Result` (based on whether the closure takes an argument).
2018-10-20 11:22:48 +00:00
bors
94273f4d8e Auto merge of #55114 - oli-obk:fx#map, r=nikomatsakis
Deprecate the `FxHashMap()` and `FxHashSet()` constructor function hack
2018-10-20 08:45:55 +00:00
bors
89be71a462 Auto merge of #55007 - davidtwco:issue-39175, r=petrochenkov
Help suggests non-existent package std::os::ext::process::CommandExt

Fixes #39175.
2018-10-20 01:31:10 +00:00
bors
42dde960f9 Auto merge of #55162 - nikomatsakis:issue-54902-underscore-bound, r=tmandry
handle underscore bounds in unexpected places

Per the discussion on #54902, I made it a hard error to use lifetime bounds in various places where they used to be permitted:

- `where Foo: Bar<'_>` for example

I also moved error reporting to HIR lowering and added `Error` variants to let us suppress downstream errors that result.

I (imo) improved the error message wording to be clearer, as well.

In the process, I fixed the ICE in #52098.

Fixes #54902
Fixes #52098
2018-10-19 22:54:14 +00:00
Niko Matsakis
c294ec640b add more to the ERROR messages 2018-10-19 16:44:01 -04:00
Niko Matsakis
df8adb53c9 fix error messages 2018-10-19 16:41:29 -04:00
bors
78ff609d73 Auto merge of #55152 - nikomatsakis:nll-issue-54571-type-annot-in-constants, r=pnkfelix
support type annot in constants, casts

Fixes #54571
Fixes #54332
Fixes #55183

r? @pnkfelix
2018-10-19 20:20:12 +00:00
Douglas Campos
cf90f72f55 ignore target folders
when you try to edit a crate inside the compiler tree using rls, it
generates it's assets under target/rls, then tidy is trying to validate
line lenghts for C headers, etc
2018-10-19 19:26:43 +00:00
scalexm
91da1a5c17 Write an initial version of the program_clauses callback 2018-10-19 15:47:22 +02:00
David Wood
4334aaacf1
Only suggest paths that exist.
In order to output a path that could actually be imported (valid and
visible), we need to handle re-exports correctly.

For example, take `std::os::unix::process::CommandExt`, this trait is
actually defined at `std::sys::unix::ext::process::CommandExt` (at time
of writing).

`std::os::unix` rexports the contents of `std::sys::unix::ext`.
`std::sys` is private so the "true" path to `CommandExt` isn't accessible.

In this case, the visible parent map will look something like this:

(child) -> (parent)
`std::sys::unix::ext::process::CommandExt` -> `std::sys::unix::ext::process`
`std::sys::unix::ext::process` -> `std::sys::unix::ext`
`std::sys::unix::ext` -> `std::os`

This is correct, as the visible parent of `std::sys::unix::ext` is in fact
`std::os`.

When printing the path to `CommandExt` and looking at the current
segment that corresponds to `std::sys::unix::ext`, we would normally
print `ext` and then go to the parent - resulting in a mangled path like
`std::os::ext::process::CommandExt`.

Instead, we must detect that there was a re-export and instead print `unix`
(which is the name `std::sys::unix::ext` was re-exported as in `std::os`).
2018-10-19 15:45:46 +02:00
Niko Matsakis
9a7bb0ef24 normalize the self-type that we extract from impl 2018-10-19 09:34:28 -04:00
Niko Matsakis
f5cc7dba8a even though we don't need it yet, fix the "fast path" code 2018-10-19 09:34:28 -04:00
Niko Matsakis
16b3ea1e2e add a test that we enforce 'static errors post normalization 2018-10-19 09:34:28 -04:00
Niko Matsakis
820c2657f2 add useful debug log 2018-10-19 09:34:28 -04:00
Niko Matsakis
061c9a2bed region_infer/mod.rs: rustfmt 2018-10-19 09:34:28 -04:00
Niko Matsakis
02e5a902e8 pacify the mercilous tidy 2018-10-19 09:34:28 -04:00
Niko Matsakis
a66ab2bedc skip user-type annotations if they don't have regions 2018-10-19 09:34:28 -04:00
Niko Matsakis
d5d5e8c5f5 lowering casts in constants now creates multiple uses
This can trigger more errors than before. Not sure what is the best
fix here.
2018-10-19 09:34:28 -04:00
Niko Matsakis
26fdac6224 pacify the mercilous tidy 2018-10-19 09:34:28 -04:00
Niko Matsakis
ab79cf951b save the user-provided type immediately upon return from astconv 2018-10-19 09:34:28 -04:00
Niko Matsakis
2d98e9e0aa create type ascription for any cast
Also, avoid shadowing of the `ty` variable by giving the `cast_ty` and
`var_ty` variables different names.  We want to get the user-provided
type from `cast_ty.hir_id`.
2018-10-19 09:34:28 -04:00
Keith Yeung
80ad300b89 Wrap cast expressions inside of ValueTypeAscription 2018-10-19 09:34:28 -04:00
Niko Matsakis
e20fa70bb3 suppress duplicate -- or near duplicate -- type test errors 2018-10-19 09:34:28 -04:00
Niko Matsakis
bfb1d959c3 normalize and prove predicates
Also include a test that was not working previously.
2018-10-19 09:34:27 -04:00
Niko Matsakis
121f3c8d19 normalize after substitution 2018-10-19 09:32:32 -04:00
Niko Matsakis
f99300fcbd pull relate_type_and_user_type code into type_check module
It's really layered atop the core "relate-types" code
2018-10-19 09:32:30 -04:00
Oliver Scherer
53e92f4573 Update unit tests 2018-10-19 14:34:45 +02:00
Oliver Scherer
bf3d40aa7e Update TypedArena tests 2018-10-19 14:34:44 +02:00
Oliver Scherer
54eb222c40 Update more internals tests to default 2018-10-19 14:34:44 +02:00
Oliver Scherer
ab3f37ec43 Free some memory instead of just dropping elements 2018-10-19 14:34:44 +02:00
Oliver Scherer
55f76628ee Update a compiler-test to the Default changes 2018-10-19 14:34:44 +02:00
Oliver Scherer
36641ce8cd Remove unused box 2018-10-19 14:34:44 +02:00
Oliver Scherer
5075174c46 Derives often have very strict bounds 2018-10-19 14:34:44 +02:00
Oliver Scherer
3c9258e604 Prefer Default::default over FxHash*::default in struct constructors 2018-10-19 14:34:44 +02:00
Oliver Scherer
ee81739dc1 Deprecate the FxHashMap() and FxHashSet() constructor function hack 2018-10-19 14:34:44 +02:00
Niko Matsakis
e7ab33e7a6 type_check/mod.rs: rustfmt 2018-10-19 08:31:35 -04:00