Commit graph

21100 commits

Author SHA1 Message Date
varkor
befc4b1100 Rename hir::map::Node to hir::map::NodeKind 2018-08-27 21:45:46 +01:00
bors
70a21e89f1 Auto merge of #53441 - toidiu:ak-fix53419, r=nikomatsakis
fix for late-bound regions

Fix for https://github.com/rust-lang/rust/issues/53419

r? @nikomatsakis
2018-08-27 17:42:45 +00:00
bors
8785e348ba Auto merge of #53580 - nikomatsakis:nll-issue-53568, r=pnkfelix
fix NLL ICEs

Custom type-ops reuse some of the query machinery -- but while query results are canonicalized after they are constructed, custom type ops are not, and hence we have to resolve the type variables to avoid an ICE here.

Also, use the type-op machinery for implied outlives bounds.

Fixes #53568
Fixes #52992
Fixes #53680
2018-08-27 14:44:13 +00:00
bors
291d958585 Auto merge of #53624 - Zoxc:ice-fix, r=oli-obk
Move with_globals setup from run_compiler to run

An alternative to https://github.com/rust-lang/rust/pull/53526

Note this breaks some miri stuff and clippy since they call `run_compiler` directly, and they now need to also call `with_globals ` cc @rust-lang/dev-tools

r? @oli-obk
2018-08-27 09:08:27 +00:00
John Kåre Alsaker
bd04796d6e Move with_globals setup from run_compiler to run 2018-08-27 02:19:07 +02:00
Alex Crichton
0a2282e128 rustc: Continue to tweak "std internal symbols"
In investigating [an issue][1] with `panic_implementation` defined in an
executable that's optimized I once again got to rethinking a bit about the
`rustc_std_internal_symbol` attribute as well as weak lang items. We've sort of
been non-stop tweaking these items ever since their inception, and this
continues to the trend.

The crux of the bug was that in the reachability we have a [different branch][2]
for non-library builds which meant that weak lang items (and std internal
symbols) weren't considered reachable, causing them to get eliminiated by
ThinLTO passes. The fix was to basically tweak that branch to consider these
symbols to ensure that they're propagated all the way to the linker.

Along the way I've attempted to erode the distinction between std internal
symbols and weak lang items by having weak lang items automatically configure
fields of `CodegenFnAttrs`. That way most code no longer even considers weak
lang items and they're simply considered normal functions with attributes about
the ABI.

In the end this fixes the final comment of #51342

[1]: https://github.com/rust-lang/rust/issues/51342#issuecomment-414368019
[2]: 35bf1ae257/src/librustc/middle/reachable.rs (L225-L238)
2018-08-26 16:34:14 -07:00
bors
691638582a Auto merge of #53619 - japaric:panic-handler, r=SimonSapin
add #[panic_handler]; deprecate #[panic_implementation]

r? @SimonSapin
cc #44489
2018-08-26 04:02:19 +00:00
bors
36f14b95a2 Auto merge of #53567 - alexcrichton:update-cargo, r=Mark-Simulacrum
Update Cargo submodule

Also update Cargo's dependencies while we're at it
2018-08-26 00:58:07 +00:00
Alex Crichton
2863b75425 Update Cargo submodule
Also update Cargo's dependencies while we're at it
2018-08-25 16:26:28 -07:00
bors
f272688bbb Auto merge of #53612 - mark-i-m:anon_param_disallowed_2018, r=petrochenkov
Remove anonymous trait params from 2018 and beyond

cc @Centril @nikomatsakis
cc #41686 rust-lang/rfcs#2522 #53272

This PR removes support for anonymous trait parameters syntactically in rust 2018 and onward.

TODO:
- [x] Add tests
2018-08-25 22:50:12 +00:00
bors
545f22340f Auto merge of #53584 - mcr431:Fix-#53525, r=varkor
Fix #53525  - Unify E0243, E0244, E0087, E0088, E0089, and E0090 into E0107

Fix #53525

This pr merges all errors related to too many or too few generic arguments in types and functions. E0243, E0244, E0087, E0088, E0089, E0090 errors will no longer be emitted and E0107 will be used instead.
2018-08-25 13:00:20 +00:00
bors
f87d9135b4 Auto merge of #53577 - GuillaumeGomez:rustdoc-substring-search, r=QuietMisdreavus
Search a substring instead of start of string in rustdoc search

Fixes #49762.

r? @QuietMisdreavus
2018-08-25 02:40:14 +00:00
bors
d95f078f0a Auto merge of #53225 - nikomatsakis:nll-type-annot, r=pnkfelix
MIR: support user-given type annotations on fns, structs, and enums

This branch adds tooling to track user-given type annotations on functions, structs, and enum variant expressions. The user-given types are passed onto NLL which then enforces them.

cc #47184 — not a complete fix, as there are more cases to cover

