Commit graph

53 commits

Author SHA1 Message Date
Felix S. Klock II
4b2e553dac integrate the edition code.
As a driveby change, I made `#![feature(nll)]` *always* take
precedence over `-Z borrowck`.  The main effect this had is that it
means tests with `#![feature(nll)]` will ignore uses of `-Z
borrowck=compare`. This affected only one test as far as I can tell,
and I think that test used `-Z borrowck=compare` only as a historical
accident.
2018-07-26 14:51:32 +02:00
Felix Rabe
88e9af0375 Fix doc link
The link for comparison:

-   https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized (broken)

-   https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types-and-sized (fixed)

This commit is the result of (first) searching via:

    find src -type f -print0 | xargs -0 fgrep -l dynamically-sized-types--sized

and then replacing all relevant occurrences via:

    find src/{libcore,test/ui} -type f -print0 | xargs -0 sed -i.bak \
      s/dynamically-sized-types--sized/dynamically-sized-types-and-sized/g
    find src/{libcore,test/ui} -type f -name '*.bak' -print0 | xargs -0 rm

(Note: Commands run on macOS 10.13 (BSD).  `sed -i.bak` should work on
GNU/Linux as well, but not tested.)
2018-07-17 14:10:11 +02:00
Rémy Rakic
b8c96ce530 Fix typo in error message E0277 2018-07-10 23:10:13 +02:00
Santiago Pastorino
0957ede502
Make causal tracking lazy 2018-07-01 20:46:07 -03:00
bors
4b17d31f11 Auto merge of #51463 - estebank:error-codes, r=nikomatsakis
Various changes to existing diagnostics

