Make output more specific

This commit is contained in:
Esteban Küber 2022-06-01 16:55:30 -07:00
parent 196a30ebff
commit ad63f907e9
28 changed files with 391 additions and 217 deletions

View file

@ -2108,6 +2108,46 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
extend: impl Fn(&mut DiagnosticBuilder<'tcx, ErrorGuaranteed>),
) -> bool {
let args = segments.clone().flat_map(|segment| segment.args().args);
let types_and_spans: Vec<_> = segments
.clone()
.flat_map(|segment| {
segment.res.and_then(|res| {
if segment.args().args.is_empty() {
None
} else {
let mut desc = res.descr();
if desc == "unresolved item" {
desc = "this type";
};
let name = match res {
Res::PrimTy(ty) => Some(ty.name()),
Res::Def(_, def_id) => self.tcx().opt_item_name(def_id),
_ => None,
};
Some((
match name {
Some(ty) => format!("{desc} `{ty}`"),
None => desc.to_string(),
},
segment.ident.span,
))
}
})
})
.collect();
let this_type = match &types_and_spans[..] {
[.., _, (last, _)] => format!(
"{} and {last}",
types_and_spans[..types_and_spans.len() - 1]
.iter()
.map(|(x, _)| x.as_str())
.intersperse(&", ")
.collect::<String>()
),
[(only, _)] => only.to_string(),
[] => "this type".to_string(),
};
let (lt, ty, ct, inf) =
args.clone().fold((false, false, false, false), |(lt, ty, ct, inf), arg| match arg {
@ -2143,7 +2183,7 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
let (kind, s) = match types[..] {
[.., _, last] => (
format!(
"{} and `{last}`",
"{} and {last}",
types[..types.len() - 1]
.iter()
.map(|&x| x)
@ -2161,9 +2201,12 @@ impl<'o, 'tcx> dyn AstConv<'tcx> + 'o {
self.tcx().sess,
span,
E0109,
"{kind} arguments are not allowed for this type",
"{kind} arguments are not allowed on {this_type}",
);
err.span_label(last_span, format!("{kind} argument{s} not allowed"));
for (_, span) in types_and_spans {
err.span_label(span, "not allowed on this");
}
extend(&mut err);
err.emit();
emitted = true;

View file

@ -1,7 +1,7 @@
use std::fmt::Debug;
#[derive(Debug)]
pub struct Irrelevant<Irrelevant> { //~ ERROR type arguments are not allowed for this type
pub struct Irrelevant<Irrelevant> { //~ ERROR type arguments are not allowed on type parameter
irrelevant: Irrelevant,
}

View file

@ -1,8 +1,11 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on type parameter `Irrelevant`
--> $DIR/issue-97343.rs:4:23
|
LL | #[derive(Debug)]
| ----- in this derive macro expansion
| -----
| |
| not allowed on this
| in this derive macro expansion
LL | pub struct Irrelevant<Irrelevant> {
| ^^^^^^^^^^ type argument not allowed
|

View file

@ -1,8 +1,10 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/E0109.rs:1:14
|
LL | type X = u32<i32>;
| ^^^ type argument not allowed
| --- ^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `u32` doesn't have type parameters
|

View file

@ -1,8 +1,10 @@
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/E0110.rs:1:14
|
LL | type X = u32<'static>;
| ^^^^^^^ lifetime argument not allowed
| --- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `u32` doesn't have type parameters
|

View file

@ -1,3 +1,3 @@
fn is_copy<T: ::std::marker<i32>::Copy>() {}
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on module `marker` [E0109]
fn main() {}

View file

@ -1,8 +1,10 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on module `marker`
--> $DIR/issue-22706.rs:1:29
|
LL | fn is_copy<T: ::std::marker<i32>::Copy>() {}
| ^^^ type argument not allowed
| ------ ^^^ type argument not allowed
| |
| not allowed on this
error: aborting due to previous error

View file

@ -3,7 +3,7 @@ pub struct Gcm<E>(E);
impl<E> Gcm<E> {
pub fn crash(e: E) -> Self {
Self::<E>(e)
//~^ ERROR type arguments are not allowed for this type
//~^ ERROR type arguments are not allowed on self constructor
}
}

View file

@ -1,8 +1,10 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self constructor
--> $DIR/issue-57924.rs:5:16
|
LL | Self::<E>(e)
| ^ type argument not allowed
| ---- ^ type argument not allowed
| |
| not allowed on this
error: aborting due to previous error

View file

@ -10,9 +10,9 @@ impl From<A> for B {
fn main() {
let c1 = ();
c1::<()>;
//~^ ERROR type arguments are not allowed for this type
//~^ ERROR type arguments are not allowed on local variable
let c1 = A {};
c1::<dyn Into<B>>;
//~^ ERROR type arguments are not allowed for this type
//~^ ERROR type arguments are not allowed on local variable
}

View file

@ -1,14 +1,18 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on local variable
--> $DIR/issue-60989.rs:12:10
|
LL | c1::<()>;
| ^^ type argument not allowed
| -- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on local variable
--> $DIR/issue-60989.rs:16:10
|
LL | c1::<dyn Into<B>>;
| ^^^^^^^^^^^ type argument not allowed
| -- ^^^^^^^^^^^ type argument not allowed
| |
| not allowed on this
error: aborting due to 2 previous errors

View file

@ -5,5 +5,5 @@ mod Mod {
fn main() {
Mod::FakeVariant::<i32>(0);
Mod::<i32>::FakeVariant(0);
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on module `Mod` [E0109]
}

View file

@ -1,8 +1,10 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on module `Mod`
--> $DIR/mod-subitem-as-enum-variant.rs:7:11
|
LL | Mod::<i32>::FakeVariant(0);
| ^^^ type argument not allowed
| --- ^^^ type argument not allowed
| |
| not allowed on this
error: aborting due to previous error

View file

@ -13,7 +13,7 @@ fn f<T: Tr>() {
//~^ ERROR expected struct, variant or union type, found associated type
let z = T::A::<u8> {};
//~^ ERROR expected struct, variant or union type, found associated type
//~| ERROR type arguments are not allowed for this type
//~| ERROR type arguments are not allowed on this type
match S {
T::A {} => {}
//~^ ERROR expected struct, variant or union type, found associated type
@ -22,7 +22,7 @@ fn f<T: Tr>() {
fn g<T: Tr<A = S>>() {
let s = T::A {}; // OK
let z = T::A::<u8> {}; //~ ERROR type arguments are not allowed for this type
let z = T::A::<u8> {}; //~ ERROR type arguments are not allowed on this type
match S {
T::A {} => {} // OK
}

View file

@ -4,11 +4,13 @@ error[E0071]: expected struct, variant or union type, found associated type
LL | let s = T::A {};
| ^^^^ not a struct
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/struct-path-associated-type.rs:14:20
|
LL | let z = T::A::<u8> {};
| ^^ type argument not allowed
| - ^^ type argument not allowed
| |
| not allowed on this
error[E0071]: expected struct, variant or union type, found associated type
--> $DIR/struct-path-associated-type.rs:14:13
@ -22,11 +24,13 @@ error[E0071]: expected struct, variant or union type, found associated type
LL | T::A {} => {}
| ^^^^ not a struct
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/struct-path-associated-type.rs:25:20
|
LL | let z = T::A::<u8> {};
| ^^ type argument not allowed
| - ^^ type argument not allowed
| |
| not allowed on this
error[E0223]: ambiguous associated type
--> $DIR/struct-path-associated-type.rs:32:13

View file

@ -6,7 +6,7 @@ trait Tr {
//~^ ERROR expected struct, variant or union type, found type parameter
let z = Self::<u8> {};
//~^ ERROR expected struct, variant or union type, found type parameter
//~| ERROR type arguments are not allowed for this type
//~| ERROR type arguments are not allowed on self type
match s {
Self { .. } => {}
//~^ ERROR expected struct, variant or union type, found type parameter
@ -17,7 +17,7 @@ trait Tr {
impl Tr for S {
fn f() {
let s = Self {}; // OK
let z = Self::<u8> {}; //~ ERROR type arguments are not allowed for this type
let z = Self::<u8> {}; //~ ERROR type arguments are not allowed on self type
match s {
Self { .. } => {} // OK
}
@ -27,7 +27,7 @@ impl Tr for S {
impl S {
fn g() {
let s = Self {}; // OK
let z = Self::<u8> {}; //~ ERROR type arguments are not allowed for this type
let z = Self::<u8> {}; //~ ERROR type arguments are not allowed on self type
match s {
Self { .. } => {} // OK
}

View file

@ -4,11 +4,13 @@ error[E0071]: expected struct, variant or union type, found type parameter `Self
LL | let s = Self {};
| ^^^^ not a struct
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/struct-path-self.rs:7:24
|
LL | let z = Self::<u8> {};
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
help: the `Self` type doesn't accept type parameters
|
@ -28,11 +30,13 @@ error[E0071]: expected struct, variant or union type, found type parameter `Self
LL | Self { .. } => {}
| ^^^^ not a struct
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/struct-path-self.rs:20:24
|
LL | let z = Self::<u8> {};
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `S`
--> $DIR/struct-path-self.rs:1:8
@ -48,11 +52,13 @@ LL - let z = Self::<u8> {};
LL + let z = Self {};
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/struct-path-self.rs:30:24
|
LL | let z = Self::<u8> {};
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `S`
--> $DIR/struct-path-self.rs:1:8

View file

@ -13,38 +13,38 @@ impl<T> Enum<T> {
Self::TSVariant(());
//~^ ERROR mismatched types [E0308]
Self::TSVariant::<()>(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Self::<()>::TSVariant(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on self type [E0109]
//~| ERROR mismatched types [E0308]
Self::<()>::TSVariant::<()>(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~| ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on self type [E0109]
//~| ERROR type arguments are not allowed on this type [E0109]
}
fn s_variant() {
Self::SVariant { v: () };
//~^ ERROR mismatched types [E0308]
Self::SVariant::<()> { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
//~| ERROR mismatched types [E0308]
Self::<()>::SVariant { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on self type [E0109]
//~| ERROR mismatched types [E0308]
Self::<()>::SVariant::<()> { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~| ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on self type [E0109]
//~| ERROR type arguments are not allowed on this type [E0109]
//~| ERROR mismatched types [E0308]
}
fn u_variant() {
Self::UVariant::<()>;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Self::<()>::UVariant;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on self type [E0109]
Self::<()>::UVariant::<()>;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~| ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on self type [E0109]
//~| ERROR type arguments are not allowed on this type [E0109]
}
}
@ -52,54 +52,54 @@ fn main() {
// Tuple struct variant
Enum::<()>::TSVariant::<()>(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Alias::TSVariant::<()>(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Alias::<()>::TSVariant::<()>(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
AliasFixed::TSVariant::<()>(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
AliasFixed::<()>::TSVariant(());
//~^ ERROR this type alias takes 0 generic arguments but 1 generic argument was supplied [E0107]
AliasFixed::<()>::TSVariant::<()>(());
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
//~| ERROR this type alias takes 0 generic arguments but 1 generic argument was supplied [E0107]
// Struct variant
Enum::<()>::SVariant::<()> { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Alias::SVariant::<()> { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Alias::<()>::SVariant::<()> { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
AliasFixed::SVariant::<()> { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
AliasFixed::<()>::SVariant { v: () };
//~^ ERROR this type alias takes 0 generic arguments but 1 generic argument was supplied [E0107]
AliasFixed::<()>::SVariant::<()> { v: () };
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
//~| ERROR this type alias takes 0 generic arguments but 1 generic argument was supplied [E0107]
// Unit variant
Enum::<()>::UVariant::<()>;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Alias::UVariant::<()>;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
Alias::<()>::UVariant::<()>;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
AliasFixed::UVariant::<()>;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
AliasFixed::<()>::UVariant;
//~^ ERROR this type alias takes 0 generic arguments but 1 generic argument was supplied [E0107]
AliasFixed::<()>::UVariant::<()>;
//~^ ERROR type arguments are not allowed for this type [E0109]
//~^ ERROR type arguments are not allowed on this type [E0109]
//~| ERROR this type alias takes 0 generic arguments but 1 generic argument was supplied [E0107]
}

View file

@ -17,17 +17,21 @@ note: tuple variant defined here
LL | enum Enum<T> { TSVariant(T), SVariant { v: T }, UVariant }
| ^^^^^^^^^
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:15:27
|
LL | Self::TSVariant::<()>(());
| ^^ type argument not allowed
| --------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/enum-variant-generic-args.rs:17:16
|
LL | Self::<()>::TSVariant(());
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `Enum<T>`
--> $DIR/enum-variant-generic-args.rs:7:6
@ -61,11 +65,13 @@ note: tuple variant defined here
LL | enum Enum<T> { TSVariant(T), SVariant { v: T }, UVariant }
| ^^^^^^^^^
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/enum-variant-generic-args.rs:20:16
|
LL | Self::<()>::TSVariant::<()>(());
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `Enum<T>`
--> $DIR/enum-variant-generic-args.rs:7:6
@ -80,11 +86,13 @@ help: the `Self` type doesn't accept type parameters, use the concrete type's na
LL | Enum::<()>::TSVariant::<()>(());
| ~~~~
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:20:33
|
LL | Self::<()>::TSVariant::<()>(());
| ^^ type argument not allowed
| --------- ^^ type argument not allowed
| |
| not allowed on this
error[E0308]: mismatched types
--> $DIR/enum-variant-generic-args.rs:26:29
@ -98,11 +106,13 @@ LL | Self::SVariant { v: () };
= note: expected type parameter `T`
found unit type `()`
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:28:26
|
LL | Self::SVariant::<()> { v: () };
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
|
= note: enum variants can't have type parameters
help: you might have meant to specity type parameters on enum `Enum`
@ -123,11 +133,13 @@ LL | Self::SVariant::<()> { v: () };
= note: expected type parameter `T`
found unit type `()`
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/enum-variant-generic-args.rs:31:16
|
LL | Self::<()>::SVariant { v: () };
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `Enum<T>`
--> $DIR/enum-variant-generic-args.rs:7:6
@ -154,11 +166,13 @@ LL | Self::<()>::SVariant { v: () };
= note: expected type parameter `T`
found unit type `()`
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/enum-variant-generic-args.rs:34:16
|
LL | Self::<()>::SVariant::<()> { v: () };
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `Enum<T>`
--> $DIR/enum-variant-generic-args.rs:7:6
@ -173,11 +187,13 @@ help: the `Self` type doesn't accept type parameters, use the concrete type's na
LL | Enum::<()>::SVariant::<()> { v: () };
| ~~~~
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:34:32
|
LL | Self::<()>::SVariant::<()> { v: () };
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
|
= note: enum variants can't have type parameters
help: you might have meant to specity type parameters on enum `Enum`
@ -198,17 +214,21 @@ LL | Self::<()>::SVariant::<()> { v: () };
= note: expected type parameter `T`
found unit type `()`
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:41:26
|
LL | Self::UVariant::<()>;
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/enum-variant-generic-args.rs:43:16
|
LL | Self::<()>::UVariant;
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `Enum<T>`
--> $DIR/enum-variant-generic-args.rs:7:6
@ -223,11 +243,13 @@ help: the `Self` type doesn't accept type parameters, use the concrete type's na
LL | Enum::<()>::UVariant;
| ~~~~
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on self type
--> $DIR/enum-variant-generic-args.rs:45:16
|
LL | Self::<()>::UVariant::<()>;
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
|
note: `Self` is of type `Enum<T>`
--> $DIR/enum-variant-generic-args.rs:7:6
@ -242,35 +264,45 @@ help: the `Self` type doesn't accept type parameters, use the concrete type's na
LL | Enum::<()>::UVariant::<()>;
| ~~~~
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:45:32
|
LL | Self::<()>::UVariant::<()>;
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:54:29
|
LL | Enum::<()>::TSVariant::<()>(());
| ^^ type argument not allowed
| --------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:57:24
|
LL | Alias::TSVariant::<()>(());
| ^^ type argument not allowed
| --------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:59:30
|
LL | Alias::<()>::TSVariant::<()>(());
| ^^ type argument not allowed
| --------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:62:29
|
LL | AliasFixed::TSVariant::<()>(());
| ^^ type argument not allowed
| --------- ^^ type argument not allowed
| |
| not allowed on this
error[E0107]: this type alias takes 0 generic arguments but 1 generic argument was supplied
--> $DIR/enum-variant-generic-args.rs:64:5
@ -300,25 +332,31 @@ note: type alias defined here, with 0 generic parameters
LL | type AliasFixed = Enum<()>;
| ^^^^^^^^^^
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:66:35
|
LL | AliasFixed::<()>::TSVariant::<()>(());
| ^^ type argument not allowed
| --------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:72:28
|
LL | Enum::<()>::SVariant::<()> { v: () };
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
|
= note: enum variants can't have type parameters
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:75:23
|
LL | Alias::SVariant::<()> { v: () };
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
|
= note: enum variants can't have type parameters
help: you might have meant to specity type parameters on enum `Enum`
@ -327,11 +365,13 @@ LL - Alias::SVariant::<()> { v: () };
LL + Alias::<()>::SVariant { v: () };
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:77:29
|
LL | Alias::<()>::SVariant::<()> { v: () };
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
|
= note: enum variants can't have type parameters
help: you might have meant to specity type parameters on enum `Enum`
@ -340,11 +380,13 @@ LL - Alias::<()>::SVariant::<()> { v: () };
LL + Alias::<()>::SVariant { v: () };
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:80:28
|
LL | AliasFixed::SVariant::<()> { v: () };
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
|
= note: enum variants can't have type parameters
help: you might have meant to specity type parameters on enum `Enum`
@ -381,11 +423,13 @@ note: type alias defined here, with 0 generic parameters
LL | type AliasFixed = Enum<()>;
| ^^^^^^^^^^
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:84:34
|
LL | AliasFixed::<()>::SVariant::<()> { v: () };
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
|
= note: enum variants can't have type parameters
help: you might have meant to specity type parameters on enum `Enum`
@ -394,29 +438,37 @@ LL - AliasFixed::<()>::SVariant::<()> { v: () };
LL + AliasFixed::<()>::SVariant { v: () };
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:90:28
|
LL | Enum::<()>::UVariant::<()>;
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:93:23
|
LL | Alias::UVariant::<()>;
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:95:29
|
LL | Alias::<()>::UVariant::<()>;
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:98:28
|
LL | AliasFixed::UVariant::<()>;
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
error[E0107]: this type alias takes 0 generic arguments but 1 generic argument was supplied
--> $DIR/enum-variant-generic-args.rs:100:5
@ -446,11 +498,13 @@ note: type alias defined here, with 0 generic parameters
LL | type AliasFixed = Enum<()>;
| ^^^^^^^^^^
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/enum-variant-generic-args.rs:102:34
|
LL | AliasFixed::<()>::UVariant::<()>;
| ^^ type argument not allowed
| -------- ^^ type argument not allowed
| |
| not allowed on this
error: aborting due to 39 previous errors

View file

@ -10,5 +10,5 @@ fn main() {
let _ = Option::<u8>::None; // OK
let _ = Option::None::<u8>; // OK (Lint in future!)
let _ = Alias::<u8>::None; // OK
let _ = Alias::None::<u8>; //~ ERROR type arguments are not allowed for this type
let _ = Alias::None::<u8>; //~ ERROR type arguments are not allowed on this type
}

View file

@ -1,8 +1,10 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/no-type-application-on-aliased-enum-variant.rs:13:27
|
LL | let _ = Alias::None::<u8>;
| ^^ type argument not allowed
| ---- ^^ type argument not allowed
| |
| not allowed on this
error: aborting due to previous error

View file

@ -1,7 +1,7 @@
// error-pattern: this file contains an unclosed delimiter
// error-pattern: cannot find type `ţ` in this scope
// error-pattern: parenthesized type parameters may only be used with a `Fn` trait
// error-pattern: type arguments are not allowed for this type
// error-pattern: type arguments are not allowed on this type
// error-pattern: mismatched types
// ignore-tidy-trailing-newlines
// `ţ` must be the last character in this file, it cannot be followed by a newline

View file

@ -30,11 +30,13 @@ error[E0214]: parenthesized type parameters may only be used with a `Fn` trait
LL | 0: u8(ţ
| ^^^^ only `Fn` traits may use parentheses
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/issue-91268.rs:9:11
|
LL | 0: u8(ţ
| ^ type argument not allowed
| -- ^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `u8` doesn't have type parameters
|

View file

@ -1,28 +1,28 @@
// run-rustfix
fn main() {
let _x: isize; //~ ERROR type arguments are not allowed for this type
let _x: i8; //~ ERROR type arguments are not allowed for this type
let _x: i16; //~ ERROR type arguments are not allowed for this type
let _x: i32; //~ ERROR type arguments are not allowed for this type
let _x: i64; //~ ERROR type arguments are not allowed for this type
let _x: usize; //~ ERROR type arguments are not allowed for this type
let _x: u8; //~ ERROR type arguments are not allowed for this type
let _x: u16; //~ ERROR type arguments are not allowed for this type
let _x: u32; //~ ERROR type arguments are not allowed for this type
let _x: u64; //~ ERROR type arguments are not allowed for this type
let _x: char; //~ ERROR type arguments are not allowed for this type
let _x: isize; //~ ERROR type arguments are not allowed on this type
let _x: i8; //~ ERROR type arguments are not allowed on this type
let _x: i16; //~ ERROR type arguments are not allowed on this type
let _x: i32; //~ ERROR type arguments are not allowed on this type
let _x: i64; //~ ERROR type arguments are not allowed on this type
let _x: usize; //~ ERROR type arguments are not allowed on this type
let _x: u8; //~ ERROR type arguments are not allowed on this type
let _x: u16; //~ ERROR type arguments are not allowed on this type
let _x: u32; //~ ERROR type arguments are not allowed on this type
let _x: u64; //~ ERROR type arguments are not allowed on this type
let _x: char; //~ ERROR type arguments are not allowed on this type
let _x: isize; //~ ERROR lifetime arguments are not allowed for this type
let _x: i8; //~ ERROR lifetime arguments are not allowed for this type
let _x: i16; //~ ERROR lifetime arguments are not allowed for this type
let _x: i32; //~ ERROR lifetime arguments are not allowed for this type
let _x: i64; //~ ERROR lifetime arguments are not allowed for this type
let _x: usize; //~ ERROR lifetime arguments are not allowed for this type
let _x: u8; //~ ERROR lifetime arguments are not allowed for this type
let _x: u16; //~ ERROR lifetime arguments are not allowed for this type
let _x: u32; //~ ERROR lifetime arguments are not allowed for this type
let _x: u64; //~ ERROR lifetime arguments are not allowed for this type
let _x: char; //~ ERROR lifetime arguments are not allowed for this type
let _x: isize; //~ ERROR lifetime arguments are not allowed on this type
let _x: i8; //~ ERROR lifetime arguments are not allowed on this type
let _x: i16; //~ ERROR lifetime arguments are not allowed on this type
let _x: i32; //~ ERROR lifetime arguments are not allowed on this type
let _x: i64; //~ ERROR lifetime arguments are not allowed on this type
let _x: usize; //~ ERROR lifetime arguments are not allowed on this type
let _x: u8; //~ ERROR lifetime arguments are not allowed on this type
let _x: u16; //~ ERROR lifetime arguments are not allowed on this type
let _x: u32; //~ ERROR lifetime arguments are not allowed on this type
let _x: u64; //~ ERROR lifetime arguments are not allowed on this type
let _x: char; //~ ERROR lifetime arguments are not allowed on this type
}

View file

@ -1,28 +1,28 @@
// run-rustfix
fn main() {
let _x: isize<isize>; //~ ERROR type arguments are not allowed for this type
let _x: i8<isize>; //~ ERROR type arguments are not allowed for this type
let _x: i16<isize>; //~ ERROR type arguments are not allowed for this type
let _x: i32<isize>; //~ ERROR type arguments are not allowed for this type
let _x: i64<isize>; //~ ERROR type arguments are not allowed for this type
let _x: usize<isize>; //~ ERROR type arguments are not allowed for this type
let _x: u8<isize>; //~ ERROR type arguments are not allowed for this type
let _x: u16<isize>; //~ ERROR type arguments are not allowed for this type
let _x: u32<isize>; //~ ERROR type arguments are not allowed for this type
let _x: u64<isize>; //~ ERROR type arguments are not allowed for this type
let _x: char<isize>; //~ ERROR type arguments are not allowed for this type
let _x: isize<isize>; //~ ERROR type arguments are not allowed on this type
let _x: i8<isize>; //~ ERROR type arguments are not allowed on this type
let _x: i16<isize>; //~ ERROR type arguments are not allowed on this type
let _x: i32<isize>; //~ ERROR type arguments are not allowed on this type
let _x: i64<isize>; //~ ERROR type arguments are not allowed on this type
let _x: usize<isize>; //~ ERROR type arguments are not allowed on this type
let _x: u8<isize>; //~ ERROR type arguments are not allowed on this type
let _x: u16<isize>; //~ ERROR type arguments are not allowed on this type
let _x: u32<isize>; //~ ERROR type arguments are not allowed on this type
let _x: u64<isize>; //~ ERROR type arguments are not allowed on this type
let _x: char<isize>; //~ ERROR type arguments are not allowed on this type
let _x: isize<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: i8<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: i16<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: i32<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: i64<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: usize<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: u8<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: u16<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: u32<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: u64<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: char<'static>; //~ ERROR lifetime arguments are not allowed for this type
let _x: isize<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: i8<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: i16<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: i32<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: i64<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: usize<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: u8<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: u16<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: u32<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: u64<'static>; //~ ERROR lifetime arguments are not allowed on this type
let _x: char<'static>; //~ ERROR lifetime arguments are not allowed on this type
}

View file

@ -1,8 +1,10 @@
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:4:15
|
LL | let _x: isize<isize>;
| ^^^^^ type argument not allowed
| ----- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `isize` doesn't have type parameters
|
@ -10,11 +12,13 @@ LL - let _x: isize<isize>;
LL + let _x: isize;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:5:12
|
LL | let _x: i8<isize>;
| ^^^^^ type argument not allowed
| -- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `i8` doesn't have type parameters
|
@ -22,11 +26,13 @@ LL - let _x: i8<isize>;
LL + let _x: i8;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:6:13
|
LL | let _x: i16<isize>;
| ^^^^^ type argument not allowed
| --- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `i16` doesn't have type parameters
|
@ -34,11 +40,13 @@ LL - let _x: i16<isize>;
LL + let _x: i16;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:7:13
|
LL | let _x: i32<isize>;
| ^^^^^ type argument not allowed
| --- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `i32` doesn't have type parameters
|
@ -46,11 +54,13 @@ LL - let _x: i32<isize>;
LL + let _x: i32;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:8:13
|
LL | let _x: i64<isize>;
| ^^^^^ type argument not allowed
| --- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `i64` doesn't have type parameters
|
@ -58,11 +68,13 @@ LL - let _x: i64<isize>;
LL + let _x: i64;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:9:15
|
LL | let _x: usize<isize>;
| ^^^^^ type argument not allowed
| ----- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `usize` doesn't have type parameters
|
@ -70,11 +82,13 @@ LL - let _x: usize<isize>;
LL + let _x: usize;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:10:12
|
LL | let _x: u8<isize>;
| ^^^^^ type argument not allowed
| -- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `u8` doesn't have type parameters
|
@ -82,11 +96,13 @@ LL - let _x: u8<isize>;
LL + let _x: u8;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:11:13
|
LL | let _x: u16<isize>;
| ^^^^^ type argument not allowed
| --- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `u16` doesn't have type parameters
|
@ -94,11 +110,13 @@ LL - let _x: u16<isize>;
LL + let _x: u16;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:12:13
|
LL | let _x: u32<isize>;
| ^^^^^ type argument not allowed
| --- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `u32` doesn't have type parameters
|
@ -106,11 +124,13 @@ LL - let _x: u32<isize>;
LL + let _x: u32;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:13:13
|
LL | let _x: u64<isize>;
| ^^^^^ type argument not allowed
| --- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `u64` doesn't have type parameters
|
@ -118,11 +138,13 @@ LL - let _x: u64<isize>;
LL + let _x: u64;
|
error[E0109]: type arguments are not allowed for this type
error[E0109]: type arguments are not allowed on this type
--> $DIR/prim-with-args.rs:14:14
|
LL | let _x: char<isize>;
| ^^^^^ type argument not allowed
| ---- ^^^^^ type argument not allowed
| |
| not allowed on this
|
help: primitive type `char` doesn't have type parameters
|
@ -130,11 +152,13 @@ LL - let _x: char<isize>;
LL + let _x: char;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:16:15
|
LL | let _x: isize<'static>;
| ^^^^^^^ lifetime argument not allowed
| ----- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `isize` doesn't have type parameters
|
@ -142,11 +166,13 @@ LL - let _x: isize<'static>;
LL + let _x: isize;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:17:12
|
LL | let _x: i8<'static>;
| ^^^^^^^ lifetime argument not allowed
| -- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `i8` doesn't have type parameters
|
@ -154,11 +180,13 @@ LL - let _x: i8<'static>;
LL + let _x: i8;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:18:13
|
LL | let _x: i16<'static>;
| ^^^^^^^ lifetime argument not allowed
| --- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `i16` doesn't have type parameters
|
@ -166,11 +194,13 @@ LL - let _x: i16<'static>;
LL + let _x: i16;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:19:13
|
LL | let _x: i32<'static>;
| ^^^^^^^ lifetime argument not allowed
| --- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `i32` doesn't have type parameters
|
@ -178,11 +208,13 @@ LL - let _x: i32<'static>;
LL + let _x: i32;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:20:13
|
LL | let _x: i64<'static>;
| ^^^^^^^ lifetime argument not allowed
| --- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `i64` doesn't have type parameters
|
@ -190,11 +222,13 @@ LL - let _x: i64<'static>;
LL + let _x: i64;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:21:15
|
LL | let _x: usize<'static>;
| ^^^^^^^ lifetime argument not allowed
| ----- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `usize` doesn't have type parameters
|
@ -202,11 +236,13 @@ LL - let _x: usize<'static>;
LL + let _x: usize;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:22:12
|
LL | let _x: u8<'static>;
| ^^^^^^^ lifetime argument not allowed
| -- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `u8` doesn't have type parameters
|
@ -214,11 +250,13 @@ LL - let _x: u8<'static>;
LL + let _x: u8;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:23:13
|
LL | let _x: u16<'static>;
| ^^^^^^^ lifetime argument not allowed
| --- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `u16` doesn't have type parameters
|
@ -226,11 +264,13 @@ LL - let _x: u16<'static>;
LL + let _x: u16;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:24:13
|
LL | let _x: u32<'static>;
| ^^^^^^^ lifetime argument not allowed
| --- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `u32` doesn't have type parameters
|
@ -238,11 +278,13 @@ LL - let _x: u32<'static>;
LL + let _x: u32;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:25:13
|
LL | let _x: u64<'static>;
| ^^^^^^^ lifetime argument not allowed
| --- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `u64` doesn't have type parameters
|
@ -250,11 +292,13 @@ LL - let _x: u64<'static>;
LL + let _x: u64;
|
error[E0109]: lifetime arguments are not allowed for this type
error[E0109]: lifetime arguments are not allowed on this type
--> $DIR/prim-with-args.rs:26:14
|
LL | let _x: char<'static>;
| ^^^^^^^ lifetime argument not allowed
| ---- ^^^^^^^ lifetime argument not allowed
| |
| not allowed on this
|
help: primitive type `char` doesn't have type parameters
|

View file

@ -1,5 +1,5 @@
fn foo() {
let x: usize<foo>; //~ ERROR const arguments are not allowed for this type
let x: usize<foo>; //~ ERROR const arguments are not allowed on this type
}
fn main() {}

View file

@ -1,8 +1,10 @@
error[E0109]: const arguments are not allowed for this type
error[E0109]: const arguments are not allowed on this type
--> $DIR/usize-generic-argument-parent.rs:2:18
|
LL | let x: usize<foo>;
| ^^^ const argument not allowed
| ----- ^^^ const argument not allowed
| |
| not allowed on this
|
help: primitive type `usize` doesn't have type parameters
|