Migrate some tests away from concat-idents
`concat_idents!` is in the process of being removed, but a few things it is used to test will still be relevant. Migrate these tests to something other than `concat_idents`.
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
#![feature(concat_idents)]
|
|
||||||
#![allow(nonstandard_style)]
|
#![allow(nonstandard_style)]
|
||||||
/// Generate 250 items that all match the query, starting with the longest.
|
/// Generate 250 items that all match the query, starting with the longest.
|
||||||
/// Those long items should be dropped from the result set, and the short ones
|
/// Those long items should be dropped from the result set, and the short ones
|
||||||
|
|||||||
@@ -1,10 +1,12 @@
|
|||||||
#![feature(concat_idents)]
|
// Issue: #32950
|
||||||
#![expect(deprecated)] // concat_idents is deprecated
|
// Ensure that using macros rather than a type doesn't break `derive`.
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
struct Baz<T>(
|
struct Nonsense<T> {
|
||||||
concat_idents!(Foo, Bar) //~ ERROR `derive` cannot be used on items with type macros
|
//~^ ERROR type parameter `T` is never used
|
||||||
//~^ ERROR cannot find type `FooBar` in this scope
|
should_be_vec_t: vec![T],
|
||||||
);
|
//~^ ERROR `derive` cannot be used on items with type macros
|
||||||
|
//~| ERROR expected type, found `expr` metavariable
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|||||||
@@ -1,15 +1,30 @@
|
|||||||
error: `derive` cannot be used on items with type macros
|
error: `derive` cannot be used on items with type macros
|
||||||
--> $DIR/issue-32950.rs:6:5
|
--> $DIR/issue-32950.rs:7:22
|
||||||
|
|
|
|
||||||
LL | concat_idents!(Foo, Bar)
|
LL | should_be_vec_t: vec![T],
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^
|
||||||
|
|
||||||
error[E0412]: cannot find type `FooBar` in this scope
|
error: expected type, found `expr` metavariable
|
||||||
--> $DIR/issue-32950.rs:6:5
|
--> $DIR/issue-32950.rs:7:22
|
||||||
|
|
|
|
||||||
LL | concat_idents!(Foo, Bar)
|
LL | should_be_vec_t: vec![T],
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ not found in this scope
|
| ^^^^^^^
|
||||||
|
| |
|
||||||
|
| expected type
|
||||||
|
| in this macro invocation
|
||||||
|
| this macro call doesn't expand to a type
|
||||||
|
|
|
||||||
|
= note: this error originates in the macro `vec` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error[E0392]: type parameter `T` is never used
|
||||||
|
--> $DIR/issue-32950.rs:5:17
|
||||||
|
|
|
||||||
|
LL | struct Nonsense<T> {
|
||||||
|
| ^ unused type parameter
|
||||||
|
|
|
||||||
|
= help: consider removing `T`, referring to it in a field, or using a marker such as `PhantomData`
|
||||||
|
= help: if you intended `T` to be a const parameter, use `const T: /* Type */` instead
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0412`.
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0392`.
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
#![feature(concat_idents)]
|
// Issue 50403
|
||||||
#![expect(deprecated)] // concat_idents is deprecated
|
// Ensure that `concat` can't create empty identifiers
|
||||||
|
// FIXME(macro_metavar_expr_concat): this error message could be improved
|
||||||
|
|
||||||
|
macro_rules! empty {
|
||||||
|
() => { ${concat()} } //~ ERROR expected identifier or string literal
|
||||||
|
//~^ERROR expected expression
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = concat_idents!(); //~ ERROR `concat_idents!()` takes 1 or more arguments
|
let x = empty!();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,19 @@
|
|||||||
error: `concat_idents!()` takes 1 or more arguments
|
error: expected identifier or string literal
|
||||||
--> $DIR/issue-50403.rs:5:13
|
--> $DIR/issue-50403.rs:6:14
|
||||||
|
|
|
|
||||||
LL | let x = concat_idents!();
|
LL | () => { ${concat()} }
|
||||||
| ^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: expected expression, found `$`
|
||||||
|
--> $DIR/issue-50403.rs:6:13
|
||||||
|
|
|
||||||
|
LL | () => { ${concat()} }
|
||||||
|
| ^ expected expression
|
||||||
|
...
|
||||||
|
LL | let x = empty!();
|
||||||
|
| -------- in this macro invocation
|
||||||
|
|
|
||||||
|
= note: this error originates in the macro `empty` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
#![feature(auto_traits)]
|
#![feature(auto_traits)]
|
||||||
#![feature(box_patterns)]
|
#![feature(box_patterns)]
|
||||||
#![feature(builtin_syntax)]
|
#![feature(builtin_syntax)]
|
||||||
#![feature(concat_idents)]
|
|
||||||
#![feature(const_trait_impl)]
|
#![feature(const_trait_impl)]
|
||||||
#![feature(decl_macro)]
|
#![feature(decl_macro)]
|
||||||
#![feature(deref_patterns)]
|
#![feature(deref_patterns)]
|
||||||
@@ -309,7 +308,6 @@ mod expressions {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// concat_idents is deprecated
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -622,8 +620,12 @@ mod types {
|
|||||||
/*! there is no syntax for this */
|
/*! there is no syntax for this */
|
||||||
}
|
}
|
||||||
/// TyKind::MacCall
|
/// TyKind::MacCall
|
||||||
#[expect(deprecated)]
|
fn ty_mac_call() {
|
||||||
fn ty_mac_call() { let _: T; let _: T; let _: T; }
|
macro_rules! ty { ($ty:ty) => { $ty } }
|
||||||
|
let _: T;
|
||||||
|
let _: T;
|
||||||
|
let _: T;
|
||||||
|
}
|
||||||
/// TyKind::CVarArgs
|
/// TyKind::CVarArgs
|
||||||
fn ty_c_var_args() {
|
fn ty_c_var_args() {
|
||||||
/*! FIXME: todo */
|
/*! FIXME: todo */
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
error[E0697]: closures cannot be static
|
error[E0697]: closures cannot be static
|
||||||
--> $DIR/exhaustive.rs:211:9
|
--> $DIR/exhaustive.rs:210:9
|
||||||
|
|
|
|
||||||
LL | static || value;
|
LL | static || value;
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
|
|
||||||
error[E0697]: closures cannot be static
|
error[E0697]: closures cannot be static
|
||||||
--> $DIR/exhaustive.rs:212:9
|
--> $DIR/exhaustive.rs:211:9
|
||||||
|
|
|
|
||||||
LL | static move || value;
|
LL | static move || value;
|
||||||
| ^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
error[E0728]: `await` is only allowed inside `async` functions and blocks
|
||||||
--> $DIR/exhaustive.rs:241:13
|
--> $DIR/exhaustive.rs:240:13
|
||||||
|
|
|
|
||||||
LL | fn expr_await() {
|
LL | fn expr_await() {
|
||||||
| --------------- this is not `async`
|
| --------------- this is not `async`
|
||||||
@@ -20,19 +20,19 @@ LL | fut.await;
|
|||||||
| ^^^^^ only allowed inside `async` functions and blocks
|
| ^^^^^ only allowed inside `async` functions and blocks
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
||||||
--> $DIR/exhaustive.rs:290:9
|
--> $DIR/exhaustive.rs:289:9
|
||||||
|
|
|
|
||||||
LL | _;
|
LL | _;
|
||||||
| ^ `_` not allowed here
|
| ^ `_` not allowed here
|
||||||
|
|
||||||
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
||||||
--> $DIR/exhaustive.rs:300:9
|
--> $DIR/exhaustive.rs:299:9
|
||||||
|
|
|
|
||||||
LL | x::();
|
LL | x::();
|
||||||
| ^^^^^ only `Fn` traits may use parentheses
|
| ^^^^^ only `Fn` traits may use parentheses
|
||||||
|
|
||||||
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
||||||
--> $DIR/exhaustive.rs:301:9
|
--> $DIR/exhaustive.rs:300:9
|
||||||
|
|
|
|
||||||
LL | x::(T, T) -> T;
|
LL | x::(T, T) -> T;
|
||||||
| ^^^^^^^^^^^^^^ only `Fn` traits may use parentheses
|
| ^^^^^^^^^^^^^^ only `Fn` traits may use parentheses
|
||||||
@@ -44,31 +44,31 @@ LL + x::<T, T> -> T;
|
|||||||
|
|
|
|
||||||
|
|
||||||
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
||||||
--> $DIR/exhaustive.rs:302:9
|
--> $DIR/exhaustive.rs:301:9
|
||||||
|
|
|
|
||||||
LL | crate::() -> ()::expressions::() -> ()::expr_path;
|
LL | crate::() -> ()::expressions::() -> ()::expr_path;
|
||||||
| ^^^^^^^^^^^^^^^ only `Fn` traits may use parentheses
|
| ^^^^^^^^^^^^^^^ only `Fn` traits may use parentheses
|
||||||
|
|
||||||
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
||||||
--> $DIR/exhaustive.rs:302:26
|
--> $DIR/exhaustive.rs:301:26
|
||||||
|
|
|
|
||||||
LL | crate::() -> ()::expressions::() -> ()::expr_path;
|
LL | crate::() -> ()::expressions::() -> ()::expr_path;
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^ only `Fn` traits may use parentheses
|
| ^^^^^^^^^^^^^^^^^^^^^ only `Fn` traits may use parentheses
|
||||||
|
|
||||||
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
||||||
--> $DIR/exhaustive.rs:305:9
|
--> $DIR/exhaustive.rs:304:9
|
||||||
|
|
|
|
||||||
LL | core::()::marker::()::PhantomData;
|
LL | core::()::marker::()::PhantomData;
|
||||||
| ^^^^^^^^ only `Fn` traits may use parentheses
|
| ^^^^^^^^ only `Fn` traits may use parentheses
|
||||||
|
|
||||||
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
||||||
--> $DIR/exhaustive.rs:305:19
|
--> $DIR/exhaustive.rs:304:19
|
||||||
|
|
|
|
||||||
LL | core::()::marker::()::PhantomData;
|
LL | core::()::marker::()::PhantomData;
|
||||||
| ^^^^^^^^^^ only `Fn` traits may use parentheses
|
| ^^^^^^^^^^ only `Fn` traits may use parentheses
|
||||||
|
|
||||||
error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
|
error: `yield` can only be used in `#[coroutine]` closures, or `gen` blocks
|
||||||
--> $DIR/exhaustive.rs:392:9
|
--> $DIR/exhaustive.rs:391:9
|
||||||
|
|
|
|
||||||
LL | yield;
|
LL | yield;
|
||||||
| ^^^^^
|
| ^^^^^
|
||||||
@@ -79,7 +79,7 @@ LL | #[coroutine] fn expr_yield() {
|
|||||||
| ++++++++++++
|
| ++++++++++++
|
||||||
|
|
||||||
error[E0703]: invalid ABI: found `C++`
|
error[E0703]: invalid ABI: found `C++`
|
||||||
--> $DIR/exhaustive.rs:472:23
|
--> $DIR/exhaustive.rs:471:23
|
||||||
|
|
|
|
||||||
LL | unsafe extern "C++" {}
|
LL | unsafe extern "C++" {}
|
||||||
| ^^^^^ invalid ABI
|
| ^^^^^ invalid ABI
|
||||||
@@ -87,7 +87,7 @@ LL | unsafe extern "C++" {}
|
|||||||
= note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
|
= note: invoke `rustc --print=calling-conventions` for a full list of supported calling conventions
|
||||||
|
|
||||||
error: `..` patterns are not allowed here
|
error: `..` patterns are not allowed here
|
||||||
--> $DIR/exhaustive.rs:679:13
|
--> $DIR/exhaustive.rs:678:13
|
||||||
|
|
|
|
||||||
LL | let ..;
|
LL | let ..;
|
||||||
| ^^
|
| ^^
|
||||||
@@ -95,13 +95,13 @@ LL | let ..;
|
|||||||
= note: only allowed in tuple, tuple struct, and slice patterns
|
= note: only allowed in tuple, tuple struct, and slice patterns
|
||||||
|
|
||||||
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
|
||||||
--> $DIR/exhaustive.rs:794:16
|
--> $DIR/exhaustive.rs:793:16
|
||||||
|
|
|
|
||||||
LL | let _: T() -> !;
|
LL | let _: T() -> !;
|
||||||
| ^^^^^^^^ only `Fn` traits may use parentheses
|
| ^^^^^^^^ only `Fn` traits may use parentheses
|
||||||
|
|
||||||
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
||||||
--> $DIR/exhaustive.rs:809:16
|
--> $DIR/exhaustive.rs:808:16
|
||||||
|
|
|
|
||||||
LL | let _: impl Send;
|
LL | let _: impl Send;
|
||||||
| ^^^^^^^^^
|
| ^^^^^^^^^
|
||||||
@@ -112,7 +112,7 @@ LL | let _: impl Send;
|
|||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
||||||
--> $DIR/exhaustive.rs:810:16
|
--> $DIR/exhaustive.rs:809:16
|
||||||
|
|
|
|
||||||
LL | let _: impl Send + 'static;
|
LL | let _: impl Send + 'static;
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
@@ -123,7 +123,7 @@ LL | let _: impl Send + 'static;
|
|||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
||||||
--> $DIR/exhaustive.rs:811:16
|
--> $DIR/exhaustive.rs:810:16
|
||||||
|
|
|
|
||||||
LL | let _: impl 'static + Send;
|
LL | let _: impl 'static + Send;
|
||||||
| ^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
@@ -134,7 +134,7 @@ LL | let _: impl 'static + Send;
|
|||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
||||||
--> $DIR/exhaustive.rs:812:16
|
--> $DIR/exhaustive.rs:811:16
|
||||||
|
|
|
|
||||||
LL | let _: impl ?Sized;
|
LL | let _: impl ?Sized;
|
||||||
| ^^^^^^^^^^^
|
| ^^^^^^^^^^^
|
||||||
@@ -145,7 +145,7 @@ LL | let _: impl ?Sized;
|
|||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
||||||
--> $DIR/exhaustive.rs:813:16
|
--> $DIR/exhaustive.rs:812:16
|
||||||
|
|
|
|
||||||
LL | let _: impl ~const Clone;
|
LL | let _: impl ~const Clone;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
@@ -156,7 +156,7 @@ LL | let _: impl ~const Clone;
|
|||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
||||||
|
|
||||||
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
error[E0562]: `impl Trait` is not allowed in the type of variable bindings
|
||||||
--> $DIR/exhaustive.rs:814:16
|
--> $DIR/exhaustive.rs:813:16
|
||||||
|
|
|
|
||||||
LL | let _: impl for<'a> Send;
|
LL | let _: impl for<'a> Send;
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
#![feature(auto_traits)]
|
#![feature(auto_traits)]
|
||||||
#![feature(box_patterns)]
|
#![feature(box_patterns)]
|
||||||
#![feature(builtin_syntax)]
|
#![feature(builtin_syntax)]
|
||||||
#![feature(concat_idents)]
|
|
||||||
#![feature(const_trait_impl)]
|
#![feature(const_trait_impl)]
|
||||||
#![feature(decl_macro)]
|
#![feature(decl_macro)]
|
||||||
#![feature(deref_patterns)]
|
#![feature(deref_patterns)]
|
||||||
@@ -349,7 +348,6 @@ mod expressions {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// concat_idents is deprecated
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -696,8 +694,12 @@ mod types {
|
|||||||
/*! there is no syntax for this */
|
/*! there is no syntax for this */
|
||||||
fn ty_implicit_self() { }
|
fn ty_implicit_self() { }
|
||||||
/// TyKind::MacCall
|
/// TyKind::MacCall
|
||||||
#[expect(deprecated)]
|
fn ty_mac_call() {
|
||||||
fn ty_mac_call() { let _: T; let _: T; let _: T; }
|
macro_rules! ty { ($ty:ty) => { $ty } }
|
||||||
|
let _: T;
|
||||||
|
let _: T;
|
||||||
|
let _: T;
|
||||||
|
}
|
||||||
/// TyKind::CVarArgs
|
/// TyKind::CVarArgs
|
||||||
/*! FIXME: todo */
|
/*! FIXME: todo */
|
||||||
fn ty_c_var_args() { }
|
fn ty_c_var_args() { }
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
#![feature(auto_traits)]
|
#![feature(auto_traits)]
|
||||||
#![feature(box_patterns)]
|
#![feature(box_patterns)]
|
||||||
#![feature(builtin_syntax)]
|
#![feature(builtin_syntax)]
|
||||||
#![feature(concat_idents)]
|
|
||||||
#![feature(const_trait_impl)]
|
#![feature(const_trait_impl)]
|
||||||
#![feature(decl_macro)]
|
#![feature(decl_macro)]
|
||||||
#![feature(deref_patterns)]
|
#![feature(deref_patterns)]
|
||||||
@@ -835,11 +834,13 @@ mod types {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// TyKind::MacCall
|
/// TyKind::MacCall
|
||||||
#[expect(deprecated)] // concat_idents is deprecated
|
|
||||||
fn ty_mac_call() {
|
fn ty_mac_call() {
|
||||||
let _: concat_idents!(T);
|
macro_rules! ty {
|
||||||
let _: concat_idents![T];
|
($ty:ty) => { $ty }
|
||||||
let _: concat_idents! { T };
|
}
|
||||||
|
let _: ty!(T);
|
||||||
|
let _: ty![T];
|
||||||
|
let _: ty! { T };
|
||||||
}
|
}
|
||||||
|
|
||||||
/// TyKind::CVarArgs
|
/// TyKind::CVarArgs
|
||||||
|
|||||||
Reference in New Issue
Block a user