r? @eddyb
cc @rust-lang/wg-compiler-nll
2018-08-24 22:42:00 +00:00
Mark Mansi
b32b6e803b fix tests 2018-08-24 15:48:00 -05:00
Mark Mansi
0cec1b92c3 oops 2018-08-24 15:48:00 -05:00
Mark Mansi
88037a5587 Add/update tests for 2015, 2018, rustfix 2018-08-24 15:48:00 -05:00
Mark Mansi
3c3c642a05 Start working on a test 2018-08-24 15:48:00 -05:00
bors
d41f21f11a Auto merge of #53460 - JoshBrudnak:master, r=estebank
Fix compile panic on non existent type return

Reverted the change 28a76a9000 (diff-4ed25c00aceb84666fca639cf8101c7cL1069) which was panicking when returning a type that cannot be found in the current scope and added testing for the compile error.

For example:
```rust
fn addition() -> Wrapper<impl A> {}
```
Where Wrapper is undefined in the scope.
2018-08-24 19:21:27 +00:00
Niko Matsakis
ed73a3267a address pnkfelix nits 2018-08-24 13:27:38 -04:00
Niko Matsakis
5778fec665 pacify the mercilous tidy: adt-nullary-enums test 2018-08-24 13:27:38 -04:00
Niko Matsakis
f8653006d3 ufcs with annot in position 1 and 2 2018-08-24 13:27:38 -04:00
Niko Matsakis
05c1b89308 rename test case
the 3 is because the type arguments are in the 3rd position
2018-08-24 13:27:38 -04:00
Niko Matsakis
e84db9bc1b add test for method ufcs notation 2018-08-24 13:27:38 -04:00
Niko Matsakis
56506cfa25 support user-given types in adts 2018-08-24 13:27:38 -04:00
Niko Matsakis
2d1d3fef62 support user annotations in fns, methods 2018-08-24 13:27:38 -04:00
Niko Matsakis
d7d4d7c8d5 add a user_substs table and store the annotations in there 2018-08-24 13:27:38 -04:00
bors
727eabd681 Auto merge of #53662 - kennytm:rollup, r=kennytm
Rollup of 16 pull requests

Successful merges:

 - #53311 (Window Mutex: Document that we properly initialize the SRWLock)
 - #53503 (Discourage overuse of mem::forget)
 - #53545 (Fix #50865: ICE on impl-trait returning functions reaching private items)
 - #53559 (add macro check for lint)
 - #53562 (Lament the invincibility of the Turbofish)
 - #53563 (use String::new() instead of String::from(""), "".to_string(), "".to_owned() or "".into())
 - #53592 (docs: minor stylistic changes to str/string docs)
 - #53594 (Update RELEASES.md to include clippy-preview)
 - #53600 (Fix a grammatical mistake in "expected generic arguments" errors)
 - #53614 (update nomicon and book)
 - #53617 (tidy: Stop requiring a license header)
 - #53618 (Add missing fmt examples)
 - #53636 (Prefer `.nth(n)` over `.skip(n).next()`.)
 - #53644 (Use SmallVec for SmallCStr)
 - #53664 (Remove unnecessary closure in rustc_mir/build/mod.rs)
 - #53666 (Added rustc_codegen_llvm to compiler documentation.)
2018-08-24 17:02:23 +00:00
kennytm
a1ec2f76bb
Rollup merge of #53545 - FelixMcFelix:fix-50865-beta, r=petrochenkov
Fix #50865: ICE on impl-trait returning functions reaching private items

Adds a test case as suggested in #50865, and implements @petrochenkov's suggestion. Fixes #50865.

Impl-trait-returning functions are marked under a new (low) access level, which they propagate rather than `AccessLevels::Reachable`. `AccessLevels::is_reachable` returns false for such items (leaving stability analysis unaffected), these items may still be visible to the lints phase however.
2018-08-24 23:27:16 +08:00
bors
61b0072707 Auto merge of #53044 - SergioBenitez:stable-attr-literals, r=petrochenkov
Stabilize 'attr_literals' feature.

RFC Issue: rust-lang/rfcs#1559
Tracking Issue: rust-lang/rust#34981

Reference PR: https://github.com/rust-lang-nursery/reference/pull/388.
2018-08-24 14:48:29 +00:00
Matthew Russo
79afc6e9e8 updates tests to use new error code 2018-08-24 08:51:25 -04:00
Matthew Russo
aa2abeaf34 Merging error code descriptions into E0107 and adding "no longer
emitted" messages to the others.
2018-08-24 08:49:56 -04:00
kennytm
9dfb95b11f
Rollup merge of #53636 - frewsxcv:frewsxcv-nth, r=rkruppe
Prefer `.nth(n)` over `.skip(n).next()`.

Found by clippy.
2018-08-24 19:24:44 +08:00
kennytm
7d990fa7cd
Rollup merge of #53600 - varkor:expected-generic-arg-s, r=eddyb
Fix a grammatical mistake in "expected generic arguments" errors

