Skip to content

Commit 2c7d32b

Browse files
committed
Use type_ascribe! in many UI tests
Use it in all UI tests that are about the semantics and not the syntax of type ascription.
1 parent 6ee0dd9 commit 2c7d32b

26 files changed

+198
-224
lines changed

src/test/ui/associated-consts/issue-93835.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
#![feature(type_ascription)]
2+
13
fn e() {
2-
p:a<p:p<e=6>>
3-
//~^ ERROR comparison operators
4+
type_ascribe!(p, a<p:p<e=6>>);
5+
//~^ ERROR cannot find type `a` in this scope
46
//~| ERROR cannot find value
57
//~| ERROR associated const equality
6-
//~| ERROR associated const equality
8+
//~| ERROR cannot find trait `p` in this scope
79
//~| ERROR associated type bounds
810
}
911

Original file line numberDiff line numberDiff line change
@@ -1,65 +1,40 @@
1-
error: comparison operators cannot be chained
2-
--> $DIR/issue-93835.rs:2:8
3-
|
4-
LL | fn e() {
5-
| - while parsing this struct
6-
LL | p:a<p:p<e=6>>
7-
| ^ ^
8-
|
9-
= help: use `::<...>` instead of `<...>` to specify lifetime, type, or const arguments
10-
= help: or use `(...)` if you meant to specify fn arguments
11-
121
error[E0425]: cannot find value `p` in this scope
13-
--> $DIR/issue-93835.rs:2:5
14-
|
15-
LL | p:a<p:p<e=6>>
16-
| ^ not found in this scope
17-
|
18-
help: you might have meant to write a `struct` literal
19-
|
20-
LL ~ fn e() { SomeStruct {
21-
LL | p:a<p:p<e=6>>
22-
...
23-
LL |
24-
LL ~ }}
2+
--> $DIR/issue-93835.rs:4:19
253
|
26-
help: maybe you meant to write a path separator here
27-
|
28-
LL | p::a<p:p<e=6>>
29-
| ~~
30-
help: maybe you meant to write an assignment here
31-
|
32-
LL | let p:a<p:p<e=6>>
33-
| ~~~~~
4+
LL | type_ascribe!(p, a<p:p<e=6>>);
5+
| ^ not found in this scope
346

35-
error[E0658]: associated const equality is incomplete
36-
--> $DIR/issue-93835.rs:2:13
7+
error[E0412]: cannot find type `a` in this scope
8+
--> $DIR/issue-93835.rs:4:22
379
|
38-
LL | p:a<p:p<e=6>>
39-
| ^^^
10+
LL | type_ascribe!(p, a<p:p<e=6>>);
11+
| ^ not found in this scope
12+
13+
error[E0405]: cannot find trait `p` in this scope
14+
--> $DIR/issue-93835.rs:4:26
4015
|
41-
= note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information
42-
= help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
16+
LL | type_ascribe!(p, a<p:p<e=6>>);
17+
| ^ not found in this scope
4318

4419
error[E0658]: associated const equality is incomplete
45-
--> $DIR/issue-93835.rs:2:13
20+
--> $DIR/issue-93835.rs:4:28
4621
|
47-
LL | p:a<p:p<e=6>>
48-
| ^^^
22+
LL | type_ascribe!(p, a<p:p<e=6>>);
23+
| ^^^
4924
|
5025
= note: see issue #92827 <https://github.com/rust-lang/rust/issues/92827> for more information
5126
= help: add `#![feature(associated_const_equality)]` to the crate attributes to enable
5227

5328
error[E0658]: associated type bounds are unstable
54-
--> $DIR/issue-93835.rs:2:9
29+
--> $DIR/issue-93835.rs:4:24
5530
|
56-
LL | p:a<p:p<e=6>>
57-
| ^^^^^^^^
31+
LL | type_ascribe!(p, a<p:p<e=6>>);
32+
| ^^^^^^^^
5833
|
5934
= note: see issue #52662 <https://github.com/rust-lang/rust/issues/52662> for more information
6035
= help: add `#![feature(associated_type_bounds)]` to the crate attributes to enable
6136

6237
error: aborting due to 5 previous errors
6338

64-
Some errors have detailed explanations: E0425, E0658.
65-
For more information about an error, try `rustc --explain E0425`.
39+
Some errors have detailed explanations: E0405, E0412, E0425, E0658.
40+
For more information about an error, try `rustc --explain E0405`.

src/test/ui/closures/issue-90871.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
#![feature(type_ascription)]
2+
13
fn main() {
2-
2: n([u8; || 1])
4+
type_ascribe!(2, n([u8; || 1]))
35
//~^ ERROR cannot find type `n` in this scope
46
//~| ERROR mismatched types
57
}

src/test/ui/closures/issue-90871.stderr

+14-9
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,26 @@
11
error[E0412]: cannot find type `n` in this scope
2-
--> $DIR/issue-90871.rs:2:8
2+
--> $DIR/issue-90871.rs:4:22
33
|
4-
LL | 2: n([u8; || 1])
5-
| ^ expecting a type here because of type ascription
4+
LL | type_ascribe!(2, n([u8; || 1]))
5+
| ^ help: a trait with a similar name exists: `Fn`
6+
|
7+
::: $SRC_DIR/core/src/ops/function.rs:LL:COL
8+
|
9+
LL | pub trait Fn<Args: Tuple>: FnMut<Args> {
10+
| -------------------------------------- similarly named trait `Fn` defined here
611

712
error[E0308]: mismatched types
8-
--> $DIR/issue-90871.rs:2:15
13+
--> $DIR/issue-90871.rs:4:29
914
|
10-
LL | 2: n([u8; || 1])
11-
| ^^^^ expected `usize`, found closure
15+
LL | type_ascribe!(2, n([u8; || 1]))
16+
| ^^^^ expected `usize`, found closure
1217
|
1318
= note: expected type `usize`
14-
found closure `[closure@$DIR/issue-90871.rs:2:15: 2:17]`
19+
found closure `[closure@$DIR/issue-90871.rs:4:29: 4:31]`
1520
help: use parentheses to call this closure
1621
|
17-
LL | 2: n([u8; (|| 1)()])
18-
| + +++
22+
LL | type_ascribe!(2, n([u8; (|| 1)()]))
23+
| + +++
1924

2025
error: aborting due to 2 previous errors
2126

src/test/ui/coercion/coerce-expect-unsized-ascribed.rs

+16-16
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,27 @@
66
use std::fmt::Debug;
77

88
pub fn main() {
9-
let _ = box { [1, 2, 3] }: Box<[i32]>; //~ ERROR mismatched types
10-
let _ = box if true { [1, 2, 3] } else { [1, 3, 4] }: Box<[i32]>; //~ ERROR mismatched types
11-
let _ = box match true { true => [1, 2, 3], false => [1, 3, 4] }: Box<[i32]>;
9+
let _ = type_ascribe!(box { [1, 2, 3] }, Box<[i32]>); //~ ERROR mismatched types
10+
let _ = type_ascribe!(box if true { [1, 2, 3] } else { [1, 3, 4] }, Box<[i32]>); //~ ERROR mismatched types
11+
let _ = type_ascribe!(box match true { true => [1, 2, 3], false => [1, 3, 4] }, Box<[i32]>);
1212
//~^ ERROR mismatched types
13-
let _ = box { |x| (x as u8) }: Box<dyn Fn(i32) -> _>; //~ ERROR mismatched types
14-
let _ = box if true { false } else { true }: Box<dyn Debug>; //~ ERROR mismatched types
15-
let _ = box match true { true => 'a', false => 'b' }: Box<dyn Debug>; //~ ERROR mismatched types
13+
let _ = type_ascribe!(box { |x| (x as u8) }, Box<dyn Fn(i32) -> _>); //~ ERROR mismatched types
14+
let _ = type_ascribe!(box if true { false } else { true }, Box<dyn Debug>); //~ ERROR mismatched types
15+
let _ = type_ascribe!(box match true { true => 'a', false => 'b' }, Box<dyn Debug>); //~ ERROR mismatched types
1616

17-
let _ = &{ [1, 2, 3] }: &[i32]; //~ ERROR mismatched types
18-
let _ = &if true { [1, 2, 3] } else { [1, 3, 4] }: &[i32]; //~ ERROR mismatched types
19-
let _ = &match true { true => [1, 2, 3], false => [1, 3, 4] }: &[i32];
17+
let _ = type_ascribe!(&{ [1, 2, 3] }, &[i32]); //~ ERROR mismatched types
18+
let _ = type_ascribe!(&if true { [1, 2, 3] } else { [1, 3, 4] }, &[i32]); //~ ERROR mismatched types
19+
let _ = type_ascribe!(&match true { true => [1, 2, 3], false => [1, 3, 4] }, &[i32]);
2020
//~^ ERROR mismatched types
21-
let _ = &{ |x| (x as u8) }: &dyn Fn(i32) -> _; //~ ERROR mismatched types
22-
let _ = &if true { false } else { true }: &dyn Debug; //~ ERROR mismatched types
23-
let _ = &match true { true => 'a', false => 'b' }: &dyn Debug; //~ ERROR mismatched types
21+
let _ = type_ascribe!(&{ |x| (x as u8) }, &dyn Fn(i32) -> _); //~ ERROR mismatched types
22+
let _ = type_ascribe!(&if true { false } else { true }, &dyn Debug); //~ ERROR mismatched types
23+
let _ = type_ascribe!(&match true { true => 'a', false => 'b' }, &dyn Debug); //~ ERROR mismatched types
2424

25-
let _ = Box::new([1, 2, 3]): Box<[i32]>; //~ ERROR mismatched types
26-
let _ = Box::new(|x| (x as u8)): Box<dyn Fn(i32) -> _>; //~ ERROR mismatched types
25+
let _ = type_ascribe!(Box::new([1, 2, 3]), Box<[i32]>); //~ ERROR mismatched types
26+
let _ = type_ascribe!(Box::new(|x| (x as u8)), Box<dyn Fn(i32) -> _>); //~ ERROR mismatched types
2727

28-
let _ = vec![
28+
let _ = type_ascribe!(vec![
2929
Box::new(|x| (x as u8)),
3030
box |x| (x as i16 as u8),
31-
]: Vec<Box<dyn Fn(i32) -> _>>;
31+
], Vec<Box<dyn Fn(i32) -> _>>);
3232
}

src/test/ui/coercion/coerce-expect-unsized-ascribed.stderr

+45-45
Original file line numberDiff line numberDiff line change
@@ -1,128 +1,128 @@
11
error[E0308]: mismatched types
2-
--> $DIR/coerce-expect-unsized-ascribed.rs:9:13
2+
--> $DIR/coerce-expect-unsized-ascribed.rs:9:27
33
|
4-
LL | let _ = box { [1, 2, 3] }: Box<[i32]>;
5-
| ^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
4+
LL | let _ = type_ascribe!(box { [1, 2, 3] }, Box<[i32]>);
5+
| ^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
66
|
77
= note: expected struct `Box<[i32]>`
88
found struct `Box<[i32; 3]>`
99

1010
error[E0308]: mismatched types
11-
--> $DIR/coerce-expect-unsized-ascribed.rs:10:13
11+
--> $DIR/coerce-expect-unsized-ascribed.rs:10:27
1212
|
13-
LL | let _ = box if true { [1, 2, 3] } else { [1, 3, 4] }: Box<[i32]>;
14-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
13+
LL | let _ = type_ascribe!(box if true { [1, 2, 3] } else { [1, 3, 4] }, Box<[i32]>);
14+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
1515
|
1616
= note: expected struct `Box<[i32]>`
1717
found struct `Box<[i32; 3]>`
1818

1919
error[E0308]: mismatched types
20-
--> $DIR/coerce-expect-unsized-ascribed.rs:11:13
20+
--> $DIR/coerce-expect-unsized-ascribed.rs:11:27
2121
|
22-
LL | let _ = box match true { true => [1, 2, 3], false => [1, 3, 4] }: Box<[i32]>;
23-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
22+
LL | let _ = type_ascribe!(box match true { true => [1, 2, 3], false => [1, 3, 4] }, Box<[i32]>);
23+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
2424
|
2525
= note: expected struct `Box<[i32]>`
2626
found struct `Box<[i32; 3]>`
2727

2828
error[E0308]: mismatched types
29-
--> $DIR/coerce-expect-unsized-ascribed.rs:13:13
29+
--> $DIR/coerce-expect-unsized-ascribed.rs:13:27
3030
|
31-
LL | let _ = box { |x| (x as u8) }: Box<dyn Fn(i32) -> _>;
32-
| ^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Fn`, found closure
31+
LL | let _ = type_ascribe!(box { |x| (x as u8) }, Box<dyn Fn(i32) -> _>);
32+
| ^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Fn`, found closure
3333
|
3434
= note: expected struct `Box<dyn Fn(i32) -> u8>`
35-
found struct `Box<[closure@$DIR/coerce-expect-unsized-ascribed.rs:13:19: 13:22]>`
35+
found struct `Box<[closure@$DIR/coerce-expect-unsized-ascribed.rs:13:33: 13:36]>`
3636

3737
error[E0308]: mismatched types
38-
--> $DIR/coerce-expect-unsized-ascribed.rs:14:13
38+
--> $DIR/coerce-expect-unsized-ascribed.rs:14:27
3939
|
40-
LL | let _ = box if true { false } else { true }: Box<dyn Debug>;
41-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `bool`
40+
LL | let _ = type_ascribe!(box if true { false } else { true }, Box<dyn Debug>);
41+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `bool`
4242
|
4343
= note: expected struct `Box<dyn Debug>`
4444
found struct `Box<bool>`
4545

4646
error[E0308]: mismatched types
47-
--> $DIR/coerce-expect-unsized-ascribed.rs:15:13
47+
--> $DIR/coerce-expect-unsized-ascribed.rs:15:27
4848
|
49-
LL | let _ = box match true { true => 'a', false => 'b' }: Box<dyn Debug>;
50-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `char`
49+
LL | let _ = type_ascribe!(box match true { true => 'a', false => 'b' }, Box<dyn Debug>);
50+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `char`
5151
|
5252
= note: expected struct `Box<dyn Debug>`
5353
found struct `Box<char>`
5454

5555
error[E0308]: mismatched types
56-
--> $DIR/coerce-expect-unsized-ascribed.rs:17:13
56+
--> $DIR/coerce-expect-unsized-ascribed.rs:17:27
5757
|
58-
LL | let _ = &{ [1, 2, 3] }: &[i32];
59-
| ^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
58+
LL | let _ = type_ascribe!(&{ [1, 2, 3] }, &[i32]);
59+
| ^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
6060
|
6161
= note: expected reference `&[i32]`
6262
found reference `&[i32; 3]`
6363

6464
error[E0308]: mismatched types
65-
--> $DIR/coerce-expect-unsized-ascribed.rs:18:13
65+
--> $DIR/coerce-expect-unsized-ascribed.rs:18:27
6666
|
67-
LL | let _ = &if true { [1, 2, 3] } else { [1, 3, 4] }: &[i32];
68-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
67+
LL | let _ = type_ascribe!(&if true { [1, 2, 3] } else { [1, 3, 4] }, &[i32]);
68+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
6969
|
7070
= note: expected reference `&[i32]`
7171
found reference `&[i32; 3]`
7272

7373
error[E0308]: mismatched types
74-
--> $DIR/coerce-expect-unsized-ascribed.rs:19:13
74+
--> $DIR/coerce-expect-unsized-ascribed.rs:19:27
7575
|
76-
LL | let _ = &match true { true => [1, 2, 3], false => [1, 3, 4] }: &[i32];
77-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
76+
LL | let _ = type_ascribe!(&match true { true => [1, 2, 3], false => [1, 3, 4] }, &[i32]);
77+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
7878
|
7979
= note: expected reference `&[i32]`
8080
found reference `&[i32; 3]`
8181

8282
error[E0308]: mismatched types
83-
--> $DIR/coerce-expect-unsized-ascribed.rs:21:13
83+
--> $DIR/coerce-expect-unsized-ascribed.rs:21:27
8484
|
85-
LL | let _ = &{ |x| (x as u8) }: &dyn Fn(i32) -> _;
86-
| ^^^^^^^^^^^^^^^^^^ expected trait object `dyn Fn`, found closure
85+
LL | let _ = type_ascribe!(&{ |x| (x as u8) }, &dyn Fn(i32) -> _);
86+
| ^^^^^^^^^^^^^^^^^^ expected trait object `dyn Fn`, found closure
8787
|
8888
= note: expected reference `&dyn Fn(i32) -> u8`
89-
found reference `&[closure@$DIR/coerce-expect-unsized-ascribed.rs:21:16: 21:19]`
89+
found reference `&[closure@$DIR/coerce-expect-unsized-ascribed.rs:21:30: 21:33]`
9090

9191
error[E0308]: mismatched types
92-
--> $DIR/coerce-expect-unsized-ascribed.rs:22:13
92+
--> $DIR/coerce-expect-unsized-ascribed.rs:22:27
9393
|
94-
LL | let _ = &if true { false } else { true }: &dyn Debug;
95-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `bool`
94+
LL | let _ = type_ascribe!(&if true { false } else { true }, &dyn Debug);
95+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `bool`
9696
|
9797
= note: expected reference `&dyn Debug`
9898
found reference `&bool`
9999

100100
error[E0308]: mismatched types
101-
--> $DIR/coerce-expect-unsized-ascribed.rs:23:13
101+
--> $DIR/coerce-expect-unsized-ascribed.rs:23:27
102102
|
103-
LL | let _ = &match true { true => 'a', false => 'b' }: &dyn Debug;
104-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `char`
103+
LL | let _ = type_ascribe!(&match true { true => 'a', false => 'b' }, &dyn Debug);
104+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Debug`, found `char`
105105
|
106106
= note: expected reference `&dyn Debug`
107107
found reference `&char`
108108

109109
error[E0308]: mismatched types
110-
--> $DIR/coerce-expect-unsized-ascribed.rs:25:13
110+
--> $DIR/coerce-expect-unsized-ascribed.rs:25:27
111111
|
112-
LL | let _ = Box::new([1, 2, 3]): Box<[i32]>;
113-
| ^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
112+
LL | let _ = type_ascribe!(Box::new([1, 2, 3]), Box<[i32]>);
113+
| ^^^^^^^^^^^^^^^^^^^ expected slice `[i32]`, found array `[i32; 3]`
114114
|
115115
= note: expected struct `Box<[i32]>`
116116
found struct `Box<[i32; 3]>`
117117

118118
error[E0308]: mismatched types
119-
--> $DIR/coerce-expect-unsized-ascribed.rs:26:13
119+
--> $DIR/coerce-expect-unsized-ascribed.rs:26:27
120120
|
121-
LL | let _ = Box::new(|x| (x as u8)): Box<dyn Fn(i32) -> _>;
122-
| ^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Fn`, found closure
121+
LL | let _ = type_ascribe!(Box::new(|x| (x as u8)), Box<dyn Fn(i32) -> _>);
122+
| ^^^^^^^^^^^^^^^^^^^^^^^ expected trait object `dyn Fn`, found closure
123123
|
124124
= note: expected struct `Box<dyn Fn(i32) -> u8>`
125-
found struct `Box<[closure@$DIR/coerce-expect-unsized-ascribed.rs:26:22: 26:25]>`
125+
found struct `Box<[closure@$DIR/coerce-expect-unsized-ascribed.rs:26:36: 26:39]>`
126126

127127
error: aborting due to 14 previous errors
128128

src/test/ui/consts/const_in_pattern/accept_structural.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ fn main() {
4545
const TUPLE: (OND, OND) = (None, None);
4646
match (None, None) { TUPLE => dbg!(TUPLE), _ => panic!("whoops"), };
4747

48-
const TYPE_ASCRIPTION: OND = None: OND;
48+
const TYPE_ASCRIPTION: OND = type_ascribe!(None, OND);
4949
match None { TYPE_ASCRIPTION => dbg!(TYPE_ASCRIPTION), _ => panic!("whoops"), };
5050

5151
const ARRAY: [OND; 2] = [None, None];

src/test/ui/consts/const_in_pattern/reject_non_structural.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ fn main() {
5353
match (None, Some(NoDerive)) { TUPLE => dbg!(TUPLE), _ => panic!("whoops"), };
5454
//~^ ERROR must be annotated with `#[derive(PartialEq, Eq)]`
5555

56-
const TYPE_ASCRIPTION: OND = Some(NoDerive): OND;
56+
const TYPE_ASCRIPTION: OND = type_ascribe!(Some(NoDerive), OND);
5757
match Some(NoDerive) { TYPE_ASCRIPTION => dbg!(TYPE_ASCRIPTION), _ => panic!("whoops"), };
5858
//~^ ERROR must be annotated with `#[derive(PartialEq, Eq)]`
5959

src/test/ui/enum/issue-67945-2.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#![feature(type_ascription)]
22

33
enum Bug<S> { //~ ERROR parameter `S` is never used
4-
Var = 0: S,
4+
Var = type_ascribe!(0, S),
55
//~^ ERROR generic parameters may not be used
66
}
77

0 commit comments

Comments
 (0)