Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Rust
提交
e126f3c6
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,发现更多精彩内容 >>
提交
e126f3c6
编写于
11月 04, 2016
作者:
A
Alex Crichton
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'selfgate' of
https://github.com/petrochenkov/rust
into rollup
上级
0eff43ff
50ecee24
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
52 addition
and
0 deletion
+52
-0
src/librustc_typeck/check/mod.rs
src/librustc_typeck/check/mod.rs
+10
-0
src/libsyntax/feature_gate.rs
src/libsyntax/feature_gate.rs
+3
-0
src/test/compile-fail/struct-path-associated-type.rs
src/test/compile-fail/struct-path-associated-type.rs
+2
-0
src/test/compile-fail/struct-path-self-feature-gate.rs
src/test/compile-fail/struct-path-self-feature-gate.rs
+29
-0
src/test/compile-fail/struct-path-self-type-mismatch.rs
src/test/compile-fail/struct-path-self-type-mismatch.rs
+2
-0
src/test/compile-fail/struct-path-self.rs
src/test/compile-fail/struct-path-self.rs
+2
-0
src/test/run-pass/struct-path-associated-type.rs
src/test/run-pass/struct-path-associated-type.rs
+2
-0
src/test/run-pass/struct-path-self.rs
src/test/run-pass/struct-path-self.rs
+2
-0
未找到文件。
src/librustc_typeck/check/mod.rs
浏览文件 @
e126f3c6
...
...
@@ -3240,6 +3240,16 @@ pub fn check_struct_path(&self,
}
Def
::
Struct
(
..
)
|
Def
::
Union
(
..
)
|
Def
::
TyAlias
(
..
)
|
Def
::
AssociatedTy
(
..
)
|
Def
::
SelfTy
(
..
)
=>
{
match
def
{
Def
::
AssociatedTy
(
..
)
|
Def
::
SelfTy
(
..
)
if
!
self
.tcx.sess.features
.borrow
()
.more_struct_aliases
=>
{
emit_feature_err
(
&
self
.tcx.sess.parse_sess
,
"more_struct_aliases"
,
path
.span
,
GateIssue
::
Language
,
"`Self` and associated types in struct
\
expressions and patterns are unstable"
);
}
_
=>
{}
}
match
ty
.sty
{
ty
::
TyAdt
(
adt
,
substs
)
if
!
adt
.is_enum
()
=>
{
Some
((
adt
.struct_variant
(),
adt
.did
,
substs
))
...
...
src/libsyntax/feature_gate.rs
浏览文件 @
e126f3c6
...
...
@@ -312,6 +312,9 @@ pub fn new() -> Features {
// The #![windows_subsystem] attribute
(
active
,
windows_subsystem
,
"1.14.0"
,
Some
(
37499
)),
// Allows using `Self` and associated types in struct expressions and patterns.
(
active
,
more_struct_aliases
,
"1.14.0"
,
Some
(
37544
)),
);
declare_features!
(
...
...
src/test/compile-fail/struct-path-associated-type.rs
浏览文件 @
e126f3c6
...
...
@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(more_struct_aliases)]
struct
S
;
trait
Tr
{
...
...
src/test/compile-fail/struct-path-self-feature-gate.rs
0 → 100644
浏览文件 @
e126f3c6
// Copyright 2016 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
struct
S
;
trait
Tr
{
type
A
;
}
fn
f
<
T
:
Tr
<
A
=
S
>>
()
{
let
_
=
T
::
A
{};
//~^ ERROR `Self` and associated types in struct expressions and patterns are unstable
}
impl
S
{
fn
f
()
{
let
_
=
Self
{};
//~^ ERROR `Self` and associated types in struct expressions and patterns are unstable
}
}
fn
main
()
{}
src/test/compile-fail/struct-path-self-type-mismatch.rs
浏览文件 @
e126f3c6
...
...
@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(more_struct_aliases)]
struct
Foo
<
A
>
{
inner
:
A
}
trait
Bar
{
fn
bar
();
}
...
...
src/test/compile-fail/struct-path-self.rs
浏览文件 @
e126f3c6
...
...
@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(more_struct_aliases)]
struct
S
;
trait
Tr
{
...
...
src/test/run-pass/struct-path-associated-type.rs
浏览文件 @
e126f3c6
...
...
@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(more_struct_aliases)]
struct
S
<
T
,
U
=
u16
>
{
a
:
T
,
b
:
U
,
...
...
src/test/run-pass/struct-path-self.rs
浏览文件 @
e126f3c6
...
...
@@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(more_struct_aliases)]
use
std
::
ops
::
Add
;
struct
S
<
T
,
U
=
u16
>
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录