Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
a6bdaee7
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,发现更多精彩内容 >>
提交
a6bdaee7
编写于
1月 17, 2012
作者:
B
Brian Anderson
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rustdoc: Remove iface. Causing random crashes in resolve?
上级
c1bf17ed
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
52 addition
and
51 deletion
+52
-51
src/rustdoc/astsrv.rs
src/rustdoc/astsrv.rs
+27
-24
src/rustdoc/attr_pass.rs
src/rustdoc/attr_pass.rs
+9
-7
src/rustdoc/extract.rs
src/rustdoc/extract.rs
+3
-5
src/rustdoc/prune_undoc_pass.rs
src/rustdoc/prune_undoc_pass.rs
+2
-2
src/rustdoc/rustdoc.rs
src/rustdoc/rustdoc.rs
+6
-7
src/rustdoc/tystr_pass.rs
src/rustdoc/tystr_pass.rs
+5
-6
未找到文件。
src/rustdoc/astsrv.rs
浏览文件 @
a6bdaee7
...
...
@@ -5,9 +5,10 @@
export
ctxt
;
export
ctxt_handler
;
export
srv
,
seq_srv
;
export
mk_seq_srv_from_str
;
export
mk_seq_srv_from_file
;
export
srv
;
export
mk_srv_from_str
;
export
mk_srv_from_file
;
export
exec
;
type
ctxt
=
{
ast
:
@
ast
::
crate
,
...
...
@@ -16,25 +17,20 @@
type
ctxt_handler
<
T
>
=
fn
~
(
ctxt
:
ctxt
)
->
T
;
iface
srv
{
fn
exec
<
T
>
(
f
:
ctxt_handler
<
T
>
)
->
T
;
}
#[doc
=
"The single-task service"
]
tag
seq_srv
=
ctxt
;
type
srv
=
{
ctxt
:
ctxt
};
impl
seq_srv
of
srv
for
seq_
srv
{
fn
exec
<
T
>
(
f
:
ctxt_handler
<
T
>
)
->
T
{
f
(
*
self
)
fn
mk_srv_from_str
(
source
:
str
)
->
srv
{
{
ctxt
:
build_ctxt
(
parse
::
from_str
(
source
)
)
}
}
fn
mk_seq_srv_from_str
(
source
:
str
)
->
seq_srv
{
seq_srv
(
build_ctxt
(
parse
::
from_str
(
source
)))
}
fn
mk_seq_srv_from_file
(
file
:
str
)
->
seq_srv
{
seq_srv
(
build_ctxt
(
parse
::
from_file
(
file
)))
fn
mk_srv_from_file
(
file
:
str
)
->
srv
{
{
ctxt
:
build_ctxt
(
parse
::
from_file
(
file
))
}
}
fn
build_ctxt
(
ast
:
@
ast
::
crate
)
->
ctxt
{
...
...
@@ -44,23 +40,30 @@ fn build_ctxt(ast: @ast::crate) -> ctxt {
}
}
fn
exec
<
T
>
(
srv
:
srv
,
f
:
fn
~
(
ctxt
:
ctxt
)
->
T
)
->
T
{
f
(
srv
.ctxt
)
}
#[cfg(test)]
mod
tests
{
#[test]
fn
s
eq_s
rv_should_build_ast_map
()
{
fn
srv_should_build_ast_map
()
{
let
source
=
"fn a() { }"
;
let
srv
=
mk_s
eq_s
rv_from_str
(
source
);
srv
.exec
{|
ctxt
|
let
srv
=
mk_srv_from_str
(
source
);
exec
(
srv
)
{|
ctxt
|
assert
ctxt
.map
.size
()
!=
0u
};
}
#[test]
fn
s
eq_s
rv_should_return_request_result
()
{
fn
srv_should_return_request_result
()
{
let
source
=
"fn a() { }"
;
let
srv
=
mk_s
eq_s
rv_from_str
(
source
);
let
result
=
srv
.exec
{|
_
ctxt
|
1000
};
let
srv
=
mk_srv_from_str
(
source
);
let
result
=
exec
(
srv
)
{|
_
ctxt
|
1000
};
assert
result
==
1000
;
}
}
\ No newline at end of file
src/rustdoc/attr_pass.rs
浏览文件 @
a6bdaee7
...
...
@@ -4,12 +4,12 @@
export
run
;
fn
run
(
srv
:
astsrv
::
s
eq_s
rv
,
srv
:
astsrv
::
srv
,
doc
:
doc
::
cratedoc
)
->
doc
::
cratedoc
{
let
fold
=
fold
::
fold
({
fold_fn
:
fn
~
(
f
:
fold
::
fold
<
astsrv
::
s
eq_s
rv
>
,
f
:
fold
::
fold
<
astsrv
::
srv
>
,
d
:
doc
::
fndoc
)
->
doc
::
fndoc
{
fold_fn
(
f
,
d
)
...
...
@@ -20,16 +20,18 @@ fn run(
}
fn
fold_fn
(
fold
:
fold
::
fold
<
astsrv
::
s
eq_s
rv
>
,
fold
:
fold
::
fold
<
astsrv
::
srv
>
,
doc
:
doc
::
fndoc
)
->
doc
::
fndoc
{
let
srv
=
fold
.ctxt
;
let
attrs
=
alt
srv
.map
.get
(
doc
.id
)
{
ast_map
::
node_item
(
item
)
{
item
.attrs
}
let
attrs
=
astsrv
::
exec
(
srv
)
{|
ctxt
|
let
attrs
=
alt
ctxt
.map
.get
(
doc
.id
)
{
ast_map
::
node_item
(
item
)
{
item
.attrs
}
};
attr_parser
::
parse_fn
(
attrs
)
};
let
attrs
=
attr_parser
::
parse_fn
(
attrs
);
ret
merge_fn_attrs
(
doc
,
attrs
);
fn
merge_fn_attrs
(
...
...
@@ -66,7 +68,7 @@ fn merge_ret_attrs(
#[test]
fn
fold_fn_should_extract_fn_attributes
()
{
let
source
=
"#[doc =
\"
test
\"
] fn a() -> int { }"
;
let
srv
=
astsrv
::
mk_s
eq_s
rv_from_str
(
source
);
let
srv
=
astsrv
::
mk_srv_from_str
(
source
);
let
doc
=
extract
::
from_srv
(
srv
,
""
);
let
fold
=
fold
::
default_seq_fold
(
srv
);
let
doc
=
fold_fn
(
fold
,
doc
.topmod.fns
[
0
]);
...
...
src/rustdoc/extract.rs
浏览文件 @
a6bdaee7
...
...
@@ -4,11 +4,10 @@
// FIXME: Want this to be from_srv<T:ast::srv> but it crashes
fn
from_srv
(
srv
:
astsrv
::
s
eq_s
rv
,
srv
:
astsrv
::
srv
,
default_name
:
str
)
->
doc
::
cratedoc
{
import
astsrv
::
seq_srv
;
srv
.exec
{|
ctxt
|
astsrv
::
exec
(
srv
)
{|
ctxt
|
extract
(
ctxt
.ast
,
default_name
)
}
}
...
...
@@ -137,9 +136,8 @@ fn extract_should_use_default_crate_name() {
#[test]
fn
extract_from_seq_srv
()
{
import
astsrv
::
seq_srv
;
let
source
=
""
;
let
srv
=
astsrv
::
mk_s
eq_s
rv_from_str
(
source
);
let
srv
=
astsrv
::
mk_srv_from_str
(
source
);
let
doc
=
from_srv
(
srv
,
"name"
);
assert
doc
.topmod.name
==
"name"
;
}
...
...
src/rustdoc/prune_undoc_pass.rs
浏览文件 @
a6bdaee7
...
...
@@ -5,7 +5,7 @@
};
fn
run
(
_
srv
:
astsrv
::
s
eq_s
rv
,
_
srv
:
astsrv
::
srv
,
doc
:
doc
::
cratedoc
)
->
doc
::
cratedoc
{
let
ctxt
=
{
...
...
@@ -59,7 +59,7 @@ mod tests {
#[test]
fn
should_elide_undocumented_fns
()
{
let
source
=
"fn a() { }"
;
let
srv
=
astsrv
::
mk_s
eq_s
rv_from_str
(
source
);
let
srv
=
astsrv
::
mk_srv_from_str
(
source
);
let
doc
=
extract
::
from_srv
(
srv
,
""
);
let
doc
=
run
(
srv
,
doc
);
assert
vec
::
is_empty
(
*
doc
.topmod.fns
);
...
...
src/rustdoc/rustdoc.rs
浏览文件 @
a6bdaee7
...
...
@@ -5,10 +5,10 @@
use
std
;
use
rustc
;
type
pass
=
fn
~
(
srv
:
astsrv
::
s
eq_s
rv
,
doc
:
doc
::
cratedoc
)
->
doc
::
cratedoc
;
type
pass
=
fn
~
(
srv
:
astsrv
::
srv
,
doc
:
doc
::
cratedoc
)
->
doc
::
cratedoc
;
fn
run_passes
(
srv
:
astsrv
::
s
eq_s
rv
,
srv
:
astsrv
::
srv
,
doc
:
doc
::
cratedoc
,
passes
:
[
pass
]
)
->
doc
::
cratedoc
{
...
...
@@ -19,9 +19,8 @@ fn run_passes(
#[test]
fn
test_run_passes
()
{
import
astsrv
::
seq_srv
;
fn
pass1
(
_
srv
:
astsrv
::
s
eq_s
rv
,
_
srv
:
astsrv
::
srv
,
doc
:
doc
::
cratedoc
)
->
doc
::
cratedoc
{
~
{
...
...
@@ -33,7 +32,7 @@ fn pass1(
}
}
fn
pass2
(
_
srv
:
astsrv
::
s
eq_s
rv
,
_
srv
:
astsrv
::
srv
,
doc
:
doc
::
cratedoc
)
->
doc
::
cratedoc
{
~
{
...
...
@@ -45,7 +44,7 @@ fn pass2(
}
}
let
source
=
""
;
let
srv
=
astsrv
::
mk_s
eq_s
rv_from_str
(
source
);
let
srv
=
astsrv
::
mk_srv_from_str
(
source
);
let
passes
=
[
pass1
,
pass2
];
let
doc
=
extract
::
from_srv
(
srv
,
"one"
);
let
doc
=
run_passes
(
srv
,
doc
,
passes
);
...
...
@@ -73,7 +72,7 @@ fn main(argv: [str]) {
fn
run
(
source_file
:
str
)
{
let
default_name
=
source_file
;
let
srv
=
astsrv
::
mk_s
eq_s
rv_from_file
(
source_file
);
let
srv
=
astsrv
::
mk_srv_from_file
(
source_file
);
let
doc
=
extract
::
from_srv
(
srv
,
default_name
);
let
doc
=
run_passes
(
srv
,
doc
,
[
attr_pass
::
run
,
...
...
src/rustdoc/tystr_pass.rs
浏览文件 @
a6bdaee7
import
rustc
::
syntax
::
ast
;
import
rustc
::
syntax
::
print
::
pprust
;
import
rustc
::
middle
::
ast_map
;
import
astsrv
::
seq_srv
;
export
run
;
fn
run
(
srv
:
astsrv
::
s
eq_s
rv
,
srv
:
astsrv
::
srv
,
doc
:
doc
::
cratedoc
)
->
doc
::
cratedoc
{
let
fold
=
fold
::
fold
({
fold_fn
:
fn
~
(
f
:
fold
::
fold
<
astsrv
::
s
eq_s
rv
>
,
f
:
fold
::
fold
<
astsrv
::
srv
>
,
d
:
doc
::
fndoc
)
->
doc
::
fndoc
{
fold_fn
(
f
,
d
)
...
...
@@ -22,7 +21,7 @@ fn run(
}
fn
fold_fn
(
fold
:
fold
::
fold
<
astsrv
::
s
eq_s
rv
>
,
fold
:
fold
::
fold
<
astsrv
::
srv
>
,
doc
:
doc
::
fndoc
)
->
doc
::
fndoc
{
...
...
@@ -45,7 +44,7 @@ fn add_ret_ty(
}
}
let
retty
=
srv
.exec
{|
ctxt
|
let
retty
=
astsrv
::
exec
(
srv
)
{|
ctxt
|
alt
ctxt
.map
.get
(
doc
.id
)
{
ast_map
::
node_item
(
@
{
node
:
ast
::
item_fn
(
decl
,
_
,
_
),
_
...
...
@@ -67,7 +66,7 @@ mod tests {
#[test]
fn
should_add_fn_ret_types
()
{
let
source
=
"fn a() -> int { }"
;
let
srv
=
astsrv
::
mk_s
eq_s
rv_from_str
(
source
);
let
srv
=
astsrv
::
mk_srv_from_str
(
source
);
let
doc
=
extract
::
from_srv
(
srv
,
""
);
let
doc
=
run
(
srv
,
doc
);
assert
option
::
get
(
doc
.topmod.fns
[
0
]
.return
)
.ty
==
some
(
"int"
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录