Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
318fb9a4
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,发现更多精彩内容 >>
提交
318fb9a4
编写于
11月 24, 2019
作者:
T
Timo Freiberg
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fixup! Add negative tests where the diagnostic message would be wrong
上级
dffdf378
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
103 addition
and
14 deletion
+103
-14
src/test/ui/traits/auxiliary/crate_a1.rs
src/test/ui/traits/auxiliary/crate_a1.rs
+7
-3
src/test/ui/traits/auxiliary/crate_a2.rs
src/test/ui/traits/auxiliary/crate_a2.rs
+9
-1
src/test/ui/traits/trait-bounds-same-crate-name.rs
src/test/ui/traits/trait-bounds-same-crate-name.rs
+37
-3
src/test/ui/traits/trait-bounds-same-crate-name.stderr
src/test/ui/traits/trait-bounds-same-crate-name.stderr
+50
-7
未找到文件。
src/test/ui/traits/auxiliary/crate_a1.rs
浏览文件 @
318fb9a4
pub
struct
Foo
;
pub
trait
Bar
{}
pub
trait
Bar
{}
pub
fn
try_foo
(
x
:
impl
Bar
)
{}
pub
fn
try_foo
(
x
:
impl
Bar
){}
pub
struct
ImplementsTraitForUsize
<
T
>
{
_
marker
:
std
::
marker
::
PhantomData
<
T
>
,
}
impl
Bar
for
ImplementsTraitForUsize
<
usize
>
{}
src/test/ui/traits/auxiliary/crate_a2.rs
浏览文件 @
318fb9a4
pub
struct
Foo
;
pub
struct
Foo
;
pub
trait
Bar
{}
pub
trait
Bar
{}
impl
Bar
for
Foo
{}
impl
Bar
for
Foo
{}
pub
struct
DoesNotImplementTrait
;
pub
struct
ImplementsWrongTraitConditionally
<
T
>
{
_
marker
:
std
::
marker
::
PhantomData
<
T
>
,
}
impl
Bar
for
ImplementsWrongTraitConditionally
<
isize
>
{}
src/test/ui/traits/trait-bounds-same-crate-name.rs
浏览文件 @
318fb9a4
...
@@ -6,16 +6,50 @@
...
@@ -6,16 +6,50 @@
// is not met but the struct implements a trait with the same path.
// is not met but the struct implements a trait with the same path.
fn
main
()
{
fn
main
()
{
let
foo
2
=
{
let
foo
=
{
extern
crate
crate_a2
as
a
;
extern
crate
crate_a2
as
a
;
a
::
Foo
a
::
Foo
};
};
let
implements_no_traits
=
{
extern
crate
crate_a2
as
a
;
a
::
DoesNotImplementTrait
};
let
other_variant_implements_mismatched_trait
=
{
extern
crate
crate_a2
as
a
;
a
::
ImplementsWrongTraitConditionally
{
_
marker
:
std
::
marker
::
PhantomData
::
<
isize
>
}
};
let
other_variant_implements_correct_trait
=
{
extern
crate
crate_a1
as
a
;
a
::
ImplementsTraitForUsize
{
_
marker
:
std
::
marker
::
PhantomData
::
<
isize
>
}
};
{
{
extern
crate
crate_a1
as
a
;
extern
crate
crate_a1
as
a
;
a
::
try_foo
(
foo
2
);
a
::
try_foo
(
foo
);
//~^ ERROR E0277
//~^ ERROR E0277
//~|
T
rait impl with same name found
//~|
t
rait impl with same name found
//~| Perhaps two different versions of crate `crate_a2`
//~| Perhaps two different versions of crate `crate_a2`
// We don't want to see the "version mismatch" help message here
// because `implements_no_traits` has no impl for `Foo`
a
::
try_foo
(
implements_no_traits
);
//~^ ERROR E0277
// We don't want to see the "version mismatch" help message here
// because `other_variant_implements_mismatched_trait`
// does not have an impl for its `<isize>` variant,
// only for its `<usize>` variant.
a
::
try_foo
(
other_variant_implements_mismatched_trait
);
//~^ ERROR E0277
// We don't want to see the "version mismatch" help message here
// because `ImplementsTraitForUsize` only has
// impls for the correct trait where the path is not misleading.
a
::
try_foo
(
other_variant_implements_correct_trait
);
//~^ ERROR E0277
//~| the following implementations were found:
}
}
}
}
src/test/ui/traits/trait-bounds-same-crate-name.stderr
浏览文件 @
318fb9a4
error[E0277]: the trait bound `main::a::Foo: main::a::Bar` is not satisfied
error[E0277]: the trait bound `main::a::Foo: main::a::Bar` is not satisfied
--> $DIR/trait-bounds-same-crate-name.rs:
16
:20
--> $DIR/trait-bounds-same-crate-name.rs:
31
:20
|
|
LL | a::try_foo(foo
2
);
LL | a::try_foo(foo);
| ^^^
^
the trait `main::a::Bar` is not implemented for `main::a::Foo`
| ^^^ the trait `main::a::Bar` is not implemented for `main::a::Foo`
|
|
::: $DIR/auxiliary/crate_a1.rs:
5
:24
::: $DIR/auxiliary/crate_a1.rs:
3
:24
|
|
LL | pub fn try_foo(x: impl Bar){}
LL | pub fn try_foo(x: impl Bar)
{}
| --- required by this bound in `main::a::try_foo`
| --- required by this bound in `main::a::try_foo`
|
|
help:
T
rait impl with same name found
help:
t
rait impl with same name found
--> $DIR/auxiliary/crate_a2.rs:5:1
--> $DIR/auxiliary/crate_a2.rs:5:1
|
|
LL | impl Bar for Foo {}
LL | impl Bar for Foo {}
| ^^^^^^^^^^^^^^^^^^^
| ^^^^^^^^^^^^^^^^^^^
= note: Perhaps two different versions of crate `crate_a2` are being used?
= note: Perhaps two different versions of crate `crate_a2` are being used?
error: aborting due to previous error
error[E0277]: the trait bound `main::a::DoesNotImplementTrait: main::a::Bar` is not satisfied
--> $DIR/trait-bounds-same-crate-name.rs:38:20
|
LL | a::try_foo(implements_no_traits);
| ^^^^^^^^^^^^^^^^^^^^ the trait `main::a::Bar` is not implemented for `main::a::DoesNotImplementTrait`
|
::: $DIR/auxiliary/crate_a1.rs:3:24
|
LL | pub fn try_foo(x: impl Bar) {}
| --- required by this bound in `main::a::try_foo`
error[E0277]: the trait bound `main::a::ImplementsWrongTraitConditionally<isize>: main::a::Bar` is not satisfied
--> $DIR/trait-bounds-same-crate-name.rs:45:20
|
LL | a::try_foo(other_variant_implements_mismatched_trait);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `main::a::Bar` is not implemented for `main::a::ImplementsWrongTraitConditionally<isize>`
|
::: $DIR/auxiliary/crate_a1.rs:3:24
|
LL | pub fn try_foo(x: impl Bar) {}
| --- required by this bound in `main::a::try_foo`
|
help: trait impl with same name found
--> $DIR/auxiliary/crate_a2.rs:13:1
|
LL | impl Bar for ImplementsWrongTraitConditionally<isize> {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: Perhaps two different versions of crate `crate_a2` are being used?
error[E0277]: the trait bound `main::a::ImplementsTraitForUsize<isize>: main::a::Bar` is not satisfied
--> $DIR/trait-bounds-same-crate-name.rs:51:20
|
LL | a::try_foo(other_variant_implements_correct_trait);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `main::a::Bar` is not implemented for `main::a::ImplementsTraitForUsize<isize>`
|
::: $DIR/auxiliary/crate_a1.rs:3:24
|
LL | pub fn try_foo(x: impl Bar) {}
| --- required by this bound in `main::a::try_foo`
|
= help: the following implementations were found:
<main::a::ImplementsTraitForUsize<usize> as main::a::Bar>
error: aborting due to 4 previous errors
For more information about this error, try `rustc --explain E0277`.
For more information about this error, try `rustc --explain E0277`.
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录