* [Add code to `invalid ABI` error, add span label, move list to help to make message shorter](https://github.com/rust-lang/rust/pull/51463/commits/23ae5af274defa9ff884f593e44a2bbcaf814a02):
```
error[E0697]: invalid ABI: found `路濫狼á́́`
  --> $DIR/unicode.rs:11:8
   |
LL | extern "路濫狼á́́" fn foo() {} //~ ERROR invalid ABI
   |        ^^^^^^^^^ invalid ABI
   |
   = help: valid ABIs: cdecl, stdcall, fastcall, vectorcall, thiscall, aapcs, win64, sysv64, ptx-kernel, msp430-interrupt, x86-interrupt, Rust, C, system, rust-intrinsic, rust-call, platform-intrinsic, unadjusted
```
* [Add code to incorrect `pub` restriction error](https://github.com/rust-lang/rust/pull/51463/commits/e96fdea8a38f39f99f8b9a4000a689187a457e08)
* [Add message to `rustc_on_unimplemented` attributes in core to have them set a custom message _and_ label](https://github.com/rust-lang/rust/pull/51463/commits/2cc7e5ed307aee936c20479cfdc7409d6b52a464):
```
error[E0277]: `W` does not have a constant size known at compile-time
  --> $DIR/unsized-enum2.rs:33:8
   |
LL |     VA(W),
   |        ^ `W` does not have a constant size known at compile-time
   |
   = help: the trait `std::marker::Sized` is not implemented for `W`
   = help: consider adding a `where W: std::marker::Sized` bound
   = note: no field of an enum variant may have a dynamically sized type
```
```
error[E0277]: `Foo` cannot be sent between threads safely
  --> $DIR/E0277-2.rs:26:5
   |
LL |     is_send::<Foo>();
   |     ^^^^^^^^^^^^^^ `Foo` cannot be sent between threads safely
   |
   = help: the trait `std::marker::Send` is not implemented for `Foo`
```
```
error[E0277]: can't compare `{integer}` with `std::string::String`
  --> $DIR/binops.rs:16:7
   |
LL |     5 < String::new();
   |       ^ no implementation for `{integer} < std::string::String` and `{integer} > std::string::String`
   |
   = help: the trait `std::cmp::PartialOrd<std::string::String>` is not implemented for `{integer}`
```
```
error[E0277]: can't compare `{integer}` with `std::result::Result<{integer}, _>`
  --> $DIR/binops.rs:17:7
   |
LL |     6 == Ok(1);
   |       ^^ no implementation for `{integer} == std::result::Result<{integer}, _>`
   |
   = help: the trait `std::cmp::PartialEq<std::result::Result<{integer}, _>>` is not implemented for `{integer}`
```
```
error[E0277]: a collection of type `i32` cannot be built from an iterator over elements of type `i32`
  --> $DIR/type-check-defaults.rs:16:19
   |
LL | struct WellFormed<Z = Foo<i32, i32>>(Z);
   |                   ^ a collection of type `i32` cannot be built from `std::iter::Iterator<Item=i32>`
   |
   = help: the trait `std::iter::FromIterator<i32>` is not implemented for `i32`
note: required by `Foo`
  --> $DIR/type-check-defaults.rs:15:1
   |
LL | struct Foo<T, U: FromIterator<T>>(T, U);
   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
* [Add link to book for `Sized` errors](https://github.com/rust-lang/rust/pull/51463/commits/1244dc7c283323aea1a3457a4458d590a3e160c8):
```
error[E0277]: `std::fmt::Debug + std::marker::Sync + 'static` does not have a constant size known at compile-time
  --> $DIR/const-unsized.rs:13:29
   |
LL | const CONST_0: Debug+Sync = *(&0 as &(Debug+Sync));
   |                             ^^^^^^^^^^^^^^^^^^^^^^ `std::fmt::Debug + std::marker::Sync + 'static` does not have a constant size known at compile-time
   |
   = help: the trait `std::marker::Sized` is not implemented for `std::fmt::Debug + std::marker::Sync + 'static`
   = note: to learn more, visit <https://doc.rust-lang.org/book/second-edition/ch19-04-advanced-types.html#dynamically-sized-types--sized>
   = note: constant expressions must have a statically known size
```
* [Point to previous line for single expected token not found](https://github.com/rust-lang/rust/pull/51463/commits/48165168fb0f059d8536cd4a2276b609d4a7f721) (if the current token is in a different line)
2018-06-22 03:24:36 +00:00
Esteban Küber
d4bfae1319 Update message for !Sized types 2018-06-19 17:32:33 -07:00
Santiago Pastorino
f4fc43cb20
Suggest that values are dropped in the opposite order they are defined 2018-06-19 21:21:50 -03:00
Esteban Küber
f1dee43887 Add link to book for Sized errors 2018-06-19 15:19:15 -07:00
Esteban Küber
776544f011 Add message to rustc_on_unimplemented attributes in core 2018-06-19 15:19:13 -07:00
Felix S. Klock II
50224ec1a9 It turns out that the diagnostics generated from NLL for these cases are now exactly the same as that produced by AST borrowck. Bravo! 2018-06-06 22:41:00 +02:00
Felix S. Klock II
d8bd5336c9 rust-lang/rust#51025: improve test robustness so that they work under NLL too. 2018-05-25 13:00:51 +02:00
Felix S. Klock II
f12d7a55fc Update ui/generator tests to reflect changes from new generator drop rules. 2018-05-01 22:28:54 +02:00
Matthew Jasper
902bc0fb1a Access individual fields of tuples, closures and generators on drop. 2018-04-27 20:41:30 +01:00
Felix S. Klock II
746d63a203 Checkpoint the current status of NLL on ui tests via compare-mode=nll. 2018-04-11 00:38:35 +02:00
Felix S. Klock II
1c8d2bdda1 Workaround rust-lang/rust#49855 by forcing rustc_error in any mode, including NLL.
NOTE: I was careful to make each change in a manner that preserves the
existing diagnostic output (usually by ensuring that no lines were
added or removed). This means that the resulting source files are not
as nice to read as they were at the start. But we will have to review
these cases by hand anyway as follow-up work, so cleanup could
reasonably happen then (or not at all).
2018-04-11 00:20:05 +02:00
kennytm
e2b89221f1
Rollup merge of #49194 - Zoxc:unsafe-generator, r=cramertj
Make resuming generators unsafe instead of the creation of immovable generators

cc @withoutboats

Fixes #47787
2018-03-25 01:26:34 +08:00
Niko Matsakis
f71de45b23 use subtyping when we create a closure instead of for upvar types
We used to make the upvar types in the closure `==` but that was
stronger than we needed. Subtyping suffices, since we are copying the
upvar value into the closure field. This in turn allows us to infer
smaller lifetimes in captured values in some cases (like the example
here), avoiding errors.
2018-03-21 05:40:59 -04:00
John Kåre Alsaker
57896abc38 Make resuming generators unsafe instead of the creation of immovable generators. Fixes #47787 2018-03-21 00:09:58 +01:00
kennytm
a45b79ddb7
Rollup merge of #48706 - ehuss:main-not-found-in-crate, r=estebank
Add crate name to "main function not found" error message.

Fixes #44798 and rust-lang/cargo#4948.

I was wondering if it might be cleaner to update the ui tests to add a simple `fn main() {}` for the unrelated tests.  Let me know if you would prefer that.
2018-03-16 01:49:38 +08:00
bors
ff2d506c2c Auto merge of #48138 - estebank:issue-45092, r=nikomatsakis
Reword E0044 and message for `!Send` types

 - Reword E0044 help.
 - Change error message for types that don't implement `Send`

CC #45092, #46678, #24909, #33307.
2018-03-15 13:16:09 +00:00
Esteban Küber
6d8a173980 Reword E0044 and message for !Send types
- Reword E0044 help.
 - Change error message for types that don't implement `Send`
2018-03-14 18:04:20 -07:00
Eric Huss
6aa4dcb9cf Add empty main() to tests where it is missing. 2018-03-14 12:23:28 -07:00
Eric Huss
b4b7ccbd1c Add crate name to "main function not found" error message.
Fixes #44798 and rust-lang/cargo#4948.
2018-03-14 11:40:13 -07:00
Guillaume Gomez
2e104a77cf update tests 2018-03-14 00:53:24 +01:00
Vadim Petrochenkov
7ba5fd168a Update UI tests 2018-02-26 20:24:42 +03:00
Vadim Petrochenkov
fa2d9fc4b9 Update UI tests 2018-02-26 20:24:02 +03:00
Guillaume Gomez
5747fd6611 Update ui tests 2018-02-25 12:15:05 +01:00
John Kåre Alsaker
774997dab3 Fix visitation order of calls so that it matches execution order. Fixes #48048 2018-02-09 10:49:24 +01:00
John Kåre Alsaker
4325c6375e Allow access of the state field before the generator transform. Fixes #47482, #46476 2018-01-30 11:40:39 +01:00
John Kåre Alsaker
77bc26f4f3 Require yield types to be sized 2018-01-29 10:02:04 +01:00
John Kåre Alsaker
dd3fa07a52 Make yield_in_scope_for_expr work with patterns. Fixes #47758 2018-01-29 10:02:03 +01:00
John Kåre Alsaker
55c6c88782 Port borrows across yield check to MIR borrowck 2018-01-23 05:10:39 +01:00
John Kåre Alsaker
410d27bb97 Add dropck test 2018-01-23 05:10:39 +01:00
John Kåre Alsaker
bae2988e6f Fix yield-while-local-borrowed.rs test 2018-01-23 05:10:39 +01:00
John Kåre Alsaker
c166ef9d1b Make immovable generators unsafe 2018-01-23 05:10:38 +01:00
John Kåre Alsaker
ccf0d8399e Adds support for immovable generators. Move checking of invalid borrows across suspension points to borrowck. Fixes #44197, #45259 and #45093. 2018-01-23 05:10:38 +01:00
Esteban Küber
9b36030a65 On E0283, point at method with the requirements
On required type annotation diagnostic error, point at method with the
requirements if the span is available.
2018-01-15 14:56:32 -08:00
Esteban Küber
02079e44dd Point at var in short lived borrows 2017-12-14 22:45:45 -08:00
Oliver Schneider
8937d6a6cf
Merge cfail and ui tests into ui tests 2017-11-24 11:32:35 +01:00
Ariel Ben-Yehuda
5c0feb86b9 add proofs and fix postorder traversal
I don't think the "quasi-postorder" travesal could cause any issues, but
there's no reason for it to stay broken.
2017-09-20 16:36:24 +03:00
John Kåre Alsaker
3a511e06a5 Only consider yields coming after the expressions when computing generator interiors 2017-09-20 16:36:24 +03:00
Alex Crichton
9620d26138 Fix more UI tests 2017-08-17 22:52:04 -07:00
Alex Crichton
a47038f551 Fix UI tests 2017-08-17 15:20:06 -07:00
Alex Crichton
22ebcaca16 Choose another error code 2017-08-14 19:38:32 -07:00
Alex Crichton
6eab1ca9dd Fix UI test 2017-08-12 11:36:00 -07:00
Alex Crichton
e181060a59 Add UI test outputs 2017-08-09 16:37:56 -07:00
Alex Crichton
352577f4bb Initial pass review comments 2017-08-09 13:56:19 -07:00
Alex Crichton
cc4ff8f4d1 Use a free error code 2017-07-29 09:30:03 -07:00
Alex Crichton
ff996853fe Fix more tests with GeneratorState rename 2017-07-28 15:47:55 +02:00
Niko Matsakis
39478e8ab1 update references due to removing tabs 2017-07-28 15:46:27 +02:00