Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
6da55efa
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,发现更多精彩内容 >>
提交
6da55efa
编写于
1月 18, 2012
作者:
B
Brian Anderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rustdoc: Add argument types to the doc
上级
f3fa7c15
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
63 addition
and
19 deletion
+63
-19
src/rustdoc/doc.rs
src/rustdoc/doc.rs
+2
-1
src/rustdoc/extract.rs
src/rustdoc/extract.rs
+2
-1
src/rustdoc/tystr_pass.rs
src/rustdoc/tystr_pass.rs
+59
-17
未找到文件。
src/rustdoc/doc.rs
浏览文件 @
6da55efa
...
...
@@ -22,7 +22,8 @@
};
type
argdoc
=
~
{
name
:
str
name
:
str
,
ty
:
option
<
str
>
};
type
retdoc
=
{
...
...
src/rustdoc/extract.rs
浏览文件 @
6da55efa
...
...
@@ -95,7 +95,8 @@ fn argdocs_from_args(args: [ast::arg]) -> [doc::argdoc] {
fn
argdoc_from_arg
(
arg
:
ast
::
arg
)
->
doc
::
argdoc
{
~
{
name
:
arg
.ident
name
:
arg
.ident
,
ty
:
none
}
}
...
...
src/rustdoc/tystr_pass.rs
浏览文件 @
6da55efa
...
...
@@ -33,30 +33,20 @@ fn fold_fn(
)
->
doc
::
fndoc
{
let
srv
=
fold
.ctxt
;
let
ret_ty
=
get_ret_ty
(
srv
,
doc
.id
);
~
{
return
:
merge_ret_ty
(
doc
.return
,
ret_ty
)
return
:
merge_ret_ty
(
srv
,
doc
.id
,
doc
.return
),
args
:
merge_arg_tys
(
srv
,
doc
.id
,
doc
.args
)
with
*
doc
}
}
fn
get_ret_ty
(
srv
:
astsrv
::
srv
,
id
:
doc
::
ast_id
)
->
str
{
astsrv
::
exec
(
srv
)
{|
ctxt
|
alt
ctxt
.map
.get
(
id
)
{
ast_map
::
node_item
(
@
{
node
:
ast
::
item_fn
(
decl
,
_
,
_
),
_
})
{
pprust
::
ty_to_str
(
decl
.output
)
}
}
}
}
fn
merge_ret_ty
(
doc
:
option
<
doc
::
retdoc
>
,
tystr
:
str
srv
:
astsrv
::
srv
,
fn_id
:
doc
::
ast_id
,
doc
:
option
<
doc
::
retdoc
>
)
->
option
<
doc
::
retdoc
>
{
let
ty
=
get_ret_ty
(
srv
,
fn_id
);
alt
doc
{
some
(
doc
)
{
fail
"unimplemented"
;
...
...
@@ -64,12 +54,24 @@ fn merge_ret_ty(
none
.
{
some
({
desc
:
none
,
ty
:
some
(
ty
str
)
ty
:
some
(
ty
)
})
}
}
}
fn
get_ret_ty
(
srv
:
astsrv
::
srv
,
id
:
doc
::
ast_id
)
->
str
{
astsrv
::
exec
(
srv
)
{|
ctxt
|
alt
ctxt
.map
.get
(
id
)
{
ast_map
::
node_item
(
@
{
node
:
ast
::
item_fn
(
decl
,
_
,
_
),
_
})
{
pprust
::
ty_to_str
(
decl
.output
)
}
}
}
}
#[test]
fn
should_add_fn_ret_types
()
{
let
source
=
"fn a() -> int { }"
;
...
...
@@ -79,3 +81,43 @@ fn should_add_fn_ret_types() {
assert
option
::
get
(
doc
.topmod.fns
[
0
]
.return
)
.ty
==
some
(
"int"
);
}
fn
merge_arg_tys
(
srv
:
astsrv
::
srv
,
fn_id
:
doc
::
ast_id
,
args
:
[
doc
::
argdoc
]
)
->
[
doc
::
argdoc
]
{
let
tys
=
get_arg_tys
(
srv
,
fn_id
);
vec
::
map2
(
args
,
tys
)
{|
arg
,
ty
|
// Sanity check that we're talking about the same args
assert
arg
.name
==
tuple
::
first
(
ty
);
~
{
ty
:
some
(
tuple
::
second
(
ty
))
with
*
arg
}
}
}
fn
get_arg_tys
(
srv
:
astsrv
::
srv
,
fn_id
:
doc
::
ast_id
)
->
[(
str
,
str
)]
{
astsrv
::
exec
(
srv
)
{|
ctxt
|
alt
ctxt
.map
.get
(
fn_id
)
{
ast_map
::
node_item
(
@
{
node
:
ast
::
item_fn
(
decl
,
_
,
_
),
_
})
{
vec
::
map
(
decl
.inputs
)
{|
arg
|
(
arg
.ident
,
pprust
::
ty_to_str
(
arg
.ty
))
}
}
}
}
}
#[test]
fn
should_add_arg_types
()
{
let
source
=
"fn a(b: int, c: bool) { }"
;
let
srv
=
astsrv
::
mk_srv_from_str
(
source
);
let
doc
=
extract
::
from_srv
(
srv
,
""
);
let
doc
=
run
(
srv
,
doc
);
let
fn_
=
doc
.topmod.fns
[
0
];
assert
fn_
.args
[
0
]
.ty
==
some
(
"int"
);
assert
fn_
.args
[
1
]
.ty
==
some
(
"bool"
);
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录