Unconditionally lower generic_arg_infer
This commit is contained in:
parent
b85a91fc59
commit
6885ff4a7b
10 changed files with 91 additions and 119 deletions
|
@ -2031,11 +2031,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||||
fn lower_array_length_to_const_arg(&mut self, c: &AnonConst) -> &'hir hir::ConstArg<'hir> {
|
fn lower_array_length_to_const_arg(&mut self, c: &AnonConst) -> &'hir hir::ConstArg<'hir> {
|
||||||
match c.value.kind {
|
match c.value.kind {
|
||||||
ExprKind::Underscore => {
|
ExprKind::Underscore => {
|
||||||
if self.tcx.features().generic_arg_infer() {
|
if !self.tcx.features().generic_arg_infer() {
|
||||||
let ct_kind = hir::ConstArgKind::Infer(self.lower_span(c.value.span));
|
|
||||||
self.arena
|
|
||||||
.alloc(hir::ConstArg { hir_id: self.lower_node_id(c.id), kind: ct_kind })
|
|
||||||
} else {
|
|
||||||
feature_err(
|
feature_err(
|
||||||
&self.tcx.sess,
|
&self.tcx.sess,
|
||||||
sym::generic_arg_infer,
|
sym::generic_arg_infer,
|
||||||
|
@ -2043,8 +2039,9 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
|
||||||
fluent_generated::ast_lowering_underscore_array_length_unstable,
|
fluent_generated::ast_lowering_underscore_array_length_unstable,
|
||||||
)
|
)
|
||||||
.stash(c.value.span, StashKey::UnderscoreForArrayLengths);
|
.stash(c.value.span, StashKey::UnderscoreForArrayLengths);
|
||||||
self.lower_anon_const_to_const_arg(c)
|
|
||||||
}
|
}
|
||||||
|
let ct_kind = hir::ConstArgKind::Infer(self.lower_span(c.value.span));
|
||||||
|
self.arena.alloc(hir::ConstArg { hir_id: self.lower_node_id(c.id), kind: ct_kind })
|
||||||
}
|
}
|
||||||
_ => self.lower_anon_const_to_const_arg(c),
|
_ => self.lower_anon_const_to_const_arg(c),
|
||||||
}
|
}
|
||||||
|
|
|
@ -452,6 +452,12 @@ fn infer_placeholder_type<'tcx>(
|
||||||
if let Some(ty) = tcx.hir_node_by_def_id(def_id).ty() {
|
if let Some(ty) = tcx.hir_node_by_def_id(def_id).ty() {
|
||||||
visitor.visit_ty(ty);
|
visitor.visit_ty(ty);
|
||||||
}
|
}
|
||||||
|
// If we have just one span, let's try to steal a const `_` feature error.
|
||||||
|
let try_steal_span = if !tcx.features().generic_arg_infer() && visitor.0.len() == 1 {
|
||||||
|
visitor.0.first().copied()
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
// If we didn't find any infer tys, then just fallback to `span``.
|
// If we didn't find any infer tys, then just fallback to `span``.
|
||||||
if visitor.0.is_empty() {
|
if visitor.0.is_empty() {
|
||||||
visitor.0.push(span);
|
visitor.0.push(span);
|
||||||
|
@ -473,7 +479,16 @@ fn infer_placeholder_type<'tcx>(
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
diag.emit()
|
|
||||||
|
if let Some(try_steal_span) = try_steal_span {
|
||||||
|
cx.dcx().try_steal_replace_and_emit_err(
|
||||||
|
try_steal_span,
|
||||||
|
StashKey::UnderscoreForArrayLengths,
|
||||||
|
diag,
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
diag.emit()
|
||||||
|
}
|
||||||
});
|
});
|
||||||
Ty::new_error(tcx, guar)
|
Ty::new_error(tcx, guar)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1774,7 +1774,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
let Some((
|
let Some((
|
||||||
_,
|
_,
|
||||||
hir::Node::LetStmt(hir::LetStmt { ty: Some(ty), .. })
|
hir::Node::LetStmt(hir::LetStmt { ty: Some(ty), .. })
|
||||||
| hir::Node::Item(hir::Item { kind: hir::ItemKind::Const(ty, _, _), .. }),
|
|
||||||
)) = parent_node
|
)) = parent_node
|
||||||
else {
|
else {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -3,24 +3,21 @@
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
const Foo: [i32; 3] = [1, 2, 3];
|
const Foo: [i32; 3] = [1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
const REF_FOO: &[u8; 1] = &[1];
|
const REF_FOO: &[u8; 1] = &[1];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
static Statik: [i32; 3] = [1, 2, 3];
|
||||||
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
|
||||||
|
static REF_STATIK: &[u8; 1] = &[1];
|
||||||
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
|
||||||
let foo: [i32; 3] = [1, 2, 3];
|
let foo: [i32; 3] = [1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let bar: [i32; 3] = [0; 3];
|
let bar: [i32; 3] = [0; 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let ref_foo: &[i32; 3] = &[1, 2, 3];
|
let ref_foo: &[i32; 3] = &[1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let ref_bar: &[i32; 3] = &[0; 3];
|
let ref_bar: &[i32; 3] = &[0; 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let multiple_ref_foo: &&[i32; 3] = &&[1, 2, 3];
|
let multiple_ref_foo: &&[i32; 3] = &&[1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,24 +3,21 @@
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
const Foo: [i32; _] = [1, 2, 3];
|
const Foo: [i32; _] = [1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
const REF_FOO: &[u8; _] = &[1];
|
const REF_FOO: &[u8; _] = &[1];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
static Statik: [i32; _] = [1, 2, 3];
|
||||||
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
|
||||||
|
static REF_STATIK: &[u8; _] = &[1];
|
||||||
|
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
|
||||||
let foo: [i32; _] = [1, 2, 3];
|
let foo: [i32; _] = [1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let bar: [i32; _] = [0; 3];
|
let bar: [i32; _] = [0; 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let ref_foo: &[i32; _] = &[1, 2, 3];
|
let ref_foo: &[i32; _] = &[1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let ref_bar: &[i32; _] = &[0; 3];
|
let ref_bar: &[i32; _] = &[0; 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
let multiple_ref_foo: &&[i32; _] = &&[1, 2, 3];
|
let multiple_ref_foo: &&[i32; _] = &&[1, 2, 3];
|
||||||
//~^ ERROR in expressions, `_` can only be used on the left-hand side of an assignment
|
//~^ ERROR using `_` for array lengths is unstable
|
||||||
//~| ERROR using `_` for array lengths is unstable
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,67 +1,41 @@
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
|
||||||
--> $DIR/suggest-array-length.rs:11:20
|
|
||||||
|
|
|
||||||
LL | let foo: [i32; _] = [1, 2, 3];
|
|
||||||
| ^ `_` not allowed here
|
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
--> $DIR/suggest-array-length.rs:14:20
|
|
||||||
|
|
|
||||||
LL | let bar: [i32; _] = [0; 3];
|
|
||||||
| ^ `_` not allowed here
|
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
--> $DIR/suggest-array-length.rs:17:25
|
|
||||||
|
|
|
||||||
LL | let ref_foo: &[i32; _] = &[1, 2, 3];
|
|
||||||
| ^ `_` not allowed here
|
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
--> $DIR/suggest-array-length.rs:20:25
|
|
||||||
|
|
|
||||||
LL | let ref_bar: &[i32; _] = &[0; 3];
|
|
||||||
| ^ `_` not allowed here
|
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
--> $DIR/suggest-array-length.rs:23:35
|
|
||||||
|
|
|
||||||
LL | let multiple_ref_foo: &&[i32; _] = &&[1, 2, 3];
|
|
||||||
| ^ `_` not allowed here
|
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
--> $DIR/suggest-array-length.rs:5:22
|
--> $DIR/suggest-array-length.rs:5:22
|
||||||
|
|
|
|
||||||
LL | const Foo: [i32; _] = [1, 2, 3];
|
LL | const Foo: [i32; _] = [1, 2, 3];
|
||||||
| ^ `_` not allowed here
|
| ------^-
|
||||||
|
| | |
|
||||||
|
| | not allowed in type signatures
|
||||||
|
| help: replace with the correct type: `[i32; 3]`
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
|
||||||
--> $DIR/suggest-array-length.rs:8:26
|
--> $DIR/suggest-array-length.rs:7:26
|
||||||
|
|
|
|
||||||
LL | const REF_FOO: &[u8; _] = &[1];
|
LL | const REF_FOO: &[u8; _] = &[1];
|
||||||
| ^ `_` not allowed here
|
| ------^-
|
||||||
|
| | |
|
||||||
|
| | not allowed in type signatures
|
||||||
|
| help: replace with the correct type: `&[u8; 1]`
|
||||||
|
|
||||||
|
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
|
||||||
|
--> $DIR/suggest-array-length.rs:9:26
|
||||||
|
|
|
||||||
|
LL | static Statik: [i32; _] = [1, 2, 3];
|
||||||
|
| ------^-
|
||||||
|
| | |
|
||||||
|
| | not allowed in type signatures
|
||||||
|
| help: replace with the correct type: `[i32; 3]`
|
||||||
|
|
||||||
|
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
|
||||||
|
--> $DIR/suggest-array-length.rs:11:30
|
||||||
|
|
|
||||||
|
LL | static REF_STATIK: &[u8; _] = &[1];
|
||||||
|
| ------^-
|
||||||
|
| | |
|
||||||
|
| | not allowed in type signatures
|
||||||
|
| help: replace with the correct type: `&[u8; 1]`
|
||||||
|
|
||||||
error[E0658]: using `_` for array lengths is unstable
|
error[E0658]: using `_` for array lengths is unstable
|
||||||
--> $DIR/suggest-array-length.rs:5:22
|
--> $DIR/suggest-array-length.rs:13:20
|
||||||
|
|
|
||||||
LL | const Foo: [i32; _] = [1, 2, 3];
|
|
||||||
| ^ help: consider specifying the array length: `3`
|
|
||||||
|
|
|
||||||
= note: see issue #85077 <https://github.com/rust-lang/rust/issues/85077> for more information
|
|
||||||
= help: add `#![feature(generic_arg_infer)]` to the crate attributes to enable
|
|
||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
||||||
|
|
||||||
error[E0658]: using `_` for array lengths is unstable
|
|
||||||
--> $DIR/suggest-array-length.rs:8:26
|
|
||||||
|
|
|
||||||
LL | const REF_FOO: &[u8; _] = &[1];
|
|
||||||
| ^ help: consider specifying the array length: `1`
|
|
||||||
|
|
|
||||||
= note: see issue #85077 <https://github.com/rust-lang/rust/issues/85077> for more information
|
|
||||||
= help: add `#![feature(generic_arg_infer)]` to the crate attributes to enable
|
|
||||||
= note: this compiler was built on YYYY-MM-DD; consider upgrading it if it is out of date
|
|
||||||
|
|
||||||
error[E0658]: using `_` for array lengths is unstable
|
|
||||||
--> $DIR/suggest-array-length.rs:11:20
|
|
||||||
|
|
|
|
||||||
LL | let foo: [i32; _] = [1, 2, 3];
|
LL | let foo: [i32; _] = [1, 2, 3];
|
||||||
| ^ help: consider specifying the array length: `3`
|
| ^ help: consider specifying the array length: `3`
|
||||||
|
@ -71,7 +45,7 @@ LL | let foo: [i32; _] = [1, 2, 3];
|
||||||
= 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[E0658]: using `_` for array lengths is unstable
|
error[E0658]: using `_` for array lengths is unstable
|
||||||
--> $DIR/suggest-array-length.rs:14:20
|
--> $DIR/suggest-array-length.rs:15:20
|
||||||
|
|
|
|
||||||
LL | let bar: [i32; _] = [0; 3];
|
LL | let bar: [i32; _] = [0; 3];
|
||||||
| ^ help: consider specifying the array length: `3`
|
| ^ help: consider specifying the array length: `3`
|
||||||
|
@ -91,7 +65,7 @@ LL | let ref_foo: &[i32; _] = &[1, 2, 3];
|
||||||
= 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[E0658]: using `_` for array lengths is unstable
|
error[E0658]: using `_` for array lengths is unstable
|
||||||
--> $DIR/suggest-array-length.rs:20:25
|
--> $DIR/suggest-array-length.rs:19:25
|
||||||
|
|
|
|
||||||
LL | let ref_bar: &[i32; _] = &[0; 3];
|
LL | let ref_bar: &[i32; _] = &[0; 3];
|
||||||
| ^ help: consider specifying the array length: `3`
|
| ^ help: consider specifying the array length: `3`
|
||||||
|
@ -101,7 +75,7 @@ LL | let ref_bar: &[i32; _] = &[0; 3];
|
||||||
= 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[E0658]: using `_` for array lengths is unstable
|
error[E0658]: using `_` for array lengths is unstable
|
||||||
--> $DIR/suggest-array-length.rs:23:35
|
--> $DIR/suggest-array-length.rs:21:35
|
||||||
|
|
|
|
||||||
LL | let multiple_ref_foo: &&[i32; _] = &&[1, 2, 3];
|
LL | let multiple_ref_foo: &&[i32; _] = &&[1, 2, 3];
|
||||||
| ^ help: consider specifying the array length: `3`
|
| ^ help: consider specifying the array length: `3`
|
||||||
|
@ -110,6 +84,7 @@ LL | let multiple_ref_foo: &&[i32; _] = &&[1, 2, 3];
|
||||||
= help: add `#![feature(generic_arg_infer)]` to the crate attributes to enable
|
= help: add `#![feature(generic_arg_infer)]` to the crate attributes to enable
|
||||||
= 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: aborting due to 14 previous errors
|
error: aborting due to 9 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0658`.
|
Some errors have detailed explanations: E0121, E0658.
|
||||||
|
For more information about an error, try `rustc --explain E0121`.
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
|
|
||||||
pub trait C {
|
pub trait C {
|
||||||
async fn new() -> [u8; _];
|
async fn new() -> [u8; _];
|
||||||
//~^ ERROR: using `_` for array lengths is unstable
|
//~^ ERROR: the placeholder `_` is not allowed within types on item signatures for functions
|
||||||
//~| ERROR: in expressions, `_` can only be used on the left-hand side of an assignment
|
//~| ERROR using `_` for array lengths is unstable
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
|
|
@ -1,8 +1,13 @@
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
|
||||||
--> $DIR/issue-95307.rs:7:28
|
--> $DIR/issue-95307.rs:7:28
|
||||||
|
|
|
|
||||||
LL | async fn new() -> [u8; _];
|
LL | async fn new() -> [u8; _];
|
||||||
| ^ `_` not allowed here
|
| ^ not allowed in type signatures
|
||||||
|
|
|
||||||
|
help: use type parameters instead
|
||||||
|
|
|
||||||
|
LL | async fn new<T>() -> [u8; T];
|
||||||
|
| +++ ~
|
||||||
|
|
||||||
error[E0658]: using `_` for array lengths is unstable
|
error[E0658]: using `_` for array lengths is unstable
|
||||||
--> $DIR/issue-95307.rs:7:28
|
--> $DIR/issue-95307.rs:7:28
|
||||||
|
@ -16,4 +21,5 @@ LL | async fn new() -> [u8; _];
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
error: aborting due to 2 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0658`.
|
Some errors have detailed explanations: E0121, E0658.
|
||||||
|
For more information about an error, try `rustc --explain E0121`.
|
||||||
|
|
|
@ -1,17 +1,5 @@
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
--> $DIR/feature-gate-generic_arg_infer.rs:11:27
|
|
||||||
|
|
|
||||||
LL | let _x: [u8; 3] = [0; _];
|
|
||||||
| ^ `_` not allowed here
|
|
||||||
|
|
||||||
error: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
--> $DIR/feature-gate-generic_arg_infer.rs:14:18
|
|
||||||
|
|
|
||||||
LL | let _y: [u8; _] = [0; 3];
|
|
||||||
| ^ `_` not allowed here
|
|
||||||
|
|
||||||
error[E0658]: using `_` for array lengths is unstable
|
error[E0658]: using `_` for array lengths is unstable
|
||||||
--> $DIR/feature-gate-generic_arg_infer.rs:14:18
|
--> $DIR/feature-gate-generic_arg_infer.rs:13:18
|
||||||
|
|
|
|
||||||
LL | let _y: [u8; _] = [0; 3];
|
LL | let _y: [u8; _] = [0; 3];
|
||||||
| ^ help: consider specifying the array length: `3`
|
| ^ help: consider specifying the array length: `3`
|
||||||
|
@ -21,7 +9,7 @@ LL | let _y: [u8; _] = [0; 3];
|
||||||
= 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[E0747]: type provided when a constant was expected
|
error[E0747]: type provided when a constant was expected
|
||||||
--> $DIR/feature-gate-generic_arg_infer.rs:20:20
|
--> $DIR/feature-gate-generic_arg_infer.rs:18:20
|
||||||
|
|
|
|
||||||
LL | let _x = foo::<_>([1,2]);
|
LL | let _x = foo::<_>([1,2]);
|
||||||
| ^
|
| ^
|
||||||
|
@ -42,7 +30,7 @@ LL | let _x: [u8; 3] = [0; _];
|
||||||
= help: add `#![feature(generic_arg_infer)]` to the crate attributes to enable
|
= help: add `#![feature(generic_arg_infer)]` to the crate attributes to enable
|
||||||
= 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: aborting due to 5 previous errors
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
Some errors have detailed explanations: E0658, E0747.
|
Some errors have detailed explanations: E0658, E0747.
|
||||||
For more information about an error, try `rustc --explain E0658`.
|
For more information about an error, try `rustc --explain E0658`.
|
||||||
|
|
|
@ -10,10 +10,8 @@ fn foo<const N: usize>(_: [u8; N]) -> [u8; N] {
|
||||||
fn bar() {
|
fn bar() {
|
||||||
let _x: [u8; 3] = [0; _];
|
let _x: [u8; 3] = [0; _];
|
||||||
//[normal]~^ ERROR: using `_` for array lengths is unstable
|
//[normal]~^ ERROR: using `_` for array lengths is unstable
|
||||||
//[normal]~| ERROR: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
let _y: [u8; _] = [0; 3];
|
let _y: [u8; _] = [0; 3];
|
||||||
//[normal]~^ ERROR: using `_` for array lengths is unstable
|
//[normal]~^ ERROR: using `_` for array lengths is unstable
|
||||||
//[normal]~| ERROR: in expressions, `_` can only be used on the left-hand side of an assignment
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue