diff --git a/src/librustc_typeck/astconv.rs b/src/librustc_typeck/astconv.rs index a2c968a290b8a..cfd681e51f4e1 100644 --- a/src/librustc_typeck/astconv.rs +++ b/src/librustc_typeck/astconv.rs @@ -1662,6 +1662,9 @@ pub fn ast_ty_to_ty<'tcx>(this: &AstConv<'tcx>, // handled specially and will not descend into this routine. this.ty_infer(None, None, None, ast_ty.span) } + ast::TyMac(_) => { + tcx.sess.span_bug(m.span, "unexpanded type macro found conversion") + } }; tcx.ast_ty_to_ty_cache.borrow_mut().insert(ast_ty.id, typ); diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 11a0e0eaa496e..a79a571f0c7a4 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -1611,6 +1611,9 @@ impl Clean for ast::Ty { TyTypeof(..) => { panic!("Unimplemented type {:?}", self.node) }, + TyMac(..) => { + cx.tcx().sess.span_bug(m.span, "unexpanded type macro found during cleaning") + } } } } diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index db173d0830815..eefd3da9f4af3 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -1471,6 +1471,8 @@ pub enum Ty_ { /// TyInfer means the type should be inferred instead of it having been /// specified. This can appear anywhere in a type. TyInfer, + // A macro in the type position. + TyMac(Mac) } #[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)] diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index dab6d41df3003..72fe9a7711d99 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -429,6 +429,9 @@ pub fn noop_fold_ty(t: P, fld: &mut T) -> P { TyPolyTraitRef(bounds) => { TyPolyTraitRef(bounds.move_map(|b| fld.fold_ty_param_bound(b))) } + TyMac(mac) => { + TyMac(fld.fold_mac(mac)) + } }, span: fld.new_span(span) }) diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 6cfe85bc37e81..17fa0922da9ef 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -734,6 +734,9 @@ impl<'a> State<'a> { ast::TyInfer => { try!(word(&mut self.s, "_")); } + ast::TyMac(ref m) => { + try!(self.print_mac(m, token::Paren)); + } } self.end() } diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index 649052d123c88..b32ed15b50f9d 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -405,6 +405,9 @@ pub fn walk_ty<'v, V: Visitor<'v>>(visitor: &mut V, typ: &'v Ty) { visitor.visit_expr(&**expression) } TyInfer => {} + TyMac(ref mac) => { + visitor.visit_mac(mac) + } } }