Commit graph

25582 commits

Author SHA1 Message Date
Vadim Petrochenkov
434152157f Remove lint annotations in specific crates that are already enforced by rustbuild
Remove some random unnecessary lint `allow`s
2019-07-28 18:46:24 +03:00
Mazdak Farrokhzad
d17ad1b069
Rollup merge of #63067 - JohnTitor:test-for-50900, r=Centril
Add test for issue-50900

Closes #50900
2019-07-28 11:11:15 +02:00
Mazdak Farrokhzad
4b3a017b35
Rollup merge of #63061 - Centril:constantly-improving, r=scottmcm
In which we constantly improve the Vec(Deque) array PartialEq impls

Use the same approach as in https://github.com/rust-lang/rust/pull/62435 as sanctioned by https://github.com/rust-lang/rust/issues/61415#issuecomment-504155110.

r? @scottmcm
2019-07-28 11:11:14 +02:00
Mazdak Farrokhzad
a558668cf2
Rollup merge of #63051 - estebank:borrow-ice, r=matthewjasper
Avoid ICE when referencing desugared local binding in borrow error

To avoid leaking the names of local bindings from expressions like for loops, #60984 explicitly ignored them, but an assertion that `LocalKind::Var` *must* have a name would trigger an ICE.

Before this change, the binding generated by desugaring the for loop would leak into the diagnostic (#63027):
```
error[E0515]: cannot return value referencing local variable `__next`
  --> return-local-binding-from-desugaring.rs:LL:CC
   |
LL |     for ref x in xs {
   |         ----- `__next` is borrowed here
...
LL |     result
   |     ^^^^^^ returns a value referencing data owned by the current function
```

Ideally `LocalKind` would carry more information to more accurately explain the problem, but for now, in order to avoid the ICE (fix #63026), we accept `LocalKind::Var` without a name and produce the following output:

```
error[E0515]: cannot return value referencing local binding
  --> $DIR/return-local-binding-from-desugaring.rs:30:5
   |
LL |     for ref x in xs {
   |                  -- local binding introduced here
...
LL |     result
   |     ^^^^^^ returns a value referencing data owned by the current function
```
2019-07-28 11:11:12 +02:00
Mazdak Farrokhzad
75e23ff411
Rollup merge of #62550 - Centril:rest-patterns, r=petrochenkov
Implement RFC 2707 + Parser recovery for range patterns

Implement https://github.com/rust-lang/rfcs/pull/2707.

- Add a new basic syntactic pattern form `ast::PatKind::Rest` (parsed as `..` or `DOTDOT`) and simplify `ast::PatKind::{Slice, Tuple, TupleStruct}` as a result.

- Lower `ast::PatKind::Rest` in combination with the aforementioned `PatKind` variants as well as `PatKind::Ident`. The HIR remains unchanged for now (may be advisable to make slight adjustments later).

- Refactor `parser.rs` wrt. parsing sequences and lists of things in the process.

- Add parser recovery for range patterns of form `X..`, `X..=`, `X...`, `..Y`, `..=Y`, and `...Y`.
   This should make it easy to actually support these patterns semantically later if we so desire.

cc https://github.com/rust-lang/rust/issues/62254

r? @petrochenkov
2019-07-28 11:11:04 +02:00
Yuki Okushi
15307ca993 Move to src/test/ui/match/ 2019-07-28 16:51:21 +09:00
Yuki Okushi
29a00ef4a6 Add test for issue-50900 2019-07-28 16:26:01 +09:00
Mazdak Farrokhzad
d33696fcb4 borrowck-describe-lvalue: --bless --compare-mode=nll. 2019-07-28 07:04:16 +02:00
Mazdak Farrokhzad
87742073a0 And --bless tests accordingly for those exceptions. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
5f4dd1d19a Address comments re. off-topic errors. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
acc6a6d8cb --bless tests after rebase. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
7c0b1da2c1 Win some lose some; Unfortunately we lost recovery in one case. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
e3cdadd73f (pat, ..,) is now syntactically legal. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
06e5ae5c82 Account for better recovery in two cases. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
e725ea2215 Intersection patterns 'p1 @ p2' are not supported. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
91c8b53f45 --bless tests due to new subslice syntax. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
75da43dc87 Use new 'p @ ..' syntax in tests. 2019-07-28 06:53:39 +02:00
Mazdak Farrokhzad
891a736b02 Test parsing and recovery of all sorts of range patterns. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
f6c8234f9f And also --bless those recovery tests. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
2411134c78 Update tests wrt. recovery of range patterns. 2019-07-28 06:53:38 +02:00
Mazdak Farrokhzad
bfdfa85e73 Add tests for Vec(Deque) array PartialEq impls. 2019-07-28 06:46:41 +02:00
Esteban Küber
01ba0e3718 review comments 2019-07-27 19:15:25 -07:00
Mazdak Farrokhzad
5c7008540d
Rollup merge of #63038 - eupn:outer-attribute-diag, r=estebank
Make more informative error on outer attribute after inner

Fixes #61218.

?r @estebank
2019-07-28 03:01:53 +02:00
Mazdak Farrokhzad
ece18b750d
Rollup merge of #61207 - taiki-e:arbitrary_self_types-lifetime-elision-2, r=Centril
Allow lifetime elision in `Pin<&(mut) Self>`

This PR changes `self: &(mut) S` elision rules to instead visit the type of `self` and look for `&(mut) S` (where `is_self_ty(S)`) within it

Replaces #60944

Closes #52675

r? @eddyb
cc @cramertj @Centril @withoutboats @scottmcm
2019-07-28 03:01:42 +02:00
Esteban Küber
b523b2d51e Avoid ICE when referencing desugared local binding in borrow error 2019-07-27 13:25:09 -07:00
bors
c798dffac9 Auto merge of #63029 - petrochenkov:rpass, r=Centril
Move run-pass tests to ui

This is the second attempt at doing https://github.com/rust-lang/rust/pull/53994 (which was previously reverted in https://github.com/rust-lang/rust/pull/54530).

The issue with inability to run the test suite in a faster way (https://github.com/rust-lang/rust/issues/54047) that motivated the revert was recently addressed by https://github.com/rust-lang/rust/pull/61755.

r? @Centril
2019-07-27 19:27:36 +00:00
Vadim Petrochenkov
f1c8673ae7 Fix issues with git converting CRLF to CR
UI tests now run on asmjs-unknown-emscripten, ignore tests with inline assembly which is not supported on emscripten targets
2019-07-27 19:22:45 +03:00
Vadim Petrochenkov
5486cc69bd tests: Move run-pass tests with naming conflicts to ui 2019-07-27 18:56:17 +03:00
Vadim Petrochenkov
9be35f82c1 tests: Move run-pass tests without naming conflicts to ui 2019-07-27 18:56:16 +03:00
Vadim Petrochenkov
ca9faa52f5 tests: Add missing run-pass annotations 2019-07-27 18:56:13 +03:00
Mazdak Farrokhzad
513ab54360
Rollup merge of #63014 - davidtwco:rustfix-incorrect-dyn-suggestion, r=estebank
Stop bare trait lint applying to macro call sites

Fixes #61963. Apologies for the delay with in fixing this. If anyone has a better idea how to detect this macro call site case, I'd be happy to fix this in a more robust, less hacky way.

r? @estebank
2019-07-27 17:40:51 +02:00
Mazdak Farrokhzad
b25d74fa49
Rollup merge of #62982 - oli-obk:static_cycle, r=RalfJung
Don't access a static just for its size and alignment

cc @RalfJung

fixes #62189
2019-07-27 17:40:48 +02:00
Mazdak Farrokhzad
4b8031cf2c
Rollup merge of #62423 - Aaron1011:fix/existential-cycle, r=oli-obk
Fix cycle error with existential types

Fixes #61863

We now allow uses of `existential type`'s that aren't defining uses - that is, uses which don't constrain the underlying concrete type.

To make this work correctly, we also modify `eq_opaque_type_and_type` to not try to apply additional constraints to an opaque type. If we have code like this:

```rust
existential type Foo;
fn foo1() -> Foo { ... }
fn foo2() -> Foo { foo1() }
```

then `foo2` doesn't end up constraining `Foo`, which means that `foo2` will end up using the type `Foo` internally - that is, an actual `TyKind::Opaque`. We don't want to equate this to the underlying concrete type - we just need to enforce the basic equality constraint between the two types (here, the return type of `foo1` and the return type of `foo2`)
2019-07-27 17:40:45 +02:00
Evgenii P
693be441f4 Fix ui/parser/attr test 2019-07-27 19:37:03 +07:00
Evgenii P
2787cb23f0 Fix failing UI tests 2019-07-27 18:24:48 +07:00
Evgenii P
8b3f28cf0f Make more informative error on outer attr after inner 2019-07-27 16:45:45 +07:00
Taiki Endo
05f67a297a arbitrary_self_types lifetime elision: --bless --compare-mode=nll 2019-07-27 12:35:05 +09:00
Taiki Endo
34f59eb9c5 Fix typo 2019-07-27 12:28:07 +09:00
Taiki Endo
1e2905269b Add tests for self: (&)AssocType 2019-07-27 12:28:07 +09:00
Taiki Endo
8507b8e42f Add test for multiple ref-self 2019-07-27 12:28:06 +09:00
Taiki Endo
aab9edc68a Minor clean up 2019-07-27 12:28:06 +09:00
Taiki Endo
c1f22c018e Add main functions and check-pass annotations 2019-07-27 12:28:05 +09:00
Taiki Endo
258498af58 Update src/test/ui/self/elision/README.md
Co-Authored-By: Mazdak Farrokhzad <twingoow@gmail.com>
2019-07-27 12:28:05 +09:00
Niko Matsakis
3096568904 add a bevy of new test cases 2019-07-27 12:28:04 +09:00
Taiki Endo
a1fd4fa848 Remove query for .pin_type() 2019-07-27 12:28:03 +09:00
Taiki Endo
e2eb957be0 Allow lifetime elision in Pin<&(mut) Self> 2019-07-27 12:28:02 +09:00
bors
09e3989758 Auto merge of #62086 - petrochenkov:builtout, r=eddyb
Define built-in macros through libcore

This PR defines built-in macros through libcore using a scheme similar to lang items (attribute `#[rustc_builtin_macro]`).
All the macro properties (stability, visibility, etc.) are taken from the source code in libcore, with exception of the expander function transforming input tokens/AST into output tokens/AST, which is still provided by the compiler.

The macros are made available to user code through the standard library prelude (`{core,std}::prelude::v1`), so they are still always in scope.
As a result **built-in macros now have stable absolute addresses in the library**, like `core::prelude::v1::line!()`, this is an insta-stable change.

Right now `prelude::v1` is the only publicly available absolute address for these macros, but eventually they can be moved into more appropriate locations with library team approval (e.g. `Clone` derive -> `core::clone::Clone`).

Now when built-in macros have canonical definitions they can be imported or reexported without issues (https://github.com/rust-lang/rust/issues/61687).

Other changes:
- You can now define a derive macro with a name matching one of the built-in derives (https://github.com/rust-lang/rust/issues/52269). This was an artificial restriction that could be worked around with import renaming anyway.

Known regressions:
- Empty library crate with a crate-level `#![test]` attribute no longer compiles without `--test`. Previously it didn't compile *with* `--test` or with the bin crate type.

Fixes https://github.com/rust-lang/rust/issues/61687
Fixes https://github.com/rust-lang/rust/issues/61804
r? @eddyb
2019-07-26 23:29:02 +00:00
Mazdak Farrokhzad
3a1ee9b70d
Rollup merge of #63004 - JohnTitor:add-tests-for-54062, r=Centril
Add test for issue-54062

The ICE is no longer reproduced.

Closes #54062
2019-07-26 18:57:05 +02:00
Mazdak Farrokhzad
571a965143
Rollup merge of #62985 - phansch:support_ui_testing_flag, r=estebank
librustc_errors: Support ui-testing flag in annotate-snippet emitter

This adds support for the `-Z ui-testing` flag to the new
annotate-snippet diagnostic emitter.

Support for the flag was added to `annotate-snippet-rs` in these PRs:

* https://github.com/rust-lang/annotate-snippets-rs/pull/3
* https://github.com/rust-lang/annotate-snippets-rs/pull/5

r? @estebank

Closes #61811
2019-07-26 18:57:01 +02:00
Mazdak Farrokhzad
1893ac6db3
Rollup merge of #62963 - estebank:homoglyph-recovery, r=petrochenkov
Allow lexer to recover from some homoglyphs
2019-07-26 18:56:53 +02:00