Rename Tup to Tuple
diff --git a/src/expr.rs b/src/expr.rs
index 97db379..f717b2b 100644
--- a/src/expr.rs
+++ b/src/expr.rs
@@ -70,7 +70,7 @@
         }),
 
         /// A tuple, e.g. `(a, b, c, d)`.
-        pub Tup(ExprTup #full {
+        pub Tuple(ExprTuple #full {
             pub args: Delimited<Expr, Token![,]>,
             pub paren_token: tokens::Paren,
             pub lone_comma: Option<Token![,]>,
@@ -1154,7 +1154,7 @@
         |
         syn!(ExprArray) => { ExprKind::Array }
         |
-        syn!(ExprTup) => { ExprKind::Tup }
+        syn!(ExprTuple) => { ExprKind::Tuple }
         |
         syn!(ExprIf) => { ExprKind::If }
         |
@@ -1320,10 +1320,10 @@
     ));
 
     #[cfg(feature = "full")]
-    impl Synom for ExprTup {
+    impl Synom for ExprTuple {
         named!(parse -> Self, do_parse!(
             elems: parens!(call!(Delimited::parse_terminated)) >>
-            (ExprTup {
+            (ExprTuple {
                 args: elems.0,
                 paren_token: elems.1,
                 lone_comma: None, // TODO: parse this
@@ -2354,12 +2354,12 @@
     }
 
     #[cfg(feature = "full")]
-    impl ToTokens for ExprTup {
+    impl ToTokens for ExprTuple {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.paren_token.surround(tokens, |tokens| {
                 self.args.to_tokens(tokens);
                 // If we only have one argument, we need a trailing comma to
-                // distinguish ExprTup from ExprParen.
+                // distinguish ExprTuple from ExprParen.
                 if self.args.len() == 1 && !self.args.trailing_delim() {
                     <Token![,]>::default().to_tokens(tokens);
                 }
diff --git a/src/gen/fold.rs b/src/gen/fold.rs
index a7c5f9e..adc3c65 100644
--- a/src/gen/fold.rs
+++ b/src/gen/fold.rs
@@ -170,9 +170,9 @@
 # [ cfg ( feature = "full" ) ]
 fn fold_expr_try(&mut self, i: ExprTry) -> ExprTry { fold_expr_try(self, i) }
 # [ cfg ( feature = "full" ) ]
-fn fold_expr_tup(&mut self, i: ExprTup) -> ExprTup { fold_expr_tup(self, i) }
-# [ cfg ( feature = "full" ) ]
 fn fold_expr_tup_field(&mut self, i: ExprTupField) -> ExprTupField { fold_expr_tup_field(self, i) }
+# [ cfg ( feature = "full" ) ]
+fn fold_expr_tuple(&mut self, i: ExprTuple) -> ExprTuple { fold_expr_tuple(self, i) }
 
 fn fold_expr_type(&mut self, i: ExprType) -> ExprType { fold_expr_type(self, i) }
 
@@ -372,7 +372,7 @@
 
 fn fold_type_trait_object(&mut self, i: TypeTraitObject) -> TypeTraitObject { fold_type_trait_object(self, i) }
 
-fn fold_type_tup(&mut self, i: TypeTup) -> TypeTup { fold_type_tup(self, i) }
+fn fold_type_tuple(&mut self, i: TypeTuple) -> TypeTuple { fold_type_tuple(self, i) }
 
 fn fold_un_op(&mut self, i: UnOp) -> UnOp { fold_un_op(self, i) }
 
@@ -1007,9 +1007,9 @@
                 full!(_visitor.fold_expr_method_call(_binding_0)),
             )
         }
-        Tup(_binding_0, ) => {
-            Tup (
-                full!(_visitor.fold_expr_tup(_binding_0)),
+        Tuple(_binding_0, ) => {
+            Tuple (
+                full!(_visitor.fold_expr_tuple(_binding_0)),
             )
         }
         Binary(_binding_0, ) => {
@@ -1272,14 +1272,6 @@
     }
 }
 # [ cfg ( feature = "full" ) ]
-pub fn fold_expr_tup<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprTup) -> ExprTup {
-    ExprTup {
-        args: FoldHelper::lift(_i . args, |it| { _visitor.fold_expr(it) }),
-        paren_token: _i . paren_token,
-        lone_comma: _i . lone_comma,
-    }
-}
-# [ cfg ( feature = "full" ) ]
 pub fn fold_expr_tup_field<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprTupField) -> ExprTupField {
     ExprTupField {
         expr: Box::new(_visitor.fold_expr(* _i . expr)),
@@ -1287,6 +1279,14 @@
         dot_token: _i . dot_token,
     }
 }
+# [ cfg ( feature = "full" ) ]
+pub fn fold_expr_tuple<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprTuple) -> ExprTuple {
+    ExprTuple {
+        args: FoldHelper::lift(_i . args, |it| { _visitor.fold_expr(it) }),
+        paren_token: _i . paren_token,
+        lone_comma: _i . lone_comma,
+    }
+}
 
 pub fn fold_expr_type<V: Folder + ?Sized>(_visitor: &mut V, _i: ExprType) -> ExprType {
     ExprType {
@@ -2423,9 +2423,9 @@
                 _visitor.fold_type_never(_binding_0),
             )
         }
-        Tup(_binding_0, ) => {
-            Tup (
-                _visitor.fold_type_tup(_binding_0),
+        Tuple(_binding_0, ) => {
+            Tuple (
+                _visitor.fold_type_tuple(_binding_0),
             )
         }
         Path(_binding_0, ) => {
@@ -2587,8 +2587,8 @@
     }
 }
 
-pub fn fold_type_tup<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeTup) -> TypeTup {
-    TypeTup {
+pub fn fold_type_tuple<V: Folder + ?Sized>(_visitor: &mut V, _i: TypeTuple) -> TypeTuple {
+    TypeTuple {
         paren_token: _i . paren_token,
         tys: FoldHelper::lift(_i . tys, |it| { _visitor.fold_type(it) }),
         lone_comma: _i . lone_comma,
diff --git a/src/gen/visit.rs b/src/gen/visit.rs
index 237592f..edc842b 100644
--- a/src/gen/visit.rs
+++ b/src/gen/visit.rs
@@ -143,9 +143,9 @@
 # [ cfg ( feature = "full" ) ]
 fn visit_expr_try(&mut self, i: &'ast ExprTry) { visit_expr_try(self, i) }
 # [ cfg ( feature = "full" ) ]
-fn visit_expr_tup(&mut self, i: &'ast ExprTup) { visit_expr_tup(self, i) }
-# [ cfg ( feature = "full" ) ]
 fn visit_expr_tup_field(&mut self, i: &'ast ExprTupField) { visit_expr_tup_field(self, i) }
+# [ cfg ( feature = "full" ) ]
+fn visit_expr_tuple(&mut self, i: &'ast ExprTuple) { visit_expr_tuple(self, i) }
 
 fn visit_expr_type(&mut self, i: &'ast ExprType) { visit_expr_type(self, i) }
 
@@ -345,7 +345,7 @@
 
 fn visit_type_trait_object(&mut self, i: &'ast TypeTraitObject) { visit_type_trait_object(self, i) }
 
-fn visit_type_tup(&mut self, i: &'ast TypeTup) { visit_type_tup(self, i) }
+fn visit_type_tuple(&mut self, i: &'ast TypeTuple) { visit_type_tuple(self, i) }
 
 fn visit_un_op(&mut self, i: &'ast UnOp) { visit_un_op(self, i) }
 
@@ -820,8 +820,8 @@
         MethodCall(ref _binding_0, ) => {
             full!(_visitor.visit_expr_method_call(&* _binding_0));
         }
-        Tup(ref _binding_0, ) => {
-            full!(_visitor.visit_expr_tup(&* _binding_0));
+        Tuple(ref _binding_0, ) => {
+            full!(_visitor.visit_expr_tuple(&* _binding_0));
         }
         Binary(ref _binding_0, ) => {
             _visitor.visit_expr_binary(&* _binding_0);
@@ -995,17 +995,17 @@
     // Skipped field _i . question_token;
 }
 # [ cfg ( feature = "full" ) ]
-pub fn visit_expr_tup<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprTup) {
-    for el in (_i . args).iter() { let it = el.item(); _visitor.visit_expr(&it) };
-    // Skipped field _i . paren_token;
-    // Skipped field _i . lone_comma;
-}
-# [ cfg ( feature = "full" ) ]
 pub fn visit_expr_tup_field<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprTupField) {
     _visitor.visit_expr(&_i . expr);
     // Skipped field _i . field;
     // Skipped field _i . dot_token;
 }
+# [ cfg ( feature = "full" ) ]
+pub fn visit_expr_tuple<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprTuple) {
+    for el in (_i . args).iter() { let it = el.item(); _visitor.visit_expr(&it) };
+    // Skipped field _i . paren_token;
+    // Skipped field _i . lone_comma;
+}
 
 pub fn visit_expr_type<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast ExprType) {
     _visitor.visit_expr(&_i . expr);
@@ -1862,8 +1862,8 @@
         Never(ref _binding_0, ) => {
             _visitor.visit_type_never(&* _binding_0);
         }
-        Tup(ref _binding_0, ) => {
-            _visitor.visit_type_tup(&* _binding_0);
+        Tuple(ref _binding_0, ) => {
+            _visitor.visit_type_tuple(&* _binding_0);
         }
         Path(ref _binding_0, ) => {
             _visitor.visit_type_path(&* _binding_0);
@@ -1978,7 +1978,7 @@
     for el in (_i . bounds).iter() { let it = el.item(); _visitor.visit_type_param_bound(&it) };
 }
 
-pub fn visit_type_tup<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeTup) {
+pub fn visit_type_tuple<'ast, V: Visitor<'ast> + ?Sized>(_visitor: &mut V, _i: &'ast TypeTuple) {
     // Skipped field _i . paren_token;
     for el in (_i . tys).iter() { let it = el.item(); _visitor.visit_type(&it) };
     // Skipped field _i . lone_comma;
diff --git a/src/gen/visit_mut.rs b/src/gen/visit_mut.rs
index 2ac4861..027f4f4 100644
--- a/src/gen/visit_mut.rs
+++ b/src/gen/visit_mut.rs
@@ -143,9 +143,9 @@
 # [ cfg ( feature = "full" ) ]
 fn visit_expr_try_mut(&mut self, i: &mut ExprTry) { visit_expr_try_mut(self, i) }
 # [ cfg ( feature = "full" ) ]
-fn visit_expr_tup_mut(&mut self, i: &mut ExprTup) { visit_expr_tup_mut(self, i) }
-# [ cfg ( feature = "full" ) ]
 fn visit_expr_tup_field_mut(&mut self, i: &mut ExprTupField) { visit_expr_tup_field_mut(self, i) }
+# [ cfg ( feature = "full" ) ]
+fn visit_expr_tuple_mut(&mut self, i: &mut ExprTuple) { visit_expr_tuple_mut(self, i) }
 
 fn visit_expr_type_mut(&mut self, i: &mut ExprType) { visit_expr_type_mut(self, i) }
 
@@ -345,7 +345,7 @@
 
 fn visit_type_trait_object_mut(&mut self, i: &mut TypeTraitObject) { visit_type_trait_object_mut(self, i) }
 
-fn visit_type_tup_mut(&mut self, i: &mut TypeTup) { visit_type_tup_mut(self, i) }
+fn visit_type_tuple_mut(&mut self, i: &mut TypeTuple) { visit_type_tuple_mut(self, i) }
 
 fn visit_un_op_mut(&mut self, i: &mut UnOp) { visit_un_op_mut(self, i) }
 
@@ -820,8 +820,8 @@
         MethodCall(ref mut _binding_0, ) => {
             full!(_visitor.visit_expr_method_call_mut(&mut * _binding_0));
         }
-        Tup(ref mut _binding_0, ) => {
-            full!(_visitor.visit_expr_tup_mut(&mut * _binding_0));
+        Tuple(ref mut _binding_0, ) => {
+            full!(_visitor.visit_expr_tuple_mut(&mut * _binding_0));
         }
         Binary(ref mut _binding_0, ) => {
             _visitor.visit_expr_binary_mut(&mut * _binding_0);
@@ -995,17 +995,17 @@
     // Skipped field _i . question_token;
 }
 # [ cfg ( feature = "full" ) ]
-pub fn visit_expr_tup_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprTup) {
-    for mut el in (_i . args).iter_mut() { let mut it = el.item_mut(); _visitor.visit_expr_mut(&mut it) };
-    // Skipped field _i . paren_token;
-    // Skipped field _i . lone_comma;
-}
-# [ cfg ( feature = "full" ) ]
 pub fn visit_expr_tup_field_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprTupField) {
     _visitor.visit_expr_mut(&mut _i . expr);
     // Skipped field _i . field;
     // Skipped field _i . dot_token;
 }
+# [ cfg ( feature = "full" ) ]
+pub fn visit_expr_tuple_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprTuple) {
+    for mut el in (_i . args).iter_mut() { let mut it = el.item_mut(); _visitor.visit_expr_mut(&mut it) };
+    // Skipped field _i . paren_token;
+    // Skipped field _i . lone_comma;
+}
 
 pub fn visit_expr_type_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut ExprType) {
     _visitor.visit_expr_mut(&mut _i . expr);
@@ -1862,8 +1862,8 @@
         Never(ref mut _binding_0, ) => {
             _visitor.visit_type_never_mut(&mut * _binding_0);
         }
-        Tup(ref mut _binding_0, ) => {
-            _visitor.visit_type_tup_mut(&mut * _binding_0);
+        Tuple(ref mut _binding_0, ) => {
+            _visitor.visit_type_tuple_mut(&mut * _binding_0);
         }
         Path(ref mut _binding_0, ) => {
             _visitor.visit_type_path_mut(&mut * _binding_0);
@@ -1978,7 +1978,7 @@
     for mut el in (_i . bounds).iter_mut() { let mut it = el.item_mut(); _visitor.visit_type_param_bound_mut(&mut it) };
 }
 
-pub fn visit_type_tup_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeTup) {
+pub fn visit_type_tuple_mut<V: VisitorMut + ?Sized>(_visitor: &mut V, _i: &mut TypeTuple) {
     // Skipped field _i . paren_token;
     for mut el in (_i . tys).iter_mut() { let mut it = el.item_mut(); _visitor.visit_type_mut(&mut it) };
     // Skipped field _i . lone_comma;
diff --git a/src/lib.rs b/src/lib.rs
index 71534e9..a9df002 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -25,7 +25,7 @@
 
 mod expr;
 pub use expr::{Expr, ExprKind, ExprBox, ExprInPlace, ExprArray, ExprCall,
-               ExprMethodCall, ExprTup, ExprBinary, ExprUnary, ExprCast,
+               ExprMethodCall, ExprTuple, ExprBinary, ExprUnary, ExprCast,
                ExprType, ExprIf, ExprIfLet, ExprWhile, ExprWhileLet,
                ExprForLoop, ExprLoop, ExprMatch, ExprClosure, ExprBlock,
                ExprAssign, ExprAssignOp, ExprField, ExprTupField, ExprIndex,
@@ -87,7 +87,7 @@
              BareFnArgName, BareFnType, ReturnType, MutType, Mutability,
              ParenthesizedGenericArguments, Path, PathArguments, PathSegment,
              PolyTraitRef, QSelf, Type, TypeBinding, Unsafety, TypeSlice,
-             TypeArray, TypePtr, TypeReference, TypeBareFn, TypeNever, TypeTup,
+             TypeArray, TypePtr, TypeReference, TypeBareFn, TypeNever, TypeTuple,
              TypePath, TypeTraitObject, TypeImplTrait, TypeParen, TypeInfer,
              TypeGroup, GenericArgument};
 #[cfg(feature = "printing")]
diff --git a/src/ty.rs b/src/ty.rs
index 8dd0a96..c4f9b53 100644
--- a/src/ty.rs
+++ b/src/ty.rs
@@ -37,7 +37,7 @@
             pub bang_token: Token![!],
         }),
         /// A tuple (`(A, B, C, D, ...)`)
-        pub Tup(TypeTup {
+        pub Tuple(TypeTuple {
             pub paren_token: tokens::Paren,
             pub tys: Delimited<Type, Token![,]>,
             pub lone_comma: Option<Token![,]>,
@@ -367,7 +367,7 @@
     named!(ambig_ty(allow_plus: bool) -> Type, alt!(
         syn!(TypeGroup) => { Type::Group }
         |
-        // must be before TypeTup
+        // must be before TypeTuple
         syn!(TypeParen) => { Type::Paren }
         |
         // must be before TypePath
@@ -388,7 +388,7 @@
         |
         syn!(TypeNever) => { Type::Never }
         |
-        syn!(TypeTup) => { Type::Tup }
+        syn!(TypeTuple) => { Type::Tuple }
         |
         // Don't try parsing more than one trait bound if we aren't allowing it
         call!(TypeTraitObject::parse, allow_plus) => { Type::TraitObject }
@@ -507,10 +507,10 @@
         ));
     }
 
-    impl Synom for TypeTup {
+    impl Synom for TypeTuple {
         named!(parse -> Self, do_parse!(
             data: parens!(call!(Delimited::parse_terminated)) >>
-            (TypeTup {
+            (TypeTuple {
                 tys: data.0,
                 paren_token: data.1,
                 lone_comma: None, // TODO: does this just not parse?
@@ -899,7 +899,7 @@
         }
     }
 
-    impl ToTokens for TypeTup {
+    impl ToTokens for TypeTuple {
         fn to_tokens(&self, tokens: &mut Tokens) {
             self.paren_token.surround(tokens, |tokens| {
                 self.tys.to_tokens(tokens);