1
Fork 0

Move /src/test to /tests

This commit is contained in:
Albert Larsan 2023-01-05 09:13:28 +01:00
parent ca855e6e42
commit cf2dff2b1e
No known key found for this signature in database
GPG key ID: 92709B88BB8F13EA
27592 changed files with 0 additions and 0 deletions

View file

@ -0,0 +1,44 @@
struct TupleStruct<S, T>(S, T);
enum Enum<S, T> {
SingleVariant(S, T)
}
type Alias<S> = Enum<S, isize>;
trait Test {
fn test() -> TupleStruct<isize, isize> {
TupleStruct(0, 0)
}
}
impl Test for Alias<isize> {}
fn test() -> TupleStruct<isize, isize> {
TupleStruct(0, 0)
}
fn main() {
let (mut a, mut b);
TupleStruct(a, .., b, ..) = TupleStruct(0, 1);
//~^ ERROR `..` can only be used once per tuple struct or variant pattern
Enum::SingleVariant(a, .., b, ..) = Enum::SingleVariant(0, 1);
//~^ ERROR `..` can only be used once per tuple struct or variant pattern
TupleStruct(a, a, b) = TupleStruct(1, 2);
//~^ ERROR this pattern has 3 fields, but the corresponding tuple struct has 2 fields
TupleStruct(_) = TupleStruct(1, 2);
//~^ ERROR this pattern has 1 field, but the corresponding tuple struct has 2 fields
Enum::SingleVariant(a, a, b) = Enum::SingleVariant(1, 2);
//~^ ERROR this pattern has 3 fields, but the corresponding tuple variant has 2 fields
Enum::SingleVariant(_) = Enum::SingleVariant(1, 2);
//~^ ERROR this pattern has 1 field, but the corresponding tuple variant has 2 fields
// Check if `test` is recognized as not a tuple struct but a function call:
test() = TupleStruct(0, 0);
//~^ ERROR invalid left-hand side of assignment
(test)() = TupleStruct(0, 0);
//~^ ERROR invalid left-hand side of assignment
<Alias::<isize> as Test>::test() = TupleStruct(0, 0);
//~^ ERROR invalid left-hand side of assignment
}