Parse the publicly exported types directly
diff --git a/src/stable.rs b/src/stable.rs
index 047e630..68e4e33 100644
--- a/src/stable.rs
+++ b/src/stable.rs
@@ -42,7 +42,7 @@
if skip_whitespace(input).len() != 0 {
Err(LexError)
} else {
- Ok(output)
+ Ok(output.0)
}
}
Err(LexError) => Err(LexError),
@@ -327,8 +327,10 @@
}
}
-named!(token_stream -> TokenStream,
- map!(many0!(token_tree), |trees| TokenStream { inner: trees }));
+named!(token_stream -> ::TokenStream, map!(
+ many0!(token_tree),
+ |trees| ::TokenStream(TokenStream { inner: trees })
+));
named!(token_tree -> TokenTree,
map!(token_kind, |s: TokenKind| {
@@ -339,16 +341,16 @@
}));
named!(token_kind -> TokenKind, alt!(
- map!(delimited, |(d, s)| TokenKind::Sequence(d, ::TokenStream(s)))
+ map!(delimited, |(d, s)| TokenKind::Sequence(d, s))
|
- map!(literal, |l| TokenKind::Literal(::Literal(l))) // must be before symbol
+ map!(literal, TokenKind::Literal) // must be before symbol
|
- map!(symbol, |w| TokenKind::Word(::Symbol(w)))
+ map!(symbol, TokenKind::Word)
|
map!(op, |(op, kind)| TokenKind::Op(op, kind))
));
-named!(delimited -> (Delimiter, TokenStream), alt!(
+named!(delimited -> (Delimiter, ::TokenStream), alt!(
delimited!(
punct!("("),
token_stream,
@@ -368,19 +370,19 @@
) => { |ts| (Delimiter::Brace, ts) }
));
-named!(symbol -> Symbol, alt!(
+named!(symbol -> ::Symbol, alt!(
lifetime
|
- map!(word, Symbol::from)
+ map!(word, ::Symbol::from)
));
-named!(lifetime -> Symbol, preceded!(
+named!(lifetime -> ::Symbol, preceded!(
punct!("'"),
alt!(
// TODO: can we get rid of this allocation?
- map!(word, |id| Symbol::from(&format!("'{}", id)[..]))
+ map!(word, |id| ::Symbol::from(format!("'{}", id)))
|
- map!(keyword!("static"), |_| Symbol::from("'static"))
+ map!(keyword!("static"), |_| ::Symbol::from("'static"))
)
));
@@ -402,7 +404,7 @@
Ok(("", input))
}
-fn literal(input: &str) -> PResult<Literal> {
+fn literal(input: &str) -> PResult<::Literal> {
let input_no_ws = skip_whitespace(input);
match literal_nocapture(input_no_ws) {
@@ -410,7 +412,7 @@
let start = input.len() - input_no_ws.len();
let len = input_no_ws.len() - a.len();
let end = start + len;
- Ok((a, Literal(input[start..end].to_string())))
+ Ok((a, ::Literal(Literal(input[start..end].to_string()))))
}
Err(LexError) => Err(LexError),
}