diff --git a/src/parse.rs b/src/parse.rs
index 924a3ca1664c34daab76a6bd845d9768b4e0c473..48c2e6edda2f03d8c4631076f02db5ace5e67db7 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -510,7 +510,7 @@ fn ips(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Ips> {
                                 bail!("expected `fn` Ident, found {:?}", tt);
                             }
                             ty_arg = Some(::parse::delimited(&mut tts, DelimToken::Paren, |tts| {
-                                Ok(syn::parse_type(&format!("{}", quote!(#(#tts)*)))?)
+                                Ok(syn::parse_type(&format!("({})", quote!(#(#tts)*)))?)
                             })?);
 
                             let tt = tts.peek().cloned();
@@ -596,11 +596,14 @@ fn ops(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Ops> {
             let ty_arg = Some(::parse::delimited(
                 &mut tts,
                 DelimToken::Paren,
-                |tts| if tts.is_empty() {
-                    Ok(Ty::Tup(vec![]))
-                } else {
-                    Ok(syn::parse_type(&format!("{}", quote!(#(#tts)*)))?)
-                },
+                |tts| 
+                Ok(syn::parse_type(&format!("({})", quote!(#(#tts)*)))?)
+//                if tts.is_empty() {
+//                    Ok(Ty::Tup(vec![]))
+//                } else {
+//                    Ok(syn::parse_type(&format!("({})", quote!(#(#tts)*)))?)
+//                },
+                
             )?);
 
             let tt = tts.peek().cloned();