Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
e02716e6
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,发现更多精彩内容 >>
提交
e02716e6
编写于
5月 11, 2013
作者:
T
Tom Lee
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Reexport static trait methods on traits in the same module.
上级
ebdb0dee
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
16 addition
and
2 deletion
+16
-2
src/librustc/metadata/encoder.rs
src/librustc/metadata/encoder.rs
+4
-2
src/test/auxiliary/mod_trait_with_static_methods_lib.rs
src/test/auxiliary/mod_trait_with_static_methods_lib.rs
+10
-0
src/test/run-pass/trait_with_static_methods_cross_crate.rs
src/test/run-pass/trait_with_static_methods_cross_crate.rs
+2
-0
未找到文件。
src/librustc/metadata/encoder.rs
浏览文件 @
e02716e6
...
...
@@ -386,8 +386,10 @@ fn encode_reexported_static_methods(ecx: @EncodeContext,
match
ecx
.tcx.trait_methods_cache
.find
(
&
exp
.def_id
)
{
Some
(
methods
)
=>
{
match
ecx
.tcx.items
.find
(
&
exp
.def_id.node
)
{
Some
(
&
ast_map
::
node_item
(
_
,
path
))
=>
{
if
mod_path
!=
*
path
{
Some
(
&
ast_map
::
node_item
(
item
,
path
))
=>
{
let
interner
=
ecx
.tcx.sess.parse_sess.interner
;
let
original_name
=
ecx
.tcx.sess
.str_of
(
item
.ident
);
if
mod_path
!=
*
path
||
*
exp
.name
!=
*
original_name
{
for
methods
.each
|
&
m
|
{
if
m
.explicit_self
==
ast
::
sty_static
{
encode_reexported_static_method
(
ecx
,
...
...
src/test/auxiliary/mod_trait_with_static_methods_lib.rs
浏览文件 @
e02716e6
...
...
@@ -9,6 +9,15 @@
// except according to those terms.
pub
use
sub_foo
::
Foo
;
pub
use
Baz
=
self
::
Bar
;
pub
trait
Bar
{
pub
fn
bar
()
->
Self
;
}
impl
Bar
for
int
{
pub
fn
bar
()
->
int
{
84
}
}
pub
mod
sub_foo
{
pub
trait
Foo
{
...
...
@@ -18,4 +27,5 @@ pub trait Foo {
impl
Foo
for
int
{
pub
fn
foo
()
->
int
{
42
}
}
}
src/test/run-pass/trait_with_static_methods_cross_crate.rs
浏览文件 @
e02716e6
...
...
@@ -13,7 +13,9 @@
extern
mod
mod_trait_with_static_methods_lib
;
use
mod_trait_with_static_methods_lib
::
Foo
;
use
mod_trait_with_static_methods_lib
::
Baz
;
pub
fn
main
()
{
assert_eq!
(
42
,
Foo
::
foo
());
assert_eq!
(
84
,
Baz
::
bar
());
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录