Update tests for erasing regions in typeck
This commit is contained in:
parent
0a7f16e7d8
commit
1ee5829575
@ -84,8 +84,8 @@ pub fn add_type_ascription_to_parameter() {
|
||||
}
|
||||
|
||||
#[cfg(not(cfail1))]
|
||||
#[rustc_clean(cfg="cfail2", except="hir_owner_items, mir_built, typeck_tables_of")]
|
||||
#[rustc_clean(cfg="cfail3")]
|
||||
#[rustc_clean(cfg = "cfail2", except = "hir_owner_items, typeck_tables_of")]
|
||||
#[rustc_clean(cfg = "cfail3")]
|
||||
pub fn add_type_ascription_to_parameter() {
|
||||
let closure = |x: u32| x + 1u32;
|
||||
let _: u32 = closure(1);
|
||||
|
@ -360,7 +360,7 @@ pub fn add_lifetime_bound_to_lifetime_param_of_method<'a, 'b>(&self) { }
|
||||
impl Foo {
|
||||
#[rustc_clean(
|
||||
cfg="cfail2",
|
||||
except="hir_owner,hir_owner_items,generics_of,predicates_of,type_of,typeck_tables_of"
|
||||
except="hir_owner,hir_owner_items,generics_of,predicates_of,type_of"
|
||||
)]
|
||||
#[rustc_clean(cfg="cfail3")]
|
||||
pub fn add_lifetime_bound_to_lifetime_param_of_method<'a, 'b: 'a>(&self) { }
|
||||
|
@ -81,7 +81,7 @@ pub fn var_deref(x: &i32, y: &i32) -> i32 {
|
||||
}
|
||||
|
||||
#[cfg(not(cfail1))]
|
||||
#[rustc_clean(except="hir_owner_items,optimized_mir,mir_built,typeck_tables_of", cfg="cfail2")]
|
||||
#[rustc_clean(except="hir_owner_items,optimized_mir,mir_built", cfg="cfail2")]
|
||||
#[rustc_clean(cfg="cfail3")]
|
||||
pub fn var_deref(x: &i32, y: &i32) -> i32 {
|
||||
*y
|
||||
|
@ -4,9 +4,9 @@
|
||||
|
||||
static Y: i32 = 42;
|
||||
|
||||
static mut BAR: *const &'static i32 = [&Y].as_ptr();
|
||||
static mut BAR: *const &i32 = [&Y].as_ptr();
|
||||
|
||||
static mut FOO: *const &'static i32 = [unsafe { &X }].as_ptr();
|
||||
static mut FOO: *const &i32 = [unsafe { &X }].as_ptr();
|
||||
|
||||
fn main() {}
|
||||
|
||||
@ -18,8 +18,8 @@ fn main() {}
|
||||
// _4 = &(*_5);
|
||||
// _3 = [move _4];
|
||||
// _2 = &_3;
|
||||
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// _1 = move _2 as &[&i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// }
|
||||
// ...
|
||||
// bb2: {
|
||||
@ -35,8 +35,8 @@ fn main() {}
|
||||
// _4 = &(*_5);
|
||||
// _3 = [move _4];
|
||||
// _2 = &_3;
|
||||
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// _1 = move _2 as &[&i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// }
|
||||
// ...
|
||||
// bb2: {
|
||||
@ -50,8 +50,8 @@ fn main() {}
|
||||
// ...
|
||||
// _6 = const BAR::promoted[0];
|
||||
// _2 = &(*_6);
|
||||
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// _1 = move _2 as &[&i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// }
|
||||
// ...
|
||||
// bb2: {
|
||||
@ -63,8 +63,8 @@ fn main() {}
|
||||
// ...
|
||||
// _6 = const FOO::promoted[0];
|
||||
// _2 = &(*_6);
|
||||
// _1 = move _2 as &[&'static i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&'static i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// _1 = move _2 as &[&i32] (Pointer(Unsize));
|
||||
// _0 = const core::slice::<impl [&i32]>::as_ptr(move _1) -> [return: bb2, unwind: bb1];
|
||||
// }
|
||||
// ...
|
||||
// bb2: {
|
||||
|
@ -27,7 +27,7 @@ fn main() {
|
||||
// }
|
||||
// bb2: {
|
||||
// ...
|
||||
// const std::rt::begin_panic::<&'static str>(const "explicit panic") -> bb5;
|
||||
// const std::rt::begin_panic::<&str>(const "explicit panic") -> bb5;
|
||||
// }
|
||||
// bb3: {
|
||||
// unreachable;
|
||||
|
@ -26,16 +26,16 @@ fn main() {
|
||||
// goto -> bb7;
|
||||
// }
|
||||
// bb2: {
|
||||
// switchInt((*(*((_1 as Some).0: &'<empty> &'<empty> i32)))) -> [0i32: bb3, otherwise: bb1];
|
||||
// switchInt((*(*((_1 as Some).0: &&i32)))) -> [0i32: bb3, otherwise: bb1];
|
||||
// }
|
||||
// bb3: {
|
||||
// goto -> bb4;
|
||||
// }
|
||||
// bb4: {
|
||||
// _4 = &shallow _1;
|
||||
// _5 = &shallow ((_1 as Some).0: &'<empty> &'<empty> i32);
|
||||
// _6 = &shallow (*((_1 as Some).0: &'<empty> &'<empty> i32));
|
||||
// _7 = &shallow (*(*((_1 as Some).0: &'<empty> &'<empty> i32)));
|
||||
// _5 = &shallow ((_1 as Some).0: &&i32);
|
||||
// _6 = &shallow (*((_1 as Some).0: &&i32));
|
||||
// _7 = &shallow (*(*((_1 as Some).0: &&i32)));
|
||||
// StorageLive(_8);
|
||||
// _8 = _2;
|
||||
// switchInt(move _8) -> [false: bb6, otherwise: bb5];
|
||||
@ -72,7 +72,7 @@ fn main() {
|
||||
// goto -> bb7;
|
||||
// }
|
||||
// bb2: {
|
||||
// switchInt((*(*((_1 as Some).0: &'<empty> &'<empty> i32)))) -> [0i32: bb3, otherwise: bb1];
|
||||
// switchInt((*(*((_1 as Some).0: &&i32)))) -> [0i32: bb3, otherwise: bb1];
|
||||
// }
|
||||
// bb3: {
|
||||
// goto -> bb4;
|
||||
|
@ -35,12 +35,12 @@ fn main() {
|
||||
|
||||
// END RUST SOURCE
|
||||
// START rustc.XXX.mir_map.0.mir
|
||||
// let mut _0: &'static Foo;
|
||||
// let _1: &'static Foo;
|
||||
// let mut _0: &Foo;
|
||||
// let _1: &Foo;
|
||||
// let _2: Foo;
|
||||
// let mut _3: &'static [(u32, u32)];
|
||||
// let mut _4: &'static [(u32, u32); 42];
|
||||
// let _5: &'static [(u32, u32); 42];
|
||||
// let mut _3: &[(u32, u32)];
|
||||
// let mut _4: &[(u32, u32); 42];
|
||||
// let _5: &[(u32, u32); 42];
|
||||
// let _6: [(u32, u32); 42];
|
||||
// let mut _7: (u32, u32);
|
||||
// let mut _8: (u32, u32);
|
||||
@ -178,7 +178,7 @@ fn main() {
|
||||
// _6 = [move _7, move _8, move _9, move _10, move _11, move _12, move _13, move _14, move _15, move _16, move _17, move _18, move _19, move _20, move _21, move _22, move _23, move _24, move _25, move _26, move _27, move _28, move _29, move _30, move _31, move _32, move _33, move _34, move _35, move _36, move _37, move _38, move _39, move _40, move _41, move _42, move _43, move _44, move _45, move _46, move _47, move _48];
|
||||
// _5 = &_6;
|
||||
// _4 = &(*_5);
|
||||
// _3 = move _4 as &'static [(u32, u32)] (Pointer(Unsize));
|
||||
// _3 = move _4 as &[(u32, u32)] (Pointer(Unsize));
|
||||
// _2 = Foo { tup: const "hi", data: move _3 };
|
||||
// _1 = &_2;
|
||||
// _0 = &(*_1);
|
||||
|
@ -34,29 +34,29 @@ pub fn bar() ({
|
||||
((::alloc::fmt::format as
|
||||
for<'r> fn(std::fmt::Arguments<'r>) -> std::string::String {std::fmt::format})(((::core::fmt::Arguments::new_v1
|
||||
as
|
||||
fn(&[&str], &[std::fmt::ArgumentV1<'_>]) -> std::fmt::Arguments<'_> {std::fmt::Arguments::<'_>::new_v1})((&([("test"
|
||||
as
|
||||
&'static str)]
|
||||
as
|
||||
[&str; 1])
|
||||
as
|
||||
&[&str; 1]),
|
||||
(&(match (()
|
||||
as
|
||||
())
|
||||
{
|
||||
()
|
||||
=>
|
||||
([]
|
||||
as
|
||||
[std::fmt::ArgumentV1<'_>; 0]),
|
||||
}
|
||||
as
|
||||
[std::fmt::ArgumentV1<'_>; 0])
|
||||
as
|
||||
&[std::fmt::ArgumentV1<'_>; 0]))
|
||||
fn(&[&str], &[std::fmt::ArgumentV1]) -> std::fmt::Arguments {std::fmt::Arguments::new_v1})((&([("test"
|
||||
as
|
||||
&str)]
|
||||
as
|
||||
[&str; 1])
|
||||
as
|
||||
&[&str; 1]),
|
||||
(&(match (()
|
||||
as
|
||||
())
|
||||
{
|
||||
()
|
||||
=>
|
||||
([]
|
||||
as
|
||||
[std::fmt::ArgumentV1; 0]),
|
||||
}
|
||||
as
|
||||
[std::fmt::ArgumentV1; 0])
|
||||
as
|
||||
&[std::fmt::ArgumentV1; 0]))
|
||||
as
|
||||
std::fmt::Arguments<'_>))
|
||||
std::fmt::Arguments))
|
||||
as std::string::String);
|
||||
(res as std::string::String)
|
||||
} as std::string::String);
|
||||
|
@ -21,7 +21,7 @@ LL | const ZST: &[u8] = unsafe { std::mem::transmute(1usize) };
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: source type: `usize` (word size)
|
||||
= note: target type: `&'static [u8]` (2 * word size)
|
||||
= note: target type: `&[u8]` (2 * word size)
|
||||
|
||||
error: could not evaluate constant pattern
|
||||
--> $DIR/transmute-size-mismatch-before-typeck.rs:10:9
|
||||
|
@ -14,7 +14,7 @@ LL | static BAR: _ = "test";
|
||||
| ^
|
||||
| |
|
||||
| not allowed in type signatures
|
||||
| help: replace `_` with the correct type: `&'static str`
|
||||
| help: replace `_` with the correct type: `&str`
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
@ -4,8 +4,8 @@ error[E0512]: cannot transmute between types of different sizes, or dependently-
|
||||
LL | let new: T::B = unsafe { std::mem::transmute(value) };
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: source type: `<T as Trait<'a>>::A` (size can vary because of <T as Trait>::A)
|
||||
= note: target type: `<T as Trait<'a>>::B` (size can vary because of <T as Trait>::B)
|
||||
= note: source type: `<T as Trait>::A` (this type does not have a fixed size)
|
||||
= note: target type: `<T as Trait>::B` (this type does not have a fixed size)
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
error: the type `&'static T` does not permit zero-initialization
|
||||
error: the type `&T` does not permit zero-initialization
|
||||
--> $DIR/uninitialized-zeroed.rs:29:32
|
||||
|
|
||||
LL | let _val: &'static T = mem::zeroed();
|
||||
@ -14,7 +14,7 @@ LL | #![deny(invalid_value)]
|
||||
| ^^^^^^^^^^^^^
|
||||
= note: references must be non-null
|
||||
|
||||
error: the type `&'static T` does not permit being left uninitialized
|
||||
error: the type `&T` does not permit being left uninitialized
|
||||
--> $DIR/uninitialized-zeroed.rs:30:32
|
||||
|
|
||||
LL | let _val: &'static T = mem::uninitialized();
|
||||
@ -25,7 +25,7 @@ LL | let _val: &'static T = mem::uninitialized();
|
||||
|
|
||||
= note: references must be non-null
|
||||
|
||||
error: the type `Wrap<&'static T>` does not permit zero-initialization
|
||||
error: the type `Wrap<&T>` does not permit zero-initialization
|
||||
--> $DIR/uninitialized-zeroed.rs:32:38
|
||||
|
|
||||
LL | let _val: Wrap<&'static T> = mem::zeroed();
|
||||
@ -40,7 +40,7 @@ note: references must be non-null (in this struct field)
|
||||
LL | struct Wrap<T> { wrapped: T }
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: the type `Wrap<&'static T>` does not permit being left uninitialized
|
||||
error: the type `Wrap<&T>` does not permit being left uninitialized
|
||||
--> $DIR/uninitialized-zeroed.rs:33:38
|
||||
|
|
||||
LL | let _val: Wrap<&'static T> = mem::uninitialized();
|
||||
@ -121,7 +121,7 @@ LL | let _val: Void = mem::uninitialized();
|
||||
|
|
||||
= note: enums with no variants have no valid value
|
||||
|
||||
error: the type `&'static i32` does not permit zero-initialization
|
||||
error: the type `&i32` does not permit zero-initialization
|
||||
--> $DIR/uninitialized-zeroed.rs:49:34
|
||||
|
|
||||
LL | let _val: &'static i32 = mem::zeroed();
|
||||
@ -132,7 +132,7 @@ LL | let _val: &'static i32 = mem::zeroed();
|
||||
|
|
||||
= note: references must be non-null
|
||||
|
||||
error: the type `&'static i32` does not permit being left uninitialized
|
||||
error: the type `&i32` does not permit being left uninitialized
|
||||
--> $DIR/uninitialized-zeroed.rs:50:34
|
||||
|
|
||||
LL | let _val: &'static i32 = mem::uninitialized();
|
||||
@ -366,7 +366,7 @@ LL | let _val: NonBig = mem::uninitialized();
|
||||
|
|
||||
= note: `NonBig` must be initialized inside its custom valid range
|
||||
|
||||
error: the type `&'static i32` does not permit zero-initialization
|
||||
error: the type `&i32` does not permit zero-initialization
|
||||
--> $DIR/uninitialized-zeroed.rs:84:34
|
||||
|
|
||||
LL | let _val: &'static i32 = mem::transmute(0usize);
|
||||
@ -377,7 +377,7 @@ LL | let _val: &'static i32 = mem::transmute(0usize);
|
||||
|
|
||||
= note: references must be non-null
|
||||
|
||||
error: the type `&'static [i32]` does not permit zero-initialization
|
||||
error: the type `&[i32]` does not permit zero-initialization
|
||||
--> $DIR/uninitialized-zeroed.rs:85:36
|
||||
|
|
||||
LL | let _val: &'static [i32] = mem::transmute((0usize, 0usize));
|
||||
|
@ -21,7 +21,7 @@ fn uninhab_union() -> Foo {
|
||||
|
||||
fn match_on_uninhab() {
|
||||
match uninhab_ref() {
|
||||
//~^ ERROR non-exhaustive patterns: type `&'static !` is non-empty
|
||||
//~^ ERROR non-exhaustive patterns: type `&!` is non-empty
|
||||
}
|
||||
|
||||
match uninhab_union() {
|
||||
|
@ -1,4 +1,4 @@
|
||||
error[E0004]: non-exhaustive patterns: type `&'static !` is non-empty
|
||||
error[E0004]: non-exhaustive patterns: type `&!` is non-empty
|
||||
--> $DIR/always-inhabited-union-ref.rs:23:11
|
||||
|
|
||||
LL | match uninhab_ref() {
|
||||
|
@ -1,32 +1,54 @@
|
||||
error[E0623]: lifetime mismatch
|
||||
error[E0491]: in type `&'b &'a usize`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:11:12
|
||||
|
|
||||
LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| --------- ---------
|
||||
| |
|
||||
| these two types are declared with different lifetimes...
|
||||
LL | let z: Option<&'b &'a usize> = None;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ ...but data from `a` flows into `b` here
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime `'b` as defined on the function body at 10:14
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:10:14
|
||||
|
|
||||
LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime `'a` as defined on the function body at 10:10
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:10:10
|
||||
|
|
||||
LL | fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| ^^
|
||||
|
||||
error[E0623]: lifetime mismatch
|
||||
error[E0491]: in type `&'b Paramd<'a>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:17:12
|
||||
|
|
||||
LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| --------- ---------
|
||||
| |
|
||||
| these two types are declared with different lifetimes...
|
||||
LL | let y: Paramd<'a> = Paramd { x: a };
|
||||
LL | let z: Option<&'b Paramd<'a>> = None;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^ ...but data from `a` flows into `b` here
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime `'b` as defined on the function body at 15:14
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:15:14
|
||||
|
|
||||
LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime `'a` as defined on the function body at 15:10
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:15:10
|
||||
|
|
||||
LL | fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| ^^
|
||||
|
||||
error[E0623]: lifetime mismatch
|
||||
error[E0491]: in type `&'a &'b usize`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:22:12
|
||||
|
|
||||
LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| --------- --------- these two types are declared with different lifetimes...
|
||||
LL | let z: Option<&'a &'b usize> = None;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ ...but data from `b` flows into `a` here
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime `'a` as defined on the function body at 21:10
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:21:10
|
||||
|
|
||||
LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime `'b` as defined on the function body at 21:14
|
||||
--> $DIR/regions-free-region-ordering-caller.rs:21:14
|
||||
|
|
||||
LL | fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
| ^^
|
||||
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0623`.
|
||||
For more information about this error, try `rustc --explain E0491`.
|
||||
|
@ -8,18 +8,18 @@
|
||||
struct Paramd<'a> { x: &'a usize }
|
||||
|
||||
fn call2<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
let z: Option<&'b &'a usize> = None;//[migrate]~ ERROR E0623
|
||||
let z: Option<&'b &'a usize> = None;//[migrate]~ ERROR E0491
|
||||
//[nll]~^ ERROR lifetime may not live long enough
|
||||
}
|
||||
|
||||
fn call3<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
let y: Paramd<'a> = Paramd { x: a };
|
||||
let z: Option<&'b Paramd<'a>> = None;//[migrate]~ ERROR E0623
|
||||
let z: Option<&'b Paramd<'a>> = None;//[migrate]~ ERROR E0491
|
||||
//[nll]~^ ERROR lifetime may not live long enough
|
||||
}
|
||||
|
||||
fn call4<'a, 'b>(a: &'a usize, b: &'b usize) {
|
||||
let z: Option<&'a &'b usize> = None;//[migrate]~ ERROR E0623
|
||||
let z: Option<&'a &'b usize> = None;//[migrate]~ ERROR E0491
|
||||
//[nll]~^ ERROR lifetime may not live long enough
|
||||
}
|
||||
|
||||
|
@ -43,4 +43,4 @@ fn main() {}
|
||||
static mut SM = "abc";
|
||||
//~^ ERROR missing type for `static mut` item
|
||||
//~| HELP provide a type for the item
|
||||
//~| SUGGESTION &'static str
|
||||
//~| SUGGESTION &str
|
||||
|
@ -14,7 +14,7 @@ error: missing type for `static mut` item
|
||||
--> $DIR/const-no-type.rs:43:12
|
||||
|
|
||||
LL | static mut SM = "abc";
|
||||
| ^^ help: provide a type for the item: `SM: &'static str`
|
||||
| ^^ help: provide a type for the item: `SM: &str`
|
||||
|
||||
error: missing type for `const` item
|
||||
--> $DIR/const-no-type.rs:14:7
|
||||
|
@ -4,8 +4,7 @@ error[E0512]: cannot transmute between types of different sizes, or dependently-
|
||||
LL | transmute(x)
|
||||
| ^^^^^^^^^
|
||||
|
|
||||
= note: source type: `<C as TypeConstructor<'a>>::T` (size can vary because of <C as TypeConstructor>::T)
|
||||
= note: target type: `<C as TypeConstructor<'b>>::T` (size can vary because of <C as TypeConstructor>::T)
|
||||
= note: `<C as TypeConstructor>::T` does not have a fixed size
|
||||
|
||||
error[E0512]: cannot transmute between types of different sizes, or dependently-sized types
|
||||
--> $DIR/main.rs:20:17
|
||||
|
@ -70,7 +70,7 @@ LL | static TEST3: _ = "test";
|
||||
| ^
|
||||
| |
|
||||
| not allowed in type signatures
|
||||
| help: replace `_` with the correct type: `&'static str`
|
||||
| help: replace `_` with the correct type: `&str`
|
||||
|
||||
error[E0121]: the type placeholder `_` is not allowed within types on item signatures
|
||||
--> $DIR/typeck_type_placeholder_item.rs:15:15
|
||||
@ -232,7 +232,7 @@ LL | static FN_TEST3: _ = "test";
|
||||
| ^
|
||||
| |
|
||||
| not allowed in type signatures
|
||||
| help: replace `_` with the correct type: `&'static str`
|
||||
| help: replace `_` with the correct type: `&str`
|
||||
|
||||
error[E0121]: the type placeholder `_` is not allowed within types on item signatures
|
||||
--> $DIR/typeck_type_placeholder_item.rs:88:22
|
||||
|
Loading…
Reference in New Issue
Block a user