Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
8ab8619d
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,发现更多精彩内容 >>
提交
8ab8619d
编写于
4月 22, 2015
作者:
T
Tamir Duberstein
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Unrot and re-enable `run-pass-fulldeps/qquote.rs`
上级
0d8309ec
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
32 addition
and
60 deletion
+32
-60
src/test/run-pass-fulldeps/qquote.rs
src/test/run-pass-fulldeps/qquote.rs
+32
-60
未找到文件。
src/test/run-pass-fulldeps/qquote.rs
浏览文件 @
8ab8619d
...
...
@@ -10,86 +10,58 @@
// ignore-cross-compile
// ignore-pretty
// ignore-test
#![feature(quote)]
#![feature(quote
,
rustc_private
)]
extern
crate
syntax
;
use
std
::
io
::
*
;
use
syntax
::
diagnostic
;
use
syntax
::
ast
;
use
syntax
::
codemap
;
use
syntax
::
codemap
::
span
;
use
syntax
::
parse
;
use
syntax
::
print
::
*
;
trait
fake_ext_ctxt
{
fn
cfg
()
->
ast
::
CrateConfig
;
fn
parse_sess
()
->
parse
::
parse_sess
;
fn
call_site
()
->
span
;
fn
ident_of
(
st
:
&
str
)
->
ast
::
ident
;
use
syntax
::
print
::
pprust
;
trait
FakeExtCtxt
{
fn
call_site
(
&
self
)
->
codemap
::
Span
;
fn
cfg
(
&
self
)
->
ast
::
CrateConfig
;
fn
ident_of
(
&
self
,
st
:
&
str
)
->
ast
::
Ident
;
fn
name_of
(
&
self
,
st
:
&
str
)
->
ast
::
Name
;
fn
parse_sess
(
&
self
)
->
&
parse
::
ParseSess
;
}
type
fake_session
=
parse
::
parse_sess
;
impl
fake_ext_ctxt
for
fake_session
{
fn
cfg
()
->
ast
::
CrateConfig
{
Vec
::
new
()
}
fn
parse_sess
()
->
parse
::
parse_sess
{
self
}
fn
call_site
()
->
span
{
codemap
::
span
{
impl
FakeExtCtxt
for
parse
::
ParseSess
{
fn
call_site
(
&
self
)
->
codemap
::
Span
{
codemap
::
Span
{
lo
:
codemap
::
BytePos
(
0
),
hi
:
codemap
::
BytePos
(
0
),
expn_id
:
codemap
::
NO_EXPANSION
expn_id
:
codemap
::
NO_EXPANSION
,
}
}
fn
ident_of
(
st
:
&
str
)
->
ast
::
ident
{
self
.interner
.intern
(
st
)
fn
cfg
(
&
self
)
->
ast
::
CrateConfig
{
Vec
::
new
()
}
fn
ident_of
(
&
self
,
st
:
&
str
)
->
ast
::
Ident
{
parse
::
token
::
str_to_ident
(
st
)
}
}
fn
mk_ctxt
()
->
fake_ext_ctxt
{
parse
::
new_parse_sess
(
None
)
as
fake_ext_ctxt
fn
name_of
(
&
self
,
st
:
&
str
)
->
ast
::
Name
{
parse
::
token
::
intern
(
st
)
}
fn
parse_sess
(
&
self
)
->
&
parse
::
ParseSess
{
self
}
}
fn
main
()
{
let
cx
=
mk_ctxt
();
let
cx
=
parse
::
new_parse_sess
();
let
abc
=
quote_expr!
(
cx
,
23
);
check_pp
(
ext_cx
,
abc
,
pprust
::
print_expr
,
"23"
.to_string
());
assert_eq!
(
pprust
::
expr_to_string
(
&*
quote_expr!
(
&
cx
,
23
)),
"23"
);
assert_eq!
(
pprust
::
pat_to_string
(
&*
quote_pat!
(
&
cx
,
Some
(
_
))),
"Some(_)"
);
assert_eq!
(
pprust
::
ty_to_string
(
&*
quote_ty!
(
&
cx
,
isize
)),
"isize"
);
let
arm
=
quote_arm!
(
&
cx
,
(
ref
x
,
ref
y
)
=>
(
x
,
y
),);
assert_eq!
(
pprust
::
arm_to_string
(
&
arm
),
" (ref x, ref y) => (x, y),"
);
let
ty
=
quote_ty!
(
cx
,
isize
);
check_pp
(
ext_cx
,
ty
,
pprust
::
print_type
,
"isize"
.to_string
()
);
let
attr
=
quote_attr!
(
&
cx
,
#![cfg(foo
=
"bar"
)]
);
assert_eq!
(
pprust
::
attr_to_string
(
&
attr
),
"#![cfg(foo =
\"
bar
\"
)]"
);
let
item
=
quote_item!
(
cx
,
static
x
:
isize
=
10
;)
.get
();
check_pp
(
ext_cx
,
item
,
pprust
::
print_item
,
"static x: isize = 10;"
.to_string
()
);
let
item
=
quote_item!
(
&
cx
,
static
x
:
isize
=
10
;)
.unwrap
();
assert_eq!
(
pprust
::
item_to_string
(
&*
item
),
"static x: isize = 10;"
);
let
stmt
=
quote_stmt!
(
cx
,
let
x
=
20
;);
check_pp
(
ext_cx
,
*
stmt
,
pprust
::
print_stmt
,
"let x = 20;"
.to_string
());
let
pat
=
quote_pat!
(
cx
,
Some
(
_
));
check_pp
(
ext_cx
,
pat
,
pprust
::
print_pat
,
"Some(_)"
.to_string
());
let
arm
=
quote_arm!
(
cx
,
(
ref
x
,
ref
y
)
=>
(
x
,
y
));
check_pp
(
ext_cx
,
arm
,
pprust
::
print_stmt
,
"(ref x, ref y) = (x, y)"
.to_string
());
let
attr
=
quote_attr!
(
cx
,
#![cfg(foo
=
"bar"
)]
);
check_pp
(
ext_cx
,
attr
,
pprust
::
print_attribute
,
"#![cfg(foo = "
bar
")]"
.to_string
());
}
fn
check_pp
<
T
>
(
cx
:
fake_ext_ctxt
,
expr
:
T
,
f
:
|
pprust
::
ps
,
T
|,
expect
:
String
)
{
let
s
=
io
::
with_str_writer
(|
wr
|
{
let
pp
=
pprust
::
rust_printer
(
wr
,
cx
.parse_sess
()
.interner
);
f
(
pp
,
expr
);
pp
::
eof
(
pp
.s
);
});
stdout
()
.write_line
(
s
);
if
expect
!=
""
.to_string
()
{
println!
(
"expect: '%s', got: '%s'"
,
expect
,
s
);
assert_eq!
(
s
,
expect
);
}
let
stmt
=
quote_stmt!
(
&
cx
,
let
x
=
20
;)
.unwrap
();
assert_eq!
(
pprust
::
stmt_to_string
(
&*
stmt
),
"let x = 20;"
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录