Rollup merge of #24576 - cactorium:errorcodes, r=pnkfelix
For https://github.com/rust-lang/rust/issues/24407
This commit is contained in:
commit
52174305a0
1 changed files with 55 additions and 3 deletions
|
@ -524,10 +524,65 @@ number cannot be negative.
|
|||
E0307: r##"
|
||||
The length of an array is part of its type. For this reason, this length must be
|
||||
a compile-time constant.
|
||||
"##,
|
||||
|
||||
E0308: r##"
|
||||
This error occurs when the compiler was unable to infer the concrete type of a
|
||||
variable. This error can occur for several cases, the most common of which is a
|
||||
mismatch in the expected type that the compiler inferred for a variable's
|
||||
initializing expression, and the actual type explicitly assigned to the
|
||||
variable.
|
||||
|
||||
For example:
|
||||
|
||||
let x: i32 = "I am not a number!";
|
||||
// ~~~ ~~~~~~~~~~~~~~~~~~~~
|
||||
// | |
|
||||
// | initializing expression;
|
||||
// | compiler infers type `&str`
|
||||
// |
|
||||
// type `i32` assigned to variable `x`
|
||||
"##,
|
||||
|
||||
E0309: r##"
|
||||
Types in type definitions have lifetimes associated with them that represent
|
||||
how long the data stored within them is guaranteed to be live. This lifetime
|
||||
must be as long as the data needs to be alive, and missing the constraint that
|
||||
denotes this will cause this error.
|
||||
|
||||
// This won't compile because T is not constrained, meaning the data
|
||||
// stored in it is not guaranteed to last as long as the reference
|
||||
struct Foo<'a, T> {
|
||||
foo: &'a T
|
||||
}
|
||||
|
||||
// This will compile, because it has the constraint on the type parameter
|
||||
struct Foo<'a, T: 'a> {
|
||||
foo: &'a T
|
||||
}
|
||||
"##,
|
||||
|
||||
E0310: r##"
|
||||
Types in type definitions have lifetimes associated with them that represent
|
||||
how long the data stored within them is guaranteed to be live. This lifetime
|
||||
must be as long as the data needs to be alive, and missing the constraint that
|
||||
denotes this will cause this error.
|
||||
|
||||
// This won't compile because T is not constrained to the static lifetime
|
||||
// the reference needs
|
||||
struct Foo<T> {
|
||||
foo: &'static T
|
||||
}
|
||||
|
||||
// This will compile, because it has the constraint on the type parameter
|
||||
struct Foo<T: 'static> {
|
||||
foo: &'static T
|
||||
}
|
||||
"##
|
||||
|
||||
}
|
||||
|
||||
|
||||
register_diagnostics! {
|
||||
E0011,
|
||||
E0012,
|
||||
|
@ -571,9 +626,6 @@ register_diagnostics! {
|
|||
E0300, // unexpanded macro
|
||||
E0304, // expected signed integer constant
|
||||
E0305, // expected constant
|
||||
E0308,
|
||||
E0309, // thing may not live long enough
|
||||
E0310, // thing may not live long enough
|
||||
E0311, // thing may not live long enough
|
||||
E0312, // lifetime of reference outlives lifetime of borrowed content
|
||||
E0313, // lifetime of borrowed pointer outlives lifetime of captured variable
|
||||
|
|
Loading…
Reference in a new issue