Auto merge of #91555 - matthiaskrgr:rollup-pq0iaq7, r=matthiaskrgr
Rollup of 4 pull requests Successful merges: - #90529 (Skip reborrows in AbstractConstBuilder) - #91437 (Pretty print empty blocks as {}) - #91450 (Don't suggest types whose inner type is erroneous) - #91535 (Stabilize `-Z emit-future-incompat` as `--json future-incompat`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
This commit is contained in:
commit
772d51f887
76 changed files with 270 additions and 179 deletions
|
|
@ -1,6 +1,6 @@
|
|||
// pp-exact
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
fn syntax() {
|
||||
|
|
@ -117,7 +117,7 @@ fn syntax() {
|
|||
let _ = #[attr] foo!(#! [attr]);
|
||||
let _ = #[attr] foo![];
|
||||
let _ = #[attr] foo![#! [attr]];
|
||||
let _ = #[attr] foo! { };
|
||||
let _ = #[attr] foo! {};
|
||||
let _ = #[attr] foo! { #! [attr] };
|
||||
let _ = #[attr] Foo{bar: baz,};
|
||||
let _ = #[attr] Foo{..foo};
|
||||
|
|
@ -135,7 +135,7 @@ fn syntax() {
|
|||
foo!();
|
||||
|
||||
#[attr]
|
||||
foo! { }
|
||||
foo! {}
|
||||
|
||||
#[attr]
|
||||
foo![];
|
||||
|
|
@ -170,6 +170,6 @@ fn syntax() {
|
|||
{
|
||||
|
||||
#[attr]
|
||||
foo! { }
|
||||
foo! {}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,4 +29,4 @@ enum Enum {
|
|||
Qwerty,
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@
|
|||
|
||||
// pp-exact
|
||||
|
||||
auto trait MyTrait { }
|
||||
auto trait MyTrait {}
|
||||
|
||||
unsafe auto trait UnsafeMyTrait { }
|
||||
unsafe auto trait UnsafeMyTrait {}
|
||||
|
||||
pub fn main() { }
|
||||
pub fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
// compile-flags: --crate-type=lib
|
||||
|
||||
// pp-exact
|
||||
fn f() {
|
||||
} /*
|
||||
The next line should not be indented.
|
||||
fn f() {} /*
|
||||
The next line should not be indented.
|
||||
|
||||
That one. It shouldn't have been indented.
|
||||
*/
|
||||
That one. It shouldn't have been indented.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -3,14 +3,14 @@
|
|||
|
||||
// pp-exact
|
||||
|
||||
fn call_it(f: Box<FnMut(String) -> String>) { }
|
||||
fn call_it(f: Box<FnMut(String) -> String>) {}
|
||||
|
||||
fn call_this<F>(f: F) where F: Fn(&str) + Send { }
|
||||
fn call_this<F>(f: F) where F: Fn(&str) + Send {}
|
||||
|
||||
fn call_that<F>(f: F) where F: for<'a> Fn(&'a isize, &'a isize) -> isize { }
|
||||
fn call_that<F>(f: F) where F: for<'a> Fn(&'a isize, &'a isize) -> isize {}
|
||||
|
||||
fn call_extern(f: fn() -> isize) { }
|
||||
fn call_extern(f: fn() -> isize) {}
|
||||
|
||||
fn call_abid_extern(f: extern "C" fn() -> isize) { }
|
||||
fn call_abid_extern(f: extern "C" fn() -> isize) {}
|
||||
|
||||
pub fn main() { }
|
||||
pub fn main() {}
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@
|
|||
fn id<F>(f: F) -> isize where F: Fn() -> isize { f() }
|
||||
|
||||
fn wsucc(_n: isize) -> isize { id(|| { 1 }) - 0 }
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// Check that the visibility is printed on an enum variant.
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
enum Foo { pub V, }
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
// pp-exact
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
// pp-exact:example2.pp
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
// pp-exact:example2.pp
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -10,4 +10,4 @@ extern crate std;
|
|||
// pp-exact:expanded-and-path-remap-80832.pp
|
||||
// compile-flags: --remap-path-prefix {{src-base}}=the/src
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// pp-exact
|
||||
|
||||
// Check that `fn f() -> () { }` does not print as `fn f() { }`.
|
||||
// Check that `fn f() -> () {}` does not print as `fn f() {}`.
|
||||
|
||||
fn f() -> () { }
|
||||
fn f() -> () {}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// pp-exact
|
||||
|
||||
fn from_foreign_fn(_x: fn()) { }
|
||||
fn from_stack_closure<F>(_x: F) where F: Fn() { }
|
||||
fn main() { }
|
||||
fn from_foreign_fn(_x: fn()) {}
|
||||
fn from_stack_closure<F>(_x: F) where F: Fn() {}
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -12,4 +12,4 @@ pub unsafe extern "C" fn bar(_: i32, mut ap: ...) -> usize {
|
|||
ap.arg::<usize>()
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -4,34 +4,34 @@
|
|||
fn simple_attr() {
|
||||
|
||||
#[attr]
|
||||
if true { }
|
||||
if true {}
|
||||
|
||||
#[allow_warnings]
|
||||
if true { }
|
||||
if true {}
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
fn if_else_chain() {
|
||||
|
||||
#[first_attr]
|
||||
if true { } else if false { } else { }
|
||||
if true {} else if false {} else {}
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
fn if_let() {
|
||||
|
||||
#[attr]
|
||||
if let Some(_) = Some(true) { }
|
||||
if let Some(_) = Some(true) {}
|
||||
}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
fn let_attr_if() {
|
||||
let _ = #[attr] if let _ = 0 { };
|
||||
let _ = #[attr] if true { };
|
||||
let _ = #[attr] if let _ = 0 {};
|
||||
let _ = #[attr] if true {};
|
||||
|
||||
let _ = #[attr] if let _ = 0 { } else { };
|
||||
let _ = #[attr] if true { } else { };
|
||||
let _ = #[attr] if let _ = 0 {} else {};
|
||||
let _ = #[attr] if true {} else {};
|
||||
}
|
||||
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -6,4 +6,4 @@
|
|||
#[path = "issue-12590-b.rs"]
|
||||
mod issue_12590_b;
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ extern crate std;
|
|||
#[path = "issue-12590-b.rs"]
|
||||
mod issue_12590_b {
|
||||
|
||||
fn b() { }
|
||||
fn main() { }
|
||||
fn b() {}
|
||||
fn main() {}
|
||||
}
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@
|
|||
#[path = "issue-12590-b.rs"]
|
||||
mod issue_12590_b;
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -4,8 +4,8 @@
|
|||
fn main() {
|
||||
match true {
|
||||
true if true => (),
|
||||
false if false => unsafe { },
|
||||
true => { }
|
||||
false if false => unsafe {},
|
||||
true => {}
|
||||
false => (),
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@
|
|||
// pretty-compare-only
|
||||
// pp-exact
|
||||
|
||||
fn main() { b! { } c }
|
||||
fn main() { b! {} c }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
// pp-exact
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
||||
struct C {
|
||||
field: u8,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
// pp-exact
|
||||
|
||||
fn f1<'a, 'b, 'c>(_x: &'a u32, _y: &'b u32, _z: &'c u32) where 'c: 'a + 'b { }
|
||||
fn f1<'a, 'b, 'c>(_x: &'a u32, _y: &'b u32, _z: &'c u32) where 'c: 'a + 'b {}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@
|
|||
|
||||
pub(crate) macro mac { ($arg : expr) => { $arg + $arg } }
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,19 +1,19 @@
|
|||
// pp-exact
|
||||
|
||||
macro_rules! brace { () => { } ; }
|
||||
macro_rules! brace { () => {} ; }
|
||||
|
||||
macro_rules! bracket[() => { } ;];
|
||||
macro_rules! bracket[() => {} ;];
|
||||
|
||||
macro_rules! paren(() => { } ;);
|
||||
macro_rules! paren(() => {} ;);
|
||||
|
||||
macro_rules! matcher_brackets {
|
||||
(paren) => { } ; (bracket) => { } ; (brace) => { } ;
|
||||
(paren) => {} ; (bracket) => {} ; (brace) => {} ;
|
||||
}
|
||||
|
||||
macro_rules! all_fragments {
|
||||
($b : block, $e : expr, $i : ident, $it : item, $l : lifetime, $lit :
|
||||
literal, $m : meta, $p : pat, $pth : path, $s : stmt, $tt : tt, $ty : ty,
|
||||
$vis : vis) => { } ;
|
||||
$vis : vis) => {} ;
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
// pp-exact
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
||||
#[cfg(FALSE)]
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -2,9 +2,9 @@
|
|||
|
||||
|
||||
trait Tr {
|
||||
fn dummy(&self) { }
|
||||
fn dummy(&self) {}
|
||||
}
|
||||
impl Tr for isize { }
|
||||
impl Tr for isize {}
|
||||
|
||||
fn foo<'a>(x: Box<Tr + Sync + 'a>) -> Box<Tr + Sync + 'a> { x }
|
||||
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@ mod m {
|
|||
}
|
||||
|
||||
trait Tu {
|
||||
fn dummy() { }
|
||||
fn dummy() {}
|
||||
}
|
||||
|
||||
fn foo<T: m::Tr>() { <T as m::Tr>::Ts::dummy(); }
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#![feature(rustc_attrs)]
|
||||
#![feature(stmt_expr_attributes)]
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
||||
fn _0() {
|
||||
|
||||
|
|
@ -35,7 +35,7 @@ fn _2() {
|
|||
fn _3() {
|
||||
|
||||
#[rustc_dummy]
|
||||
match () { _ => { } }
|
||||
match () { _ => {} }
|
||||
}
|
||||
|
||||
fn _4() {
|
||||
|
|
@ -117,13 +117,13 @@ fn _9() {
|
|||
stmt_mac!();
|
||||
|
||||
#[rustc_dummy]
|
||||
stmt_mac! { };
|
||||
stmt_mac! {};
|
||||
|
||||
#[rustc_dummy]
|
||||
stmt_mac![];
|
||||
|
||||
#[rustc_dummy]
|
||||
stmt_mac! { }
|
||||
stmt_mac! {}
|
||||
|
||||
let _ = ();
|
||||
}
|
||||
|
|
@ -133,7 +133,7 @@ macro_rules! expr_mac { () => { () } }
|
|||
fn _10() {
|
||||
let _ = #[rustc_dummy] expr_mac!();
|
||||
let _ = #[rustc_dummy] expr_mac![];
|
||||
let _ = #[rustc_dummy] expr_mac! { };
|
||||
let _ = #[rustc_dummy] expr_mac! {};
|
||||
}
|
||||
|
||||
fn _11() {
|
||||
|
|
@ -235,7 +235,7 @@ fn _11() {
|
|||
|| #[rustc_dummy] return;
|
||||
let _ = #[rustc_dummy] expr_mac!();
|
||||
let _ = #[rustc_dummy] expr_mac![];
|
||||
let _ = #[rustc_dummy] expr_mac! { };
|
||||
let _ = #[rustc_dummy] expr_mac! {};
|
||||
let _ = #[rustc_dummy] Foo{data: (),};
|
||||
let _ = #[rustc_dummy] Foo{..s};
|
||||
let _ = #[rustc_dummy] Foo{data: (), ..s};
|
||||
|
|
@ -258,6 +258,6 @@ fn _12() {
|
|||
}
|
||||
}
|
||||
|
||||
fn foo() { }
|
||||
fn foo3(_: i32, _: (), _: ()) { }
|
||||
fn qux(_: i32) { }
|
||||
fn foo() {}
|
||||
fn foo3(_: i32, _: (), _: ()) {}
|
||||
fn qux(_: i32) {}
|
||||
|
|
|
|||
|
|
@ -5,4 +5,4 @@ enum foo {
|
|||
baz,
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@ trait Foo {
|
|||
#![allow(bar)]
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@
|
|||
|
||||
struct Test;
|
||||
|
||||
impl !Send for Test { }
|
||||
impl !Send for Test {}
|
||||
|
||||
pub fn main() { }
|
||||
pub fn main() {}
|
||||
|
|
|
|||
|
|
@ -5,11 +5,11 @@ unsafe trait UnsafeTrait {
|
|||
}
|
||||
|
||||
unsafe impl UnsafeTrait for isize {
|
||||
fn foo(&self) { }
|
||||
fn foo(&self) {}
|
||||
}
|
||||
|
||||
pub unsafe trait PubUnsafeTrait {
|
||||
fn foo(&self);
|
||||
}
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -2,4 +2,4 @@
|
|||
|
||||
fn f<'a, 'b, T>(t: T) -> isize where T: 'a, 'a: 'b, T: Eq { 0 }
|
||||
|
||||
fn main() { }
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
async fn f(mut x : u8) { }
|
||||
async fn g((mut x, y, mut z) : (u8, u8, u8)) { }
|
||||
async fn g(mut x : u8, (a, mut b, c) : (u8, u8, u8), y : u8) { }
|
||||
async fn f(mut x : u8) {}
|
||||
async fn g((mut x, y, mut z) : (u8, u8, u8)) {}
|
||||
async fn g(mut x : u8, (a, mut b, c) : (u8, u8, u8), y : u8) {}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ LL | #![u=||{static d=||1;}]
|
|||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: unexpected token: `{
|
||||
impl std::ops::Neg for i8 { }
|
||||
impl std::ops::Neg for i8 {}
|
||||
}`
|
||||
--> $DIR/issue-90873.rs:7:6
|
||||
|
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ use ::std::prelude::rust_2015::*;
|
|||
#[macro_use]
|
||||
extern crate std;
|
||||
|
||||
trait Foo<const KIND : bool = true> { }
|
||||
trait Foo<const KIND : bool = true> {}
|
||||
|
||||
fn foo<const SIZE : usize = 5>() { }
|
||||
fn foo<const SIZE : usize = 5>() {}
|
||||
|
||||
struct Range<const FROM : usize = 0, const LEN : usize = 0, const TO : usize =
|
||||
FROM>;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ error: overly complex generic constant
|
|||
LL | fn test<const N: usize>() -> [u8; N + (|| 42)()] {}
|
||||
| ^^^^-------^^
|
||||
| |
|
||||
| dereferencing is not supported in generic constants
|
||||
| borrowing is not supported in generic constants
|
||||
|
|
||||
= help: consider moving this anonymous constant into a `const` function
|
||||
= note: this operation may be supported in the future
|
||||
|
|
|
|||
12
src/test/ui/const-generics/issues/issue-90455.rs
Normal file
12
src/test/ui/const-generics/issues/issue-90455.rs
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#![feature(generic_const_exprs, adt_const_params)]
|
||||
#![allow(incomplete_features)]
|
||||
|
||||
struct FieldElement<const N: &'static str> {
|
||||
n: [u64; num_limbs(N)],
|
||||
//~^ ERROR unconstrained generic constant
|
||||
}
|
||||
const fn num_limbs(_: &str) -> usize {
|
||||
0
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
10
src/test/ui/const-generics/issues/issue-90455.stderr
Normal file
10
src/test/ui/const-generics/issues/issue-90455.stderr
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
error: unconstrained generic constant
|
||||
--> $DIR/issue-90455.rs:5:8
|
||||
|
|
||||
LL | n: [u64; num_limbs(N)],
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= help: try adding a `where` bound using this expression: `where [(); num_limbs(N)]:`
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -15,7 +15,7 @@ fn bar /* 0#0 */() {
|
|||
y /* 0#1 */ + x /* 0#0 */
|
||||
}
|
||||
|
||||
fn y /* 0#0 */() { }
|
||||
fn y /* 0#0 */() {}
|
||||
|
||||
/*
|
||||
Expansions:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// compile-flags: -Zfuture-incompat-test -Zemit-future-incompat-report
|
||||
// compile-flags: -Zfuture-incompat-test
|
||||
// check-pass
|
||||
|
||||
// The `-Zfuture-incompat-test flag causes any normal warning to be included
|
||||
|
|
|
|||
|
|
@ -11,4 +11,4 @@ extern crate std;
|
|||
|
||||
macro_rules! foo { () => { break 'x ; } }
|
||||
|
||||
pub fn main() { loop { } }
|
||||
pub fn main() { loop {} }
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ macro complex_nonterminal($nt_item: item) {
|
|||
struct S;
|
||||
}
|
||||
|
||||
n!(a $nt_item b); //~ ERROR no rules expected the token `enum E { }`
|
||||
n!(a $nt_item b); //~ ERROR no rules expected the token `enum E {}`
|
||||
}
|
||||
|
||||
simple_nonterminal!(a, 'a, (x, y, z)); // OK
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
error: no rules expected the token `enum E { }`
|
||||
error: no rules expected the token `enum E {}`
|
||||
--> $DIR/nonterminal-matching.rs:19:10
|
||||
|
|
||||
LL | macro n(a $nt_item b) {
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/allowed-attr-stmt-expr.rs:49:20: 49:21 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Foo { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Foo {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
@ -140,7 +140,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/allowed-attr-stmt-expr.rs:61:28: 61:29 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): second_make_stmt! (#[allow(dead_code)] struct Bar { }) ;
|
||||
PRINT-ATTR INPUT (DISPLAY): second_make_stmt! (#[allow(dead_code)] struct Bar {}) ;
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "second_make_stmt",
|
||||
|
|
@ -201,7 +201,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/allowed-attr-stmt-expr.rs:64:57: 64:58 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] #[allow(dead_code)] struct Bar { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] #[allow(dead_code)] struct Bar {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
@ -257,7 +257,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/allowed-attr-stmt-expr.rs:64:54: 64:56 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Other { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Other {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
PRINT-ATTR INPUT (DISPLAY): fn foo < T : MyTrait < MyStruct < { true } >> > () { }
|
||||
PRINT-ATTR INPUT (DISPLAY): fn foo < T : MyTrait < MyStruct < { true } >> > () {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "fn",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Foo { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Foo {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
@ -124,7 +124,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/attr-stmt-expr.rs:53:28: 53:29 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): second_make_stmt! (#[allow(dead_code)] struct Bar { }) ;
|
||||
PRINT-ATTR INPUT (DISPLAY): second_make_stmt! (#[allow(dead_code)] struct Bar {}) ;
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "second_make_stmt",
|
||||
|
|
@ -185,7 +185,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/attr-stmt-expr.rs:56:57: 56:58 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] #[allow(dead_code)] struct Bar { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] #[allow(dead_code)] struct Bar {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
@ -241,7 +241,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/attr-stmt-expr.rs:56:54: 56:56 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Other { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] struct Other {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/attribute-after-derive.rs:16:24: 19:2 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-DERIVE INPUT (DISPLAY): struct AttributeDerive { }
|
||||
PRINT-DERIVE INPUT (DISPLAY): struct AttributeDerive {}
|
||||
PRINT-DERIVE INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "struct",
|
||||
|
|
@ -99,7 +99,7 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/attribute-after-derive.rs:16:24: 19:2 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-DERIVE INPUT (DISPLAY): #[print_attr] struct DeriveAttribute { }
|
||||
PRINT-DERIVE INPUT (DISPLAY): #[print_attr] struct DeriveAttribute {}
|
||||
PRINT-DERIVE INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ pub fn attr_with_args(args: TokenStream, input: TokenStream) -> TokenStream {
|
|||
|
||||
let input = input.to_string();
|
||||
|
||||
assert_eq!(input, "fn foo() { }");
|
||||
assert_eq!(input, "fn foo() {}");
|
||||
|
||||
r#"
|
||||
fn foo() -> &'static str { "Hello, world!" }
|
||||
|
|
|
|||
|
|
@ -10,6 +10,6 @@ use proc_macro::TokenStream;
|
|||
#[proc_macro_attribute]
|
||||
pub fn foo(attr: TokenStream, item: TokenStream) -> TokenStream {
|
||||
drop(attr);
|
||||
assert_eq!(item.to_string(), "fn foo() { }");
|
||||
assert_eq!(item.to_string(), "fn foo() {}");
|
||||
"fn foo(&self);".parse().unwrap()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ PRINT-ATTR INPUT (DISPLAY): impl Foo <
|
|||
{
|
||||
#! [rustc_dummy(cursed_inner)] #! [allow(unused)] struct Inner
|
||||
{ field : [u8 ; { #! [rustc_dummy(another_cursed_inner)] 1 }] } 0
|
||||
}] > { #! [rustc_dummy(evaluated_attr)] fn bar() { } }
|
||||
}] > { #! [rustc_dummy(evaluated_attr)] fn bar() {} }
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "impl",
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
Derive First: #[derive(Second)] #[derive(Third, Fourth)] #[derive(Fifth)] pub struct Foo { }
|
||||
Derive Second: #[derive(Third, Fourth)] #[derive(Fifth)] pub struct Foo { }
|
||||
Derive Third: #[derive(Fifth)] pub struct Foo { }
|
||||
Derive Fourth: #[derive(Fifth)] pub struct Foo { }
|
||||
Derive Fifth: pub struct Foo { }
|
||||
Derive First: #[derive(Second)] #[derive(Third, Fourth)] #[derive(Fifth)] pub struct Foo {}
|
||||
Derive Second: #[derive(Third, Fourth)] #[derive(Fifth)] pub struct Foo {}
|
||||
Derive Third: #[derive(Fifth)] pub struct Foo {}
|
||||
Derive Fourth: #[derive(Fifth)] pub struct Foo {}
|
||||
Derive Fifth: pub struct Foo {}
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ PRINT-DERIVE INPUT (DEBUG): TokenStream [
|
|||
span: #8 bytes(430..483),
|
||||
},
|
||||
]
|
||||
PRINT-DERIVE INPUT (DISPLAY): enum E { V = { let _ = { { } } ; 0 }, }
|
||||
PRINT-DERIVE INPUT (DISPLAY): enum E { V = { let _ = { {} } ; 0 }, }
|
||||
PRINT-DERIVE INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "enum",
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/inner-attrs.rs:20:30: 20:36 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): fn foo() { }
|
||||
PRINT-ATTR INPUT (DISPLAY): fn foo() {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "fn",
|
||||
|
|
@ -552,7 +552,7 @@ PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/inner-attrs.rs:27:30: 27:40 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): mod inline_mod { }
|
||||
PRINT-ATTR INPUT (DISPLAY): mod inline_mod {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "mod",
|
||||
|
|
@ -933,7 +933,7 @@ PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/inner-attrs.rs:82:42: 82:47 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): fn weird_extern() { }
|
||||
PRINT-ATTR INPUT (DISPLAY): fn weird_extern() {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "fn",
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: #4 bytes(432..433),
|
||||
},
|
||||
]
|
||||
PRINT-DERIVE INPUT (DISPLAY): struct A { }
|
||||
PRINT-DERIVE INPUT (DISPLAY): struct A {}
|
||||
PRINT-DERIVE INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "struct",
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
PRINT-ATTR INPUT (DISPLAY): fn main() { & | _ : u8 | { } ; mul_2! (1 + 1) ; }
|
||||
PRINT-ATTR INPUT (DISPLAY): fn main() { & | _ : u8 | {} ; mul_2! (1 + 1) ; }
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "fn",
|
||||
|
|
|
|||
|
|
@ -8,8 +8,8 @@ struct Foo < #[cfg(FALSE)] A, B >
|
|||
#[cfg(FALSE)] struct Bar ; #[cfg(not(FALSE))] struct Inner ;
|
||||
#[cfg(FALSE)] let a = 25 ; match true
|
||||
{
|
||||
#[cfg(FALSE)] true => { },
|
||||
#[cfg_attr(not(FALSE), allow(warnings))] false => { }, _ => { }
|
||||
#[cfg(FALSE)] true => {},
|
||||
#[cfg_attr(not(FALSE), allow(warnings))] false => {}, _ => {}
|
||||
} ; #[print_helper(should_be_removed)] fn removed_fn()
|
||||
{ #! [cfg(FALSE)] } #[print_helper(c)] #[cfg(not(FALSE))] fn
|
||||
kept_fn() { #! [cfg(not(FALSE))] let my_val = true ; } enum TupleEnum
|
||||
|
|
@ -1278,7 +1278,7 @@ PRINT-DERIVE INPUT (DISPLAY): #[print_helper(a)] #[allow(dead_code)] #[print_hel
|
|||
[u8 ;
|
||||
{
|
||||
#[cfg(not(FALSE))] struct Inner ; match true
|
||||
{ #[allow(warnings)] false => { }, _ => { } } ; #[print_helper(c)]
|
||||
{ #[allow(warnings)] false => {}, _ => {} } ; #[print_helper(c)]
|
||||
#[cfg(not(FALSE))] fn kept_fn()
|
||||
{ #! [cfg(not(FALSE))] let my_val = true ; } enum TupleEnum
|
||||
{ Foo(#[cfg(not(FALSE))] i32, u8) } struct
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
PRINT-ATTR INPUT (DISPLAY): #[doc = r" A doc comment"] struct Foo { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[doc = r" A doc comment"] struct Foo {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
@ -40,7 +40,7 @@ PRINT-ATTR INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/issue-81007-item-attrs.rs:22:16: 22:18 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] #[doc = r" Another comment comment"] struct Bar { }
|
||||
PRINT-ATTR INPUT (DISPLAY): #[rustc_dummy] #[doc = r" Another comment comment"] struct Bar {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Punct {
|
||||
ch: '#',
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/auxiliary/nested-macro-rules.rs:9:30: 9:35 (#6),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): struct FirstAttrStruct { }
|
||||
PRINT-ATTR INPUT (DISPLAY): struct FirstAttrStruct {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "struct",
|
||||
|
|
@ -46,7 +46,7 @@ PRINT-BANG INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/auxiliary/nested-macro-rules.rs:9:30: 9:35 (#15),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): struct SecondAttrStruct { }
|
||||
PRINT-ATTR INPUT (DISPLAY): struct SecondAttrStruct {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "struct",
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ macro inner /* 0#4 */ { () => { print_bang! { struct S; } } }
|
|||
struct S /* 0#5 */;
|
||||
// OK, not a duplicate definition of `S`
|
||||
|
||||
fn main /* 0#0 */() { }
|
||||
fn main /* 0#0 */() {}
|
||||
|
||||
/*
|
||||
Expansions:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
PRINT-ATTR INPUT (DISPLAY): fn foo < T > () where T : Copy + { }
|
||||
PRINT-ATTR INPUT (DISPLAY): fn foo < T > () where T : Copy + {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "fn",
|
||||
|
|
|
|||
|
|
@ -445,7 +445,7 @@ PRINT-ATTR_ARGS INPUT (DEBUG): TokenStream [
|
|||
span: $DIR/weird-braces.rs:20:30: 20:42 (#0),
|
||||
},
|
||||
]
|
||||
PRINT-ATTR INPUT (DISPLAY): impl Bar < { 1 > 0 } > for Foo < { true } > { }
|
||||
PRINT-ATTR INPUT (DISPLAY): impl Bar < { 1 > 0 } > for Foo < { true } > {}
|
||||
PRINT-ATTR INPUT (DEBUG): TokenStream [
|
||||
Ident {
|
||||
ident: "impl",
|
||||
|
|
|
|||
|
|
@ -13,7 +13,6 @@ extern crate std;
|
|||
// [pretty]compile-flags: -Zunpretty=everybody_loops
|
||||
// [pretty]check-pass
|
||||
#[repr("C")]
|
||||
struct A {
|
||||
}
|
||||
struct A {}
|
||||
|
||||
fn main() { loop { } }
|
||||
fn main() { loop {} }
|
||||
|
|
|
|||
|
|
@ -7,4 +7,4 @@ extern crate std;
|
|||
// build-pass (FIXME(62277): could be check-pass?)
|
||||
// compile-flags: -Z unpretty=expanded
|
||||
|
||||
fn main() { if let 0 = 1 { } }
|
||||
fn main() { if let 0 = 1 {} }
|
||||
|
|
|
|||
|
|
@ -18,14 +18,14 @@ macro_rules! checker {
|
|||
}
|
||||
|
||||
checker!(attr_extern, r#"extern "C" { fn ffi(#[a1] arg1 : i32, #[a2] ...) ; }"#);
|
||||
checker!(attr_extern_cvar, r#"unsafe extern "C" fn cvar(arg1 : i32, #[a1] mut args : ...) { }"#);
|
||||
checker!(attr_extern_cvar, r#"unsafe extern "C" fn cvar(arg1 : i32, #[a1] mut args : ...) {}"#);
|
||||
checker!(attr_alias, "type Alias = fn(#[a1] u8, #[a2] ...) ;");
|
||||
checker!(attr_free, "fn free(#[a1] arg1 : u8) { let lam = | #[a2] W(x), #[a3] y | () ; }");
|
||||
checker!(attr_inherent_1, "fn inherent1(#[a1] self, #[a2] arg1 : u8) { }");
|
||||
checker!(attr_inherent_2, "fn inherent2(#[a1] & self, #[a2] arg1 : u8) { }");
|
||||
checker!(attr_inherent_3, "fn inherent3 < 'a > (#[a1] & 'a mut self, #[a2] arg1 : u8) { }");
|
||||
checker!(attr_inherent_4, "fn inherent4 < 'a > (#[a1] self : Box < Self >, #[a2] arg1 : u8) { }");
|
||||
checker!(attr_inherent_issue_64682, "fn inherent5(#[a1] #[a2] arg1 : u8, #[a3] arg2 : u8) { }");
|
||||
checker!(attr_inherent_1, "fn inherent1(#[a1] self, #[a2] arg1 : u8) {}");
|
||||
checker!(attr_inherent_2, "fn inherent2(#[a1] & self, #[a2] arg1 : u8) {}");
|
||||
checker!(attr_inherent_3, "fn inherent3 < 'a > (#[a1] & 'a mut self, #[a2] arg1 : u8) {}");
|
||||
checker!(attr_inherent_4, "fn inherent4 < 'a > (#[a1] self : Box < Self >, #[a2] arg1 : u8) {}");
|
||||
checker!(attr_inherent_issue_64682, "fn inherent5(#[a1] #[a2] arg1 : u8, #[a3] arg2 : u8) {}");
|
||||
checker!(attr_trait_1, "fn trait1(#[a1] self, #[a2] arg1 : u8) ;");
|
||||
checker!(attr_trait_2, "fn trait2(#[a1] & self, #[a2] arg1 : u8) ;");
|
||||
checker!(attr_trait_3, "fn trait3 < 'a > (#[a1] & 'a mut self, #[a2] arg1 : u8) ;");
|
||||
|
|
@ -35,9 +35,9 @@ checker!(attr_trait_issue_64682, "fn trait5(#[a1] #[a2] arg1 : u8, #[a3] arg2 :
|
|||
checker!(rename_params, r#"impl Foo
|
||||
{
|
||||
fn hello(#[angery(true)] a : i32, #[a2] b : i32, #[what = "how"] c : u32)
|
||||
{ } fn
|
||||
{} fn
|
||||
hello2(#[a1] #[a2] a : i32, #[what = "how"] b : i32, #[angery(true)] c :
|
||||
u32) { } fn
|
||||
u32) {} fn
|
||||
hello_self(#[a1] #[a2] & self, #[a1] #[a2] a : i32, #[what = "how"] b :
|
||||
i32, #[angery(true)] c : u32) { }
|
||||
i32, #[angery(true)] c : u32) {}
|
||||
}"#);
|
||||
|
|
|
|||
7
src/test/ui/typeck/issue-91450-inner-ty-error.rs
Normal file
7
src/test/ui/typeck/issue-91450-inner-ty-error.rs
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
// Regression test for #91450.
|
||||
// This test ensures that the compiler does not suggest `Foo<[type error]>` in diagnostic messages.
|
||||
|
||||
fn foo() -> Option<_> {} //~ ERROR: [E0308]
|
||||
//~^ ERROR: the type placeholder `_` is not allowed
|
||||
|
||||
fn main() {}
|
||||
21
src/test/ui/typeck/issue-91450-inner-ty-error.stderr
Normal file
21
src/test/ui/typeck/issue-91450-inner-ty-error.stderr
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/issue-91450-inner-ty-error.rs:4:13
|
||||
|
|
||||
LL | fn foo() -> Option<_> {}
|
||||
| --- ^^^^^^^^^ expected enum `Option`, found `()`
|
||||
| |
|
||||
| implicitly returns `()` as its body has no tail or `return` expression
|
||||
|
|
||||
= note: expected enum `Option<_>`
|
||||
found unit type `()`
|
||||
|
||||
error[E0121]: the type placeholder `_` is not allowed within types on item signatures for return types
|
||||
--> $DIR/issue-91450-inner-ty-error.rs:4:20
|
||||
|
|
||||
LL | fn foo() -> Option<_> {}
|
||||
| ^ not allowed in type signatures
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0121, E0308.
|
||||
For more information about an error, try `rustc --explain E0121`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue