Skip to content
Snippets Groups Projects
Commit 5dc775d9 authored by Per Lindgren's avatar Per Lindgren
Browse files

opional arguments

parent ae4d120d
Branches
No related tags found
No related merge requests found
......@@ -115,7 +115,7 @@ pub enum IpTo {
}
/// `$($Ident: Ident ($Ty) -> $Ty )*`
pub type Ips = HashMap<Ident, (Ident, Ty, Ty)>;
pub type Ips = HashMap<Ident, (Option<Ty>, Ty)>;
/// `$($Ident: $Ty = $Expr < $Path,)*`
pub type Ops = HashMap<Ident, (Ty, Expr, Path)>;
......
......@@ -496,7 +496,7 @@ fn ips(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Ips> {
bail!("expected Colon, found {:?}", tt);
}
let mut ty_arg = syn::parse_type(&"()")?;
let mut ty_arg = None;
let mut ty_ret = syn::parse_type(&"()")?;
let _ = ::parse::delimited(&mut tts, DelimToken::Brace, |tts| {
fields(&tts, |key, mut tts| {
......@@ -508,9 +508,9 @@ fn ips(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Ips> {
} else {
bail!("expected `fn` Ident, found {:?}", tt);
}
ty_arg = ::parse::delimited(&mut tts, DelimToken::Paren, |tts| {
ty_arg = Some(::parse::delimited(&mut tts, DelimToken::Paren, |tts| {
Ok(syn::parse_type(&format!("{}", quote!(#(#tts)*)))?)
})?;
})?);
let tt = tts.peek().cloned();
let ty_ret: Result<Ty> = match tt {
......@@ -538,50 +538,8 @@ fn ips(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Ips> {
Some(&TokenTree::Token(Token::Comma)) => {}
_ => bail!("expected Comma, found {:?}", tt),
}
// Ok(()))?;
//
//
// let tt = tts.next();
// if let Some(&TokenTree::Token(Token::Colon)) = tt {
// } else {
// bail!("expected Colon, found {:?}", tt);
// }
//
// let tt = tts.next();
// let meth =
// if let Some(&TokenTree::Token(Token::Ident(ref id))) = tt {
// id
// } else {
// bail!("expected Ident, found {:?}", tt);
// };
//
// //let ty_param: Result<Ty> =
// let ty_param =
// ::parse::delimited(&mut tts, DelimToken::Paren, |tts| {
// Ok(syn::parse_type(&format!("{}", quote!(#(#tts)*)))?)
// })?;
//
//
// let tt = tts.next();
// // let ty_return: Result<Ty> = Ok(syn::parse_type(&"()")?);
// let ty_return: Result<Ty> = match tt {
// Some(&TokenTree::Token(Token::Comma)) => {
// tts.next();
// Ok(syn::parse_type(&"()")?)
// }
// Some(&TokenTree::Token(Token::RArrow)) => {
// ::parse::ty(&TokenTree::Token(Token::Comma), &mut tts)
// }
// _ => bail!("expected `-> Type,' or `,` found {:?}", tt),
// };
//
// //let tt = tts.next();
// // if let Some(&TokenTree::Token(Token::Comma)) = tt {
// // } else {
// // bail!("expected Comma, found {:?}", tt);
// // };
//
// ips.insert(ident.clone(), (meth.clone(), ty_param, ty_return?));
ips.insert(ident.clone(), (ty_arg, ty_ret));
}
Ok(ips)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment