Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
9215d7e5
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,发现更多精彩内容 >>
提交
9215d7e5
编写于
6月 23, 2014
作者:
J
John Clements
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
comments only
上级
bcdcaea5
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
9 addition
and
4 deletion
+9
-4
src/libsyntax/ext/expand.rs
src/libsyntax/ext/expand.rs
+9
-4
未找到文件。
src/libsyntax/ext/expand.rs
浏览文件 @
9215d7e5
...
...
@@ -1070,7 +1070,7 @@ pub fn new_path_finder(paths: Vec<ast::Path> ) -> NewPathExprFinderContext {
// these following tests are quite fragile, in that they don't test what
// *kind* of failure occurs.
// make sure that macros can
leave scope
// make sure that macros can
't escape fns
#[should_fail]
#[test]
fn
macros_cant_escape_fns_test
()
{
let
src
=
"fn bogus() {macro_rules! z (() => (3+4))}
\
...
...
@@ -1088,7 +1088,7 @@ pub fn new_path_finder(paths: Vec<ast::Path> ) -> NewPathExprFinderContext {
expand_crate
(
&
sess
,
cfg
,
vec!
(),
vec!
(),
crate_ast
);
}
// make sure that macros can
leave scope for
modules
// make sure that macros can
't escape
modules
#[should_fail]
#[test]
fn
macros_cant_escape_mods_test
()
{
let
src
=
"mod foo {macro_rules! z (() => (3+4))}
\
...
...
@@ -1105,7 +1105,7 @@ pub fn new_path_finder(paths: Vec<ast::Path> ) -> NewPathExprFinderContext {
expand_crate
(
&
sess
,
cfg
,
vec!
(),
vec!
(),
crate_ast
);
}
// macro_escape modules should
n't cause macros to leave sco
pe
// macro_escape modules should
allow macros to esca
pe
#[test]
fn
macros_can_escape_flattened_mods_test
()
{
let
src
=
"#[macro_escape] mod foo {macro_rules! z (() => (3+4))}
\
fn inty() -> int { z!() }"
.to_string
();
...
...
@@ -1114,7 +1114,6 @@ pub fn new_path_finder(paths: Vec<ast::Path> ) -> NewPathExprFinderContext {
"<test>"
.to_string
(),
src
,
Vec
::
new
(),
&
sess
);
// should fail:
let
cfg
=
::
syntax
::
ext
::
expand
::
ExpansionConfig
{
deriving_hash_type_parameter
:
false
,
crate_id
:
from_str
(
"test"
)
.unwrap
(),
...
...
@@ -1185,6 +1184,12 @@ fn expand_crate_str(crate_str: String) -> ast::Crate {
// binding should match the second two varrefs, and the second binding
// should match the first varref.
//
// Put differently; this is a sparse representation of a boolean matrix
// indicating which bindings capture which identifiers.
//
// Note also that this matrix is dependent on the implicit ordering of
// the bindings and the varrefs discovered by the name-finder and the path-finder.
//
// The comparisons are done post-mtwt-resolve, so we're comparing renamed
// names; differences in marks don't matter any more.
//
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录