Skip to content

Commit

Permalink
Auto merge of #39282 - petrochenkov:selfstab, r=nikomatsakis
Browse files Browse the repository at this point in the history
Stabilize Self and associated types in struct expressions and patterns

Rebase of #37734
Closes #37544
r? @nikomatsakis
  • Loading branch information
bors committed Jan 27, 2017
2 parents 8367fb7 + 5056a43 commit 463affe
Show file tree
Hide file tree
Showing 8 changed files with 2 additions and 55 deletions.
10 changes: 0 additions & 10 deletions src/librustc_typeck/check/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3306,16 +3306,6 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
}
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))
Expand Down
6 changes: 2 additions & 4 deletions src/libsyntax/feature_gate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -297,10 +297,6 @@ declare_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)),


// Allows #[link(..., cfg(..))]
(active, link_cfg, "1.14.0", Some(37406)),

Expand Down Expand Up @@ -381,6 +377,8 @@ declare_features! (
// Allows `..` in tuple (struct) patterns
(accepted, dotdot_in_tuple_patterns, "1.14.0", Some(33627)),
(accepted, item_like_imports, "1.14.0", Some(35120)),
// Allows using `Self` and associated types in struct expressions and patterns.
(accepted, more_struct_aliases, "1.14.0", Some(37544)),
);
// (changing above list without updating src/doc/reference.md makes @cmr sad)

Expand Down
2 changes: 0 additions & 2 deletions src/test/compile-fail/struct-path-associated-type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![feature(more_struct_aliases)]

struct S;

trait Tr {
Expand Down
31 changes: 0 additions & 31 deletions src/test/compile-fail/struct-path-self-feature-gate.rs

This file was deleted.

2 changes: 0 additions & 2 deletions src/test/compile-fail/struct-path-self-type-mismatch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
// 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(); }
Expand Down
2 changes: 0 additions & 2 deletions src/test/compile-fail/struct-path-self.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![feature(more_struct_aliases)]

struct S;

trait Tr {
Expand Down
2 changes: 0 additions & 2 deletions src/test/run-pass/struct-path-associated-type.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
// 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,
Expand Down
2 changes: 0 additions & 2 deletions src/test/run-pass/struct-path-self.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,6 @@
// 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> {
Expand Down

0 comments on commit 463affe

Please sign in to comment.