r? @eddyb
2018-08-24 19:24:37 +08:00
kennytm
714e5b3c46
Rollup merge of #53562 - varkor:bastion-of-the-turbofish, r=nagisa
Lament the invincibility of the Turbofish

Here a test case is added to ensure that any others attempting to drive the Turbofish to extinction have second thoughts. Previously the [entire test suite would succeed](https://github.com/rust-lang/rust/pull/53511) if generic arguments were accepted without disambiguation, making for [confusing and heartbreaking circumstances](https://github.com/rust-lang/rfcs/pull/2527).
2018-08-24 16:44:34 +08:00
kennytm
7f396bad9e
Rollup merge of #53559 - Dylan-DPC:fix/missing-doc-lint, r=kennytm
add macro check for lint

Fixes #53537
2018-08-24 16:44:32 +08:00
Sergio Benitez
ed0bd38cac Stabilize 'attr_literals' feature. 2018-08-23 19:06:07 -07:00
Vadim Petrochenkov
77f2a2fe35 Turn the error for module-relative access to macro-expanded macro_export macros into a deprecation lint 2018-08-24 02:51:41 +03:00
Vadim Petrochenkov
7a8b726811 Add a test for reset expansion info 2018-08-24 02:50:34 +03:00
bors
5ce5e08606 Auto merge of #53588 - tristanburgess:52985_diagnostics_no_concrete_type_behind_existential_type, r=oli-obk
52985 diagnostics no concrete type behind existential type

@oli-obk FYI. See below for new cycle error generated.

```rust
error[E0391]: cycle detected when processing `Foo`
 --> /dev/staging/existential_type_no_concrete_type_nouse_potential.rs:3:1
  |
3 | existential type Foo: Copy;
  | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  |
note: ...which requires processing `bar`...
 --> /dev/staging/existential_type_no_concrete_type_nouse_potential.rs:6:23
  |
6 |   fn bar(x: Foo) -> Foo {
  |  _______________________^
7 | |     x
8 | | }
  | |_^
  = note: ...which again requires processing `Foo`, completing the cycle

error: aborting due to previous error

For more information about this error, try `rustc --explain E0391`.
```
2018-08-23 20:34:12 +00:00
Jorge Aparicio
363db14704 fix new ui test 2018-08-23 21:43:55 +02:00
Jorge Aparicio
ca03f86aad fix tidy 2018-08-23 20:58:55 +02:00
Jorge Aparicio
a774c81f98 add #[panic_handler]; deprecate #[panic_implementation] 2018-08-23 20:58:55 +02:00
toidiu
3860eabbb6 fix for late-bound regions 2018-08-23 14:35:59 -04:00
dylan_DPC
747722e444 fix testcase 2018-08-23 23:21:54 +05:30
bors
e5284b0b57 Auto merge of #53384 - gootorov:use-servo-smallvec, r=michaelwoerister
Use optimized SmallVec implementation

This PR replaces current SmallVec implementation with the one from the Servo project.

Closes https://github.com/rust-lang/rust/issues/51640

r? @Mark-Simulacrum
2018-08-23 14:40:22 +00:00
Corey Farwell
9e0ff24b6d Prefer .nth(n) over .skip(n).next().
Found by clippy.
2018-08-23 09:35:49 -04:00
bors
35bf1ae257 Auto merge of #52602 - scottmcm:tryblock-expr, r=nikomatsakis
Implement try block expressions

I noticed that `try` wasn't a keyword yet in Rust 2018, so...

~~Fix​es https://github.com/rust-lang/rust/issues/52604~~ That was fixed by PR https://github.com/rust-lang/rust/pull/53135
cc https://github.com/rust-lang/rust/issues/31436 https://github.com/rust-lang/rust/issues/50412
2018-08-23 11:46:24 +00:00
Niko Matsakis
a59584a6ff use TypeOp machinery for outlives_bounds
Fixes #52992
2018-08-23 07:38:47 -04:00
Niko Matsakis
89574a6fc7 resolve type variables in the custom type op pathway 2018-08-23 07:38:47 -04:00
bors
827e57c2f6 Auto merge of #53459 - petrochenkov:stabmore, r=nrc
Stabilize a few secondary macro features

- `tool_attributes` - closes https://github.com/rust-lang/rust/issues/44690
- `proc_macro_path_invoc` - this feature was created due to issues with tool attributes (https://github.com/rust-lang/rust/issues/51277), those issues are now fixed (https://github.com/rust-lang/rust/pull/52841)
- partially `proc_macro_gen` - this feature was created due to issue https://github.com/rust-lang/rust/issues/50504, the issue is now fixed (https://github.com/rust-lang/rust/pull/51952), so proc macros can generate modules. They still can't generate `macro_rules` items though due to unclear hygiene interactions.
2018-08-23 08:38:22 +00:00