Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
b2d8f0c7
R
Rust
项目概览
int
/
Rust
大约 1 年 前同步成功
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
b2d8f0c7
编写于
1月 05, 2022
作者:
L
lcnr
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
generic_arg_infer: placeholder in signature err
上级
621e60a5
变更
38
展开全部
隐藏空白更改
内联
并排
Showing
38 changed file
with
402 addition
and
235 deletion
+402
-235
compiler/rustc_typeck/src/astconv/mod.rs
compiler/rustc_typeck/src/astconv/mod.rs
+2
-2
compiler/rustc_typeck/src/collect.rs
compiler/rustc_typeck/src/collect.rs
+24
-16
compiler/rustc_typeck/src/collect/type_of.rs
compiler/rustc_typeck/src/collect/type_of.rs
+1
-1
src/test/ui/const-generics/generic_arg_infer/array-in-sig.rs
src/test/ui/const-generics/generic_arg_infer/array-in-sig.rs
+0
-12
src/test/ui/const-generics/generic_arg_infer/array-in-sig.stderr
...t/ui/const-generics/generic_arg_infer/array-in-sig.stderr
+0
-9
src/test/ui/const-generics/generic_arg_infer/in-signature.rs
src/test/ui/const-generics/generic_arg_infer/in-signature.rs
+61
-0
src/test/ui/const-generics/generic_arg_infer/in-signature.stderr
...t/ui/const-generics/generic_arg_infer/in-signature.stderr
+119
-0
src/test/ui/did_you_mean/bad-assoc-ty.rs
src/test/ui/did_you_mean/bad-assoc-ty.rs
+10
-10
src/test/ui/did_you_mean/bad-assoc-ty.stderr
src/test/ui/did_you_mean/bad-assoc-ty.stderr
+10
-10
src/test/ui/error-codes/E0121.stderr
src/test/ui/error-codes/E0121.stderr
+2
-2
src/test/ui/fn/issue-80179.rs
src/test/ui/fn/issue-80179.rs
+2
-2
src/test/ui/fn/issue-80179.stderr
src/test/ui/fn/issue-80179.stderr
+2
-2
src/test/ui/issues/issue-69396-const-no-type-in-macro.rs
src/test/ui/issues/issue-69396-const-no-type-in-macro.rs
+1
-1
src/test/ui/issues/issue-69396-const-no-type-in-macro.stderr
src/test/ui/issues/issue-69396-const-no-type-in-macro.stderr
+1
-1
src/test/ui/self/self-infer.rs
src/test/ui/self/self-infer.rs
+2
-2
src/test/ui/self/self-infer.stderr
src/test/ui/self/self-infer.stderr
+2
-2
src/test/ui/suggestions/unnamable-types.rs
src/test/ui/suggestions/unnamable-types.rs
+2
-2
src/test/ui/suggestions/unnamable-types.stderr
src/test/ui/suggestions/unnamable-types.stderr
+2
-2
src/test/ui/type-alias-impl-trait/issue-77179.rs
src/test/ui/type-alias-impl-trait/issue-77179.rs
+1
-1
src/test/ui/type-alias-impl-trait/issue-77179.stderr
src/test/ui/type-alias-impl-trait/issue-77179.stderr
+1
-1
src/test/ui/typeck/issue-74086.rs
src/test/ui/typeck/issue-74086.rs
+1
-1
src/test/ui/typeck/issue-74086.stderr
src/test/ui/typeck/issue-74086.stderr
+1
-1
src/test/ui/typeck/issue-75883.rs
src/test/ui/typeck/issue-75883.rs
+2
-2
src/test/ui/typeck/issue-75883.stderr
src/test/ui/typeck/issue-75883.stderr
+2
-2
src/test/ui/typeck/issue-75889.stderr
src/test/ui/typeck/issue-75889.stderr
+2
-2
src/test/ui/typeck/issue-80779.rs
src/test/ui/typeck/issue-80779.rs
+2
-2
src/test/ui/typeck/issue-80779.stderr
src/test/ui/typeck/issue-80779.stderr
+2
-2
src/test/ui/typeck/issue-81885.rs
src/test/ui/typeck/issue-81885.rs
+2
-2
src/test/ui/typeck/issue-81885.stderr
src/test/ui/typeck/issue-81885.stderr
+2
-2
src/test/ui/typeck/issue-83621-placeholder-static-in-extern.stderr
...ui/typeck/issue-83621-placeholder-static-in-extern.stderr
+1
-1
src/test/ui/typeck/issue-91450-inner-ty-error.rs
src/test/ui/typeck/issue-91450-inner-ty-error.rs
+1
-1
src/test/ui/typeck/issue-91450-inner-ty-error.stderr
src/test/ui/typeck/issue-91450-inner-ty-error.stderr
+1
-1
src/test/ui/typeck/type-placeholder-fn-in-const.rs
src/test/ui/typeck/type-placeholder-fn-in-const.rs
+3
-3
src/test/ui/typeck/type-placeholder-fn-in-const.stderr
src/test/ui/typeck/type-placeholder-fn-in-const.stderr
+3
-3
src/test/ui/typeck/typeck_type_placeholder_item.rs
src/test/ui/typeck/typeck_type_placeholder_item.rs
+60
-60
src/test/ui/typeck/typeck_type_placeholder_item.stderr
src/test/ui/typeck/typeck_type_placeholder_item.stderr
+60
-60
src/test/ui/typeck/typeck_type_placeholder_item_help.rs
src/test/ui/typeck/typeck_type_placeholder_item_help.rs
+6
-6
src/test/ui/typeck/typeck_type_placeholder_item_help.stderr
src/test/ui/typeck/typeck_type_placeholder_item_help.stderr
+6
-6
未找到文件。
compiler/rustc_typeck/src/astconv/mod.rs
浏览文件 @
b2d8f0c7
...
...
@@ -6,7 +6,7 @@
mod
generics
;
use
crate
::
bounds
::
Bounds
;
use
crate
::
collect
::
PlaceholderHirTy
Collector
;
use
crate
::
collect
::
HirPlaceholder
Collector
;
use
crate
::
errors
::{
AmbiguousLifetimeBound
,
MultipleRelaxedDefaultBounds
,
TraitObjectDeclaredWithNoTraits
,
TypeofReservedKeywordUsed
,
ValueOfAssociatedStructAlreadySpecified
,
...
...
@@ -2478,7 +2478,7 @@ pub fn ty_of_fn(
debug!
(
?
bound_vars
);
// We proactively collect all the inferred type params to emit a single error per fn def.
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
for
ty
in
decl
.inputs
{
visitor
.visit_ty
(
ty
);
}
...
...
compiler/rustc_typeck/src/collect.rs
浏览文件 @
b2d8f0c7
...
...
@@ -112,9 +112,9 @@ pub struct ItemCtxt<'tcx> {
///////////////////////////////////////////////////////////////////////////
#[derive(Default)]
crate
struct
PlaceholderHirTy
Collector
(
crate
Vec
<
Span
>
);
crate
struct
HirPlaceholder
Collector
(
crate
Vec
<
Span
>
);
impl
<
'v
>
Visitor
<
'v
>
for
PlaceholderHirTy
Collector
{
impl
<
'v
>
Visitor
<
'v
>
for
HirPlaceholder
Collector
{
fn
visit_ty
(
&
mut
self
,
t
:
&
'v
hir
::
Ty
<
'v
>
)
{
if
let
hir
::
TyKind
::
Infer
=
t
.kind
{
self
.0
.push
(
t
.span
);
...
...
@@ -131,6 +131,12 @@ fn visit_generic_arg(&mut self, generic_arg: &'v hir::GenericArg<'v>) {
_
=>
{}
}
}
fn
visit_array_length
(
&
mut
self
,
length
:
&
'v
hir
::
ArrayLen
)
{
if
let
&
hir
::
ArrayLen
::
Infer
(
_
,
span
)
=
length
{
self
.0
.push
(
span
);
}
intravisit
::
walk_array_len
(
self
,
length
)
}
}
struct
CollectItemTypesVisitor
<
'tcx
>
{
...
...
@@ -175,7 +181,7 @@ struct CollectItemTypesVisitor<'tcx> {
sugg
.push
((
span
,
format!
(
", {}"
,
type_name
)));
}
let
mut
err
=
bad_placeholder
(
tcx
,
"type"
,
placeholder_types
,
kind
);
let
mut
err
=
bad_placeholder
(
tcx
,
placeholder_types
,
kind
);
// Suggest, but only if it is not a function in const or static
if
suggest
{
...
...
@@ -233,7 +239,7 @@ fn reject_placeholder_type_signatures_in_item<'tcx>(
_
=>
return
,
};
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_item
(
item
);
placeholder_type_error
(
...
...
@@ -311,7 +317,6 @@ fn visit_impl_item(&mut self, impl_item: &'tcx hir::ImplItem<'tcx>) {
fn
bad_placeholder
<
'tcx
>
(
tcx
:
TyCtxt
<
'tcx
>
,
placeholder_kind
:
&
'static
str
,
mut
spans
:
Vec
<
Span
>
,
kind
:
&
'static
str
,
)
->
rustc_errors
::
DiagnosticBuilder
<
'tcx
>
{
...
...
@@ -322,8 +327,7 @@ fn bad_placeholder<'tcx>(
tcx
.sess
,
spans
.clone
(),
E0121
,
"the {} placeholder `_` is not allowed within types on item signatures for {}"
,
placeholder_kind
,
"the placeholder `_` is not allowed within types on item signatures for {}"
,
kind
);
for
span
in
spans
{
...
...
@@ -737,7 +741,7 @@ fn convert_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
match
item
.kind
{
hir
::
ForeignItemKind
::
Fn
(
..
)
=>
tcx
.ensure
()
.fn_sig
(
item
.def_id
),
hir
::
ForeignItemKind
::
Static
(
..
)
=>
{
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_foreign_item
(
item
);
placeholder_type_error
(
tcx
,
...
...
@@ -820,7 +824,7 @@ fn convert_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
hir
::
ItemKind
::
Const
(
ty
,
..
)
|
hir
::
ItemKind
::
Static
(
ty
,
..
)
=>
{
// (#75889): Account for `const C: dyn Fn() -> _ = "";`
if
let
hir
::
TyKind
::
TraitObject
(
..
)
=
ty
.kind
{
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_item
(
it
);
placeholder_type_error
(
tcx
,
...
...
@@ -856,7 +860,7 @@ fn convert_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
hir
::
TraitItemKind
::
Const
(
..
)
=>
{
tcx
.ensure
()
.type_of
(
trait_item_id
.def_id
);
// Account for `const C: _;`.
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_trait_item
(
trait_item
);
placeholder_type_error
(
tcx
,
None
,
&
[],
visitor
.0
,
false
,
None
,
"constant"
);
}
...
...
@@ -865,7 +869,7 @@ fn convert_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
tcx
.ensure
()
.item_bounds
(
trait_item_id
.def_id
);
tcx
.ensure
()
.type_of
(
trait_item_id
.def_id
);
// Account for `type T = _;`.
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_trait_item
(
trait_item
);
placeholder_type_error
(
tcx
,
None
,
&
[],
visitor
.0
,
false
,
None
,
"associated type"
);
}
...
...
@@ -874,7 +878,7 @@ fn convert_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
tcx
.ensure
()
.item_bounds
(
trait_item_id
.def_id
);
// #74612: Visit and try to find bad placeholders
// even if there is no concrete type.
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_trait_item
(
trait_item
);
placeholder_type_error
(
tcx
,
None
,
&
[],
visitor
.0
,
false
,
None
,
"associated type"
);
...
...
@@ -896,7 +900,7 @@ fn convert_impl_item(tcx: TyCtxt<'_>, impl_item_id: hir::ImplItemId) {
}
hir
::
ImplItemKind
::
TyAlias
(
_
)
=>
{
// Account for `type T = _;`
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_impl_item
(
impl_item
);
placeholder_type_error
(
tcx
,
None
,
&
[],
visitor
.0
,
false
,
None
,
"associated type"
);
...
...
@@ -1816,10 +1820,14 @@ fn are_suggestable_generic_args(generic_args: &[hir::GenericArg<'_>]) -> bool {
/// Whether `ty` is a type with `_` placeholders that can be inferred. Used in diagnostics only to
/// use inference to provide suggestions for the appropriate type if possible.
fn
is_suggestable_infer_ty
(
ty
:
&
hir
::
Ty
<
'_
>
)
->
bool
{
debug!
(
?
ty
);
use
hir
::
TyKind
::
*
;
match
&
ty
.kind
{
Infer
=>
true
,
Slice
(
ty
)
|
Array
(
ty
,
_
)
=>
is_suggestable_infer_ty
(
ty
),
Slice
(
ty
)
=>
is_suggestable_infer_ty
(
ty
),
Array
(
ty
,
length
)
=>
{
is_suggestable_infer_ty
(
ty
)
||
matches!
(
length
,
hir
::
ArrayLen
::
Infer
(
_
,
_
))
}
Tup
(
tys
)
=>
tys
.iter
()
.any
(
is_suggestable_infer_ty
),
Ptr
(
mut_ty
)
|
Rptr
(
_
,
mut_ty
)
=>
is_suggestable_infer_ty
(
mut_ty
.ty
),
OpaqueDef
(
_
,
generic_args
)
=>
are_suggestable_generic_args
(
generic_args
),
...
...
@@ -1871,9 +1879,9 @@ fn fn_sig(tcx: TyCtxt<'_>, def_id: DefId) -> ty::PolyFnSig<'_> {
});
let
fn_sig
=
ty
::
Binder
::
dummy
(
fn_sig
);
let
mut
visitor
=
PlaceholderHirTy
Collector
::
default
();
let
mut
visitor
=
HirPlaceholder
Collector
::
default
();
visitor
.visit_ty
(
ty
);
let
mut
diag
=
bad_placeholder
(
tcx
,
"type"
,
visitor
.0
,
"return type"
);
let
mut
diag
=
bad_placeholder
(
tcx
,
visitor
.0
,
"return type"
);
let
ret_ty
=
fn_sig
.skip_binder
()
.output
();
if
!
ret_ty
.references_error
()
{
if
!
ret_ty
.is_closure
()
{
...
...
compiler/rustc_typeck/src/collect/type_of.rs
浏览文件 @
b2d8f0c7
...
...
@@ -750,7 +750,7 @@ fn fold_ty(&mut self, ty: Ty<'tcx>) -> Ty<'tcx> {
err
.emit
();
}
None
=>
{
let
mut
diag
=
bad_placeholder
(
tcx
,
"type"
,
vec!
[
span
],
kind
);
let
mut
diag
=
bad_placeholder
(
tcx
,
vec!
[
span
],
kind
);
if
!
ty
.references_error
()
{
let
mut
mk_nameable
=
MakeNameable
::
new
(
tcx
);
...
...
src/test/ui/const-generics/generic_arg_infer/array-in-sig.rs
已删除
100644 → 0
浏览文件 @
621e60a5
// To avoid having to `or` gate `_` as an expr.
#![feature(generic_arg_infer)]
fn
foo
()
->
[
u8
;
_
]
{
//~^ ERROR the const placeholder `_` is not allowed within types on item signatures for generics
// FIXME(generic_arg_infer): this error message should say in the return type or sth like that.
[
0
;
3
]
}
fn
main
()
{
foo
();
}
src/test/ui/const-generics/generic_arg_infer/array-in-sig.stderr
已删除
100644 → 0
浏览文件 @
621e60a5
error[E0121]: the const placeholder `_` is not allowed within types on item signatures for generics
--> $DIR/array-in-sig.rs:4:18
|
LL | fn foo() -> [u8; _] {
| ^ not allowed in type signatures
error: aborting due to previous error
For more information about this error, try `rustc --explain E0121`.
src/test/ui/const-generics/generic_arg_infer/in-signature.rs
0 → 100644
浏览文件 @
b2d8f0c7
#![crate_type
=
"rlib"
]
#![feature(generic_arg_infer)]
struct
Foo
<
const
N
:
usize
>
;
struct
Bar
<
T
,
const
N
:
usize
>
(
T
);
fn
arr_fn
()
->
[
u8
;
_
]
{
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
[
0
;
3
]
}
fn
ty_fn
()
->
Bar
<
i32
,
_
>
{
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
Bar
::
<
i32
,
3
>
(
0
)
}
fn
ty_fn_mixed
()
->
Bar
<
_
,
_
>
{
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
Bar
::
<
i32
,
3
>
(
0
)
}
const
ARR_CT
:
[
u8
;
_
]
=
[
0
;
3
];
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
static
ARR_STATIC
:
[
u8
;
_
]
=
[
0
;
3
];
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
const
TY_CT
:
Bar
<
i32
,
_
>
=
Bar
::
<
i32
,
3
>
(
0
);
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
static
TY_STATIC
:
Bar
<
i32
,
_
>
=
Bar
::
<
i32
,
3
>
(
0
);
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
const
TY_CT_MIXED
:
Bar
<
_
,
_
>
=
Bar
::
<
i32
,
3
>
(
0
);
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
static
TY_STATIC_MIXED
:
Bar
<
_
,
_
>
=
Bar
::
<
i32
,
3
>
(
0
);
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
trait
ArrAssocConst
{
const
ARR
:
[
u8
;
_
];
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
}
trait
TyAssocConst
{
const
ARR
:
Bar
<
i32
,
_
>
;
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
}
trait
TyAssocConstMixed
{
const
ARR
:
Bar
<
_
,
_
>
;
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
}
trait
AssocTy
{
type
Assoc
;
}
impl
AssocTy
for
i8
{
type
Assoc
=
[
u8
;
_
];
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for associated types
}
impl
AssocTy
for
i16
{
type
Assoc
=
Bar
<
i32
,
_
>
;
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for associated types
}
impl
AssocTy
for
i32
{
type
Assoc
=
Bar
<
_
,
_
>
;
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for associated types
}
src/test/ui/const-generics/generic_arg_infer/in-signature.stderr
0 → 100644
浏览文件 @
b2d8f0c7
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/in-signature.rs:7:21
|
LL | fn arr_fn() -> [u8; _] {
| -----^-
| | |
| | not allowed in type signatures
| help: replace with the correct return type: `[u8; 3]`
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/in-signature.rs:12:24
|
LL | fn ty_fn() -> Bar<i32, _> {
| ---------^-
| | |
| | not allowed in type signatures
| help: replace with the correct return type: `Bar<i32, 3_usize>`
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/in-signature.rs:17:25
|
LL | fn ty_fn_mixed() -> Bar<_, _> {
| ----^--^-
| | | |
| | | not allowed in type signatures
| | not allowed in type signatures
| help: replace with the correct return type: `Bar<i32, 3_usize>`
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/in-signature.rs:22:15
|
LL | const ARR_CT: [u8; _] = [0; 3];
| ^^^^^^^ not allowed in type signatures
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
--> $DIR/in-signature.rs:24:20
|
LL | static ARR_STATIC: [u8; _] = [0; 3];
| ^^^^^^^ not allowed in type signatures
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/in-signature.rs:26:14
|
LL | const TY_CT: Bar<i32, _> = Bar::<i32, 3>(0);
| ^^^^^^^^^^^
| |
| not allowed in type signatures
| help: replace with the correct type: `Bar<i32, 3_usize>`
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
--> $DIR/in-signature.rs:28:19
|
LL | static TY_STATIC: Bar<i32, _> = Bar::<i32, 3>(0);
| ^^^^^^^^^^^
| |
| not allowed in type signatures
| help: replace with the correct type: `Bar<i32, 3_usize>`
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/in-signature.rs:30:20
|
LL | const TY_CT_MIXED: Bar<_, _> = Bar::<i32, 3>(0);
| ^^^^^^^^^
| |
| not allowed in type signatures
| help: replace with the correct type: `Bar<i32, 3_usize>`
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
--> $DIR/in-signature.rs:32:25
|
LL | static TY_STATIC_MIXED: Bar<_, _> = Bar::<i32, 3>(0);
| ^^^^^^^^^
| |
| not allowed in type signatures
| help: replace with the correct type: `Bar<i32, 3_usize>`
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/in-signature.rs:35:21
|
LL | const ARR: [u8; _];
| ^ not allowed in type signatures
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/in-signature.rs:39:25
|
LL | const ARR: Bar<i32, _>;
| ^ not allowed in type signatures
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/in-signature.rs:43:20
|
LL | const ARR: Bar<_, _>;
| ^ ^ not allowed in type signatures
| |
| not allowed in type signatures
error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated types
--> $DIR/in-signature.rs:51:23
|
LL | type Assoc = [u8; _];
| ^ not allowed in type signatures
error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated types
--> $DIR/in-signature.rs:55:27
|
LL | type Assoc = Bar<i32, _>;
| ^ not allowed in type signatures
error[E0121]: the placeholder `_` is not allowed within types on item signatures for associated types
--> $DIR/in-signature.rs:59:22
|
LL | type Assoc = Bar<_, _>;
| ^ ^ not allowed in type signatures
| |
| not allowed in type signatures
error: aborting due to 15 previous errors
For more information about this error, try `rustc --explain E0121`.
src/test/ui/did_you_mean/bad-assoc-ty.rs
浏览文件 @
b2d8f0c7
...
...
@@ -16,7 +16,7 @@
type
E
=
_
::
AssocTy
;
//~^ ERROR missing angle brackets in associated item path
//~| ERROR the
type
placeholder `_` is not allowed within types on item signatures for type aliases
//~| ERROR the placeholder `_` is not allowed within types on item signatures for type aliases
type
F
=
&
'static
(
u8
)::
AssocTy
;
//~^ ERROR missing angle brackets in associated item path
...
...
@@ -49,37 +49,37 @@
trait
K
<
A
,
B
>
{}
fn
foo
<
X
:
K
<
_
,
_
>>
(
x
:
X
)
{}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
bar
<
F
>
(
_
:
F
)
where
F
:
Fn
()
->
_
{}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
baz
<
F
:
Fn
()
->
_
>
(
_
:
F
)
{}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
struct
L
<
F
>
(
F
)
where
F
:
Fn
()
->
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for structs
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for structs
struct
M
<
F
>
where
F
:
Fn
()
->
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for structs
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for structs
a
:
F
,
}
enum
N
<
F
>
where
F
:
Fn
()
->
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for enums
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for enums
Foo
(
F
),
}
union
O
<
F
>
where
F
:
Fn
()
->
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for unions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for unions
foo
:
F
,
}
trait
P
<
F
>
where
F
:
Fn
()
->
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for traits
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for traits
}
trait
Q
{
fn
foo
<
F
>
(
_
:
F
)
where
F
:
Fn
()
->
_
{}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
fn
main
()
{}
src/test/ui/did_you_mean/bad-assoc-ty.stderr
浏览文件 @
b2d8f0c7
...
...
@@ -81,7 +81,7 @@ error[E0223]: ambiguous associated type
LL | type D = (u8, u8)::AssocTy;
| ^^^^^^^^^^^^^^^^^ help: use fully-qualified syntax: `<(u8, u8) as Trait>::AssocTy`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for type aliases
error[E0121]: the placeholder `_` is not allowed within types on item signatures for type aliases
--> $DIR/bad-assoc-ty.rs:17:10
|
LL | type E = _::AssocTy;
...
...
@@ -136,7 +136,7 @@ error[E0223]: ambiguous associated type
LL | type I = ty!()::AssocTy;
| ^^^^^^^^^^^^^^ help: use fully-qualified syntax: `<u8 as Trait>::AssocTy`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/bad-assoc-ty.rs:51:13
|
LL | fn foo<X: K<_, _>>(x: X) {}
...
...
@@ -149,7 +149,7 @@ help: use type parameters instead
LL | fn foo<X: K<T, T>, T>(x: X) {}
| ~ ~ +++
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/bad-assoc-ty.rs:54:34
|
LL | fn bar<F>(_: F) where F: Fn() -> _ {}
...
...
@@ -160,7 +160,7 @@ help: use type parameters instead
LL | fn bar<F, T>(_: F) where F: Fn() -> T {}
| +++ ~
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/bad-assoc-ty.rs:57:19
|
LL | fn baz<F: Fn() -> _>(_: F) {}
...
...
@@ -171,7 +171,7 @@ help: use type parameters instead
LL | fn baz<F: Fn() -> T, T>(_: F) {}
| ~+++
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for structs
error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
--> $DIR/bad-assoc-ty.rs:60:33
|
LL | struct L<F>(F) where F: Fn() -> _;
...
...
@@ -182,7 +182,7 @@ help: use type parameters instead
LL | struct L<F, T>(F) where F: Fn() -> T;
| +++ ~
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for structs
error[E0121]: the placeholder `_` is not allowed within types on item signatures for structs
--> $DIR/bad-assoc-ty.rs:62:30
|
LL | struct M<F> where F: Fn() -> _ {
...
...
@@ -193,7 +193,7 @@ help: use type parameters instead
LL | struct M<F, T> where F: Fn() -> T {
| +++ ~
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for enums
error[E0121]: the placeholder `_` is not allowed within types on item signatures for enums
--> $DIR/bad-assoc-ty.rs:66:28
|
LL | enum N<F> where F: Fn() -> _ {
...
...
@@ -204,7 +204,7 @@ help: use type parameters instead
LL | enum N<F, T> where F: Fn() -> T {
| +++ ~
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for unions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for unions
--> $DIR/bad-assoc-ty.rs:71:29
|
LL | union O<F> where F: Fn() -> _ {
...
...
@@ -215,7 +215,7 @@ help: use type parameters instead
LL | union O<F, T> where F: Fn() -> T {
| +++ ~
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for traits
error[E0121]: the placeholder `_` is not allowed within types on item signatures for traits
--> $DIR/bad-assoc-ty.rs:76:29
|
LL | trait P<F> where F: Fn() -> _ {
...
...
@@ -226,7 +226,7 @@ help: use type parameters instead
LL | trait P<F, T> where F: Fn() -> T {
| +++ ~
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/bad-assoc-ty.rs:81:38
|
LL | fn foo<F>(_: F) where F: Fn() -> _ {}
...
...
src/test/ui/error-codes/E0121.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/E0121.rs:1:13
|
LL | fn foo() -> _ { 5 }
...
...
@@ -7,7 +7,7 @@ LL | fn foo() -> _ { 5 }
| not allowed in type signatures
| help: replace with the correct return type: `i32`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for static variables
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
--> $DIR/E0121.rs:3:13
|
LL | static BAR: _ = "test";
...
...
src/test/ui/fn/issue-80179.rs
浏览文件 @
b2d8f0c7
...
...
@@ -8,7 +8,7 @@ fn returns_i32() -> i32 {
}
fn
returns_fn_ptr
()
->
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types [E0121]
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types [E0121]
//~| NOTE not allowed in type signatures
//~| HELP replace with the correct return type
//~| SUGGESTION fn() -> i32
...
...
@@ -16,7 +16,7 @@ fn returns_fn_ptr() -> _ {
}
fn
returns_closure
()
->
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types [E0121]
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types [E0121]
//~| NOTE not allowed in type signatures
//~| HELP consider using an `Fn`, `FnMut`, or `FnOnce` trait bound
//~| NOTE for more information on `Fn` traits and closure types, see
...
...
src/test/ui/fn/issue-80179.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-80179.rs:10:24
|
LL | fn returns_fn_ptr() -> _ {
...
...
@@ -7,7 +7,7 @@ LL | fn returns_fn_ptr() -> _ {
| not allowed in type signatures
| help: replace with the correct return type: `fn() -> i32`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-80179.rs:18:25
|
LL | fn returns_closure() -> _ {
...
...
src/test/ui/issues/issue-69396-const-no-type-in-macro.rs
浏览文件 @
b2d8f0c7
...
...
@@ -4,7 +4,7 @@
const
A
=
"A"
.
$fn
();
//~^ ERROR the name `A` is defined multiple times
//~| ERROR missing type for `const` item
//~| ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~| ERROR the placeholder `_` is not allowed within types on item signatures for constants
)
*
}
}
...
...
src/test/ui/issues/issue-69396-const-no-type-in-macro.stderr
浏览文件 @
b2d8f0c7
...
...
@@ -30,7 +30,7 @@ LL | | }
|
= note: this error originates in the macro `suite` (in Nightly builds, run with -Z macro-backtrace for more info)
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constants
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/issue-69396-const-no-type-in-macro.rs:4:19
|
LL | const A = "A".$fn();
...
...
src/test/ui/self/self-infer.rs
浏览文件 @
b2d8f0c7
struct
S
;
impl
S
{
fn
f
(
self
:
_
)
{}
//~ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
fn
g
(
self
:
&
_
)
{}
//~ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
fn
f
(
self
:
_
)
{}
//~ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
g
(
self
:
&
_
)
{}
//~ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
fn
main
()
{}
src/test/ui/self/self-infer.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/self-infer.rs:4:16
|
LL | fn f(self: _) {}
...
...
@@ -9,7 +9,7 @@ help: use type parameters instead
LL | fn f<T>(self: T) {}
| +++ ~
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/self-infer.rs:5:17
|
LL | fn g(self: &_) {}
...
...
src/test/ui/suggestions/unnamable-types.rs
浏览文件 @
b2d8f0c7
...
...
@@ -8,14 +8,14 @@
//~| HELP: provide a type for the constant
static
B
:
_
=
"abc"
;
//~^ ERROR: the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR: the placeholder `_` is not allowed within types on item signatures for static variables
//~| NOTE: not allowed in type signatures
//~| HELP: replace with the correct type
// FIXME: this should also suggest a function pointer, as the closure is non-capturing
const
C
:
_
=
||
42
;
//~^ ERROR: the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR: the placeholder `_` is not allowed within types on item signatures for constants
//~| NOTE: not allowed in type signatures
//~| NOTE: however, the inferred type
...
...
src/test/ui/suggestions/unnamable-types.stderr
浏览文件 @
b2d8f0c7
...
...
@@ -4,7 +4,7 @@ error: missing type for `const` item
LL | const A = 5;
| ^ help: provide a type for the constant: `A: i32`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for static variables
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
--> $DIR/unnamable-types.rs:10:11
|
LL | static B: _ = "abc";
...
...
@@ -13,7 +13,7 @@ LL | static B: _ = "abc";
| not allowed in type signatures
| help: replace with the correct type: `&str`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constants
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/unnamable-types.rs:17:10
|
LL | const C: _ = || 42;
...
...
src/test/ui/type-alias-impl-trait/issue-77179.rs
浏览文件 @
b2d8f0c7
...
...
@@ -5,7 +5,7 @@
type
Pointer
<
T
>
=
impl
std
::
ops
::
Deref
<
Target
=
T
>
;
fn
test
()
->
Pointer
<
_
>
{
//~^ ERROR: the
type
placeholder `_` is not allowed within types
//~^ ERROR: the placeholder `_` is not allowed within types
Box
::
new
(
1
)
}
...
...
src/test/ui/type-alias-impl-trait/issue-77179.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-77179.rs:7:22
|
LL | fn test() -> Pointer<_> {
...
...
src/test/ui/typeck/issue-74086.rs
浏览文件 @
b2d8f0c7
fn
main
()
{
static
BUG
:
fn
(
_
)
->
u8
=
|
_
|
8
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions [E0121]
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions [E0121]
}
src/test/ui/typeck/issue-74086.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/issue-74086.rs:2:20
|
LL | static BUG: fn(_) -> u8 = |_| 8;
...
...
src/test/ui/typeck/issue-75883.rs
浏览文件 @
b2d8f0c7
...
...
@@ -5,7 +5,7 @@ pub struct UI {}
impl
UI
{
pub
fn
run
()
->
Result
<
_
>
{
//~^ ERROR: this enum takes 2 generic arguments but 1 generic argument was supplied
//~| ERROR: the
type
placeholder `_` is not allowed within types on item signatures for return types
//~| ERROR: the placeholder `_` is not allowed within types on item signatures for return types
let
mut
ui
=
UI
{};
ui
.interact
();
...
...
@@ -14,7 +14,7 @@ pub fn run() -> Result<_> {
pub
fn
interact
(
&
mut
self
)
->
Result
<
_
>
{
//~^ ERROR: this enum takes 2 generic arguments but 1 generic argument was supplied
//~| ERROR: the
type
placeholder `_` is not allowed within types on item signatures for return types
//~| ERROR: the placeholder `_` is not allowed within types on item signatures for return types
unimplemented!
();
}
}
...
...
src/test/ui/typeck/issue-75883.stderr
浏览文件 @
b2d8f0c7
...
...
@@ -34,13 +34,13 @@ help: add missing generic argument
LL | pub fn interact(&mut self) -> Result<_, E> {
| +++
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-75883.rs:15:42
|
LL | pub fn interact(&mut self) -> Result<_> {
| ^ not allowed in type signatures
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-75883.rs:6:28
|
LL | pub fn run() -> Result<_> {
...
...
src/test/ui/typeck/issue-75889.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constant items
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constant items
--> $DIR/issue-75889.rs:3:24
|
LL | const FOO: dyn Fn() -> _ = "";
| ^ not allowed in type signatures
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for static items
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static items
--> $DIR/issue-75889.rs:4:25
|
LL | static BOO: dyn Fn() -> _ = "";
...
...
src/test/ui/typeck/issue-80779.rs
浏览文件 @
b2d8f0c7
...
...
@@ -3,11 +3,11 @@
pub
struct
T
<
'a
>
(
&
'a
str
);
pub
fn
f
<
'a
>
(
val
:
T
<
'a
>
)
->
_
{
//~^ ERROR: the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR: the placeholder `_` is not allowed within types on item signatures for return types
g
(
val
)
}
pub
fn
g
(
_
:
T
<
'static
>
)
->
_
{}
//~^ ERROR: the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR: the placeholder `_` is not allowed within types on item signatures for return types
fn
main
()
{}
src/test/ui/typeck/issue-80779.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-80779.rs:10:28
|
LL | pub fn g(_: T<'static>) -> _ {}
...
...
@@ -7,7 +7,7 @@ LL | pub fn g(_: T<'static>) -> _ {}
| not allowed in type signatures
| help: replace with the correct return type: `()`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-80779.rs:5:29
|
LL | pub fn f<'a>(val: T<'a>) -> _ {
...
...
src/test/ui/typeck/issue-81885.rs
浏览文件 @
b2d8f0c7
const
TEST4
:
fn
()
->
_
=
42
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
main
()
{
const
TEST5
:
fn
()
->
_
=
42
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
src/test/ui/typeck/issue-81885.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/issue-81885.rs:1:22
|
LL | const TEST4: fn() -> _ = 42;
| ^ not allowed in type signatures
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/issue-81885.rs:5:26
|
LL | const TEST5: fn() -> _ = 42;
...
...
src/test/ui/typeck/issue-83621-placeholder-static-in-extern.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for static variables
error[E0121]: the placeholder `_` is not allowed within types on item signatures for static variables
--> $DIR/issue-83621-placeholder-static-in-extern.rs:4:15
|
LL | static x: _;
...
...
src/test/ui/typeck/issue-91450-inner-ty-error.rs
浏览文件 @
b2d8f0c7
...
...
@@ -2,6 +2,6 @@
// This test ensures that the compiler does not suggest `Foo<[type error]>` in diagnostic messages.
fn
foo
()
->
Option
<
_
>
{}
//~ ERROR: [E0308]
//~^ ERROR: the
type
placeholder `_` is not allowed
//~^ ERROR: the placeholder `_` is not allowed
fn
main
()
{}
src/test/ui/typeck/issue-91450-inner-ty-error.stderr
浏览文件 @
b2d8f0c7
...
...
@@ -9,7 +9,7 @@ LL | fn foo() -> Option<_> {}
= note: expected enum `Option<_>`
found unit type `()`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/issue-91450-inner-ty-error.rs:4:20
|
LL | fn foo() -> Option<_> {}
...
...
src/test/ui/typeck/type-placeholder-fn-in-const.rs
浏览文件 @
b2d8f0c7
...
...
@@ -2,13 +2,13 @@
trait
Test
{
const
TEST
:
fn
()
->
_
;
//~^ ERROR: the
type
placeholder `_` is not allowed within types on item signatures for functions [E0121]
//~| ERROR: the
type
placeholder `_` is not allowed within types on item signatures for constants [E0121]
//~^ ERROR: the placeholder `_` is not allowed within types on item signatures for functions [E0121]
//~| ERROR: the placeholder `_` is not allowed within types on item signatures for constants [E0121]
}
impl
Test
for
MyStruct
{
const
TEST
:
fn
()
->
_
=
42
;
//~^ ERROR: the
type
placeholder `_` is not allowed within types on item signatures for functions [E0121]
//~^ ERROR: the placeholder `_` is not allowed within types on item signatures for functions [E0121]
}
fn
main
()
{}
src/test/ui/typeck/type-placeholder-fn-in-const.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/type-placeholder-fn-in-const.rs:4:25
|
LL | const TEST: fn() -> _;
| ^ not allowed in type signatures
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constants
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/type-placeholder-fn-in-const.rs:4:25
|
LL | const TEST: fn() -> _;
| ^ not allowed in type signatures
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/type-placeholder-fn-in-const.rs:10:25
|
LL | const TEST: fn() -> _ = 42;
...
...
src/test/ui/typeck/typeck_type_placeholder_item.rs
浏览文件 @
b2d8f0c7
...
...
@@ -5,67 +5,67 @@
// inference by using the `_` type placeholder.
fn
test
()
->
_
{
5
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
fn
test2
()
->
(
_
,
_
)
{
(
5
,
5
)
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
static
TEST3
:
_
=
"test"
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
static
TEST4
:
_
=
145
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
static
TEST5
:
(
_
,
_
)
=
(
1
,
2
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
fn
test6
(
_
:
_
)
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
test6_b
<
T
>
(
_
:
_
,
_
:
T
)
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
test6_c
<
T
,
K
,
L
,
A
,
B
>
(
_
:
_
,
_
:
(
T
,
K
,
L
,
A
,
B
))
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
test7
(
x
:
_
)
{
let
_
x
:
usize
=
x
;
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
test8
(
_
f
:
fn
()
->
_
)
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
//~^^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
struct
Test9
;
impl
Test9
{
fn
test9
(
&
self
)
->
_
{
()
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
fn
test10
(
&
self
,
_
x
:
_
)
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
fn
test11
(
x
:
&
usize
)
->
&
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
&
x
}
unsafe
fn
test12
(
x
:
*
const
usize
)
->
*
const
*
const
_
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
&
x
}
impl
Clone
for
Test9
{
fn
clone
(
&
self
)
->
_
{
Test9
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
fn
clone_from
(
&
mut
self
,
other
:
_
)
{
*
self
=
Test9
;
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
struct
Test10
{
a
:
_
,
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for structs
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for structs
b
:
(
_
,
_
),
}
...
...
@@ -73,94 +73,94 @@ pub fn main() {
static
A
=
42
;
//~^ ERROR missing type for `static` item
static
B
:
_
=
42
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
static
C
:
Option
<
_
>
=
Some
(
42
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
fn
fn_test
()
->
_
{
5
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
fn
fn_test2
()
->
(
_
,
_
)
{
(
5
,
5
)
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
static
FN_TEST3
:
_
=
"test"
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
static
FN_TEST4
:
_
=
145
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
static
FN_TEST5
:
(
_
,
_
)
=
(
1
,
2
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for static variables
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for static variables
fn
fn_test6
(
_
:
_
)
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
fn_test7
(
x
:
_
)
{
let
_
x
:
usize
=
x
;
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
fn_test8
(
_
f
:
fn
()
->
_
)
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
//~^^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
struct
FnTest9
;
impl
FnTest9
{
fn
fn_test9
(
&
self
)
->
_
{
()
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
fn
fn_test10
(
&
self
,
_
x
:
_
)
{
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
impl
Clone
for
FnTest9
{
fn
clone
(
&
self
)
->
_
{
FnTest9
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
fn
clone_from
(
&
mut
self
,
other
:
_
)
{
*
self
=
FnTest9
;
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
struct
FnTest10
{
a
:
_
,
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for structs
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for structs
b
:
(
_
,
_
),
}
fn
fn_test11
(
_
:
_
)
->
(
_
,
_
)
{
panic!
()
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
//~| ERROR type annotations needed
fn
fn_test12
(
x
:
i32
)
->
(
_
,
_
)
{
(
x
,
x
)
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
fn
fn_test13
(
x
:
_
)
->
(
i32
,
_
)
{
(
x
,
x
)
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
}
trait
T
{
fn
method_test1
(
&
self
,
x
:
_
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
method_test2
(
&
self
,
x
:
_
)
->
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
method_test3
(
&
self
)
->
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
assoc_fn_test1
(
x
:
_
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
assoc_fn_test2
(
x
:
_
)
->
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
fn
assoc_fn_test3
()
->
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
}
struct
BadStruct
<
_
>
(
_
);
//~^ ERROR expected identifier, found reserved identifier `_`
//~| ERROR the
type
placeholder `_` is not allowed within types on item signatures for structs
//~| ERROR the placeholder `_` is not allowed within types on item signatures for structs
trait
BadTrait
<
_
>
{}
//~^ ERROR expected identifier, found reserved identifier `_`
impl
BadTrait
<
_
>
for
BadStruct
<
_
>
{}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for implementations
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for implementations
fn
impl_trait
()
->
impl
BadTrait
<
_
>
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for opaque types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for opaque types
unimplemented!
()
}
...
...
@@ -168,19 +168,19 @@ fn impl_trait() -> impl BadTrait<_> {
//~^ ERROR expected identifier, found reserved identifier `_`
//~| ERROR expected identifier, found reserved identifier `_`
//~| ERROR the name `_` is already used
//~| ERROR the
type
placeholder `_` is not allowed within types on item signatures for structs
//~| ERROR the placeholder `_` is not allowed within types on item signatures for structs
struct
BadStruct2
<
_
,
T
>
(
_
,
T
);
//~^ ERROR expected identifier, found reserved identifier `_`
//~| ERROR the
type
placeholder `_` is not allowed within types on item signatures for structs
//~| ERROR the placeholder `_` is not allowed within types on item signatures for structs
type
X
=
Box
<
_
>
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for type aliases
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for type aliases
struct
Struct
;
trait
Trait
<
T
>
{}
impl
Trait
<
usize
>
for
Struct
{}
type
Y
=
impl
Trait
<
_
>
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for opaque types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for opaque types
fn
foo
()
->
Y
{
Struct
}
...
...
@@ -188,25 +188,25 @@ fn foo() -> Y {
trait
Qux
{
type
A
;
type
B
=
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for associated types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for associated types
const
C
:
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
const
D
:
_
=
42
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
// type E: _; // FIXME: make the parser propagate the existence of `B`
type
F
:
std
::
ops
::
Fn
(
_
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for associated types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for associated types
}
impl
Qux
for
Struct
{
type
A
=
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for associated types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for associated types
type
B
=
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for associated types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for associated types
const
C
:
_
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
//~| ERROR associated constant in `impl` without body
const
D
:
_
=
42
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
}
fn
map
<
T
>
(
_
:
fn
()
->
Option
<&
'static
T
>
)
->
Option
<
T
>
{
...
...
@@ -214,9 +214,9 @@ fn map<T>(_: fn() -> Option<&'static T>) -> Option<T> {
}
fn
value
()
->
Option
<&
'static
_
>
{
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
Option
::
<&
'static
u8
>
::
None
}
const
_
:
Option
<
_
>
=
map
(
value
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
src/test/ui/typeck/typeck_type_placeholder_item.stderr
浏览文件 @
b2d8f0c7
此差异已折叠。
点击以展开。
src/test/ui/typeck/typeck_type_placeholder_item_help.rs
浏览文件 @
b2d8f0c7
...
...
@@ -2,27 +2,27 @@
// using the `_` type placeholder.
fn
test1
()
->
_
{
Some
(
42
)
}
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for return types
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for return types
const
TEST2
:
_
=
42u32
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
const
TEST3
:
_
=
Some
(
42
);
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
const
TEST4
:
fn
()
->
_
=
42
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for functions
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for functions
trait
Test5
{
const
TEST5
:
_
=
42
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
}
struct
Test6
;
impl
Test6
{
const
TEST6
:
_
=
13
;
//~^ ERROR the
type
placeholder `_` is not allowed within types on item signatures for constants
//~^ ERROR the placeholder `_` is not allowed within types on item signatures for constants
}
pub
fn
main
()
{
...
...
src/test/ui/typeck/typeck_type_placeholder_item_help.stderr
浏览文件 @
b2d8f0c7
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for return types
error[E0121]: the placeholder `_` is not allowed within types on item signatures for return types
--> $DIR/typeck_type_placeholder_item_help.rs:4:15
|
LL | fn test1() -> _ { Some(42) }
...
...
@@ -7,7 +7,7 @@ LL | fn test1() -> _ { Some(42) }
| not allowed in type signatures
| help: replace with the correct return type: `Option<i32>`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constants
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/typeck_type_placeholder_item_help.rs:7:14
|
LL | const TEST2: _ = 42u32;
...
...
@@ -16,7 +16,7 @@ LL | const TEST2: _ = 42u32;
| not allowed in type signatures
| help: replace with the correct type: `u32`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constants
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/typeck_type_placeholder_item_help.rs:10:14
|
LL | const TEST3: _ = Some(42);
...
...
@@ -25,13 +25,13 @@ LL | const TEST3: _ = Some(42);
| not allowed in type signatures
| help: replace with the correct type: `Option<i32>`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for functions
error[E0121]: the placeholder `_` is not allowed within types on item signatures for functions
--> $DIR/typeck_type_placeholder_item_help.rs:13:22
|
LL | const TEST4: fn() -> _ = 42;
| ^ not allowed in type signatures
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constants
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/typeck_type_placeholder_item_help.rs:17:18
|
LL | const TEST5: _ = 42;
...
...
@@ -40,7 +40,7 @@ LL | const TEST5: _ = 42;
| not allowed in type signatures
| help: replace with the correct type: `i32`
error[E0121]: the
type
placeholder `_` is not allowed within types on item signatures for constants
error[E0121]: the placeholder `_` is not allowed within types on item signatures for constants
--> $DIR/typeck_type_placeholder_item_help.rs:24:18
|
LL | const TEST6: _ = 13;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录