提交 dce27cba 编写于 作者: A Alexander Regueiro

Enabled `Self` in type aliases.

上级 35585c49
......@@ -2529,7 +2529,17 @@ fn resolve_item(&mut self, item: &Item) {
debug!("(resolving item) resolving {} ({:?})", name, item.node);
match item.node {
ItemKind::Ty(_, ref generics) |
ItemKind::Ty(_, ref generics) => {
self.with_current_self_item(item, |this| {
this.with_generic_param_rib(HasGenericParams(generics, ItemRibKind), |this| {
let item_def_id = this.definitions.local_def_id(item.id);
this.with_self_rib(Def::SelfTy(Some(item_def_id), None), |this| {
visit::walk_item(this, item)
})
})
});
}
ItemKind::Existential(_, ref generics) |
ItemKind::Fn(_, _, ref generics, _) => {
self.with_generic_param_rib(
......
......@@ -1770,7 +1770,7 @@ pub fn res_to_ty(&self,
tcx.mk_ty_param(index, tcx.hir().name_by_hir_id(hir_id).as_interned_str())
}
Res::SelfTy(Some(_), None) => {
// `Self` in trait.
// `Self` in trait or type alias.
assert_eq!(opt_self_ty, None);
self.prohibit_generics(&path.segments);
tcx.mk_self_type()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册