Update libsyntax tests.
This commit is contained in:
parent
e5024924ad
commit
56ba8feed6
2 changed files with 13 additions and 15 deletions
|
@ -856,7 +856,7 @@ mod tests {
|
||||||
|
|
||||||
#[test] fn parse_stmt_1 () {
|
#[test] fn parse_stmt_1 () {
|
||||||
assert!(string_to_stmt("b;".to_string()) ==
|
assert!(string_to_stmt("b;".to_string()) ==
|
||||||
P(Spanned{
|
Some(P(Spanned{
|
||||||
node: ast::StmtExpr(P(ast::Expr {
|
node: ast::StmtExpr(P(ast::Expr {
|
||||||
id: ast::DUMMY_NODE_ID,
|
id: ast::DUMMY_NODE_ID,
|
||||||
node: ast::ExprPath(None, ast::Path {
|
node: ast::ExprPath(None, ast::Path {
|
||||||
|
@ -871,7 +871,7 @@ mod tests {
|
||||||
}),
|
}),
|
||||||
span: sp(0,1)}),
|
span: sp(0,1)}),
|
||||||
ast::DUMMY_NODE_ID),
|
ast::DUMMY_NODE_ID),
|
||||||
span: sp(0,1)}))
|
span: sp(0,1)})))
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
// except according to those terms.
|
// except according to those terms.
|
||||||
|
|
||||||
use ast;
|
use ast;
|
||||||
use parse::{ParseSess,filemap_to_tts};
|
use parse::{ParseSess,PResult,filemap_to_tts};
|
||||||
use parse::new_parser_from_source_str;
|
use parse::new_parser_from_source_str;
|
||||||
use parse::parser::Parser;
|
use parse::parser::Parser;
|
||||||
use parse::token;
|
use parse::token;
|
||||||
|
@ -31,11 +31,11 @@ pub fn string_to_parser<'a>(ps: &'a ParseSess, source_str: String) -> Parser<'a>
|
||||||
}
|
}
|
||||||
|
|
||||||
fn with_error_checking_parse<T, F>(s: String, f: F) -> T where
|
fn with_error_checking_parse<T, F>(s: String, f: F) -> T where
|
||||||
F: FnOnce(&mut Parser) -> T,
|
F: FnOnce(&mut Parser) -> PResult<T>,
|
||||||
{
|
{
|
||||||
let ps = ParseSess::new();
|
let ps = ParseSess::new();
|
||||||
let mut p = string_to_parser(&ps, s);
|
let mut p = string_to_parser(&ps, s);
|
||||||
let x = f(&mut p);
|
let x = panictry!(f(&mut p));
|
||||||
p.abort_if_errors();
|
p.abort_if_errors();
|
||||||
x
|
x
|
||||||
}
|
}
|
||||||
|
@ -43,39 +43,37 @@ fn with_error_checking_parse<T, F>(s: String, f: F) -> T where
|
||||||
/// Parse a string, return a crate.
|
/// Parse a string, return a crate.
|
||||||
pub fn string_to_crate (source_str : String) -> ast::Crate {
|
pub fn string_to_crate (source_str : String) -> ast::Crate {
|
||||||
with_error_checking_parse(source_str, |p| {
|
with_error_checking_parse(source_str, |p| {
|
||||||
panictry!(p.parse_crate_mod())
|
p.parse_crate_mod()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a string, return an expr
|
/// Parse a string, return an expr
|
||||||
pub fn string_to_expr (source_str : String) -> P<ast::Expr> {
|
pub fn string_to_expr (source_str : String) -> P<ast::Expr> {
|
||||||
with_error_checking_parse(source_str, |p| {
|
with_error_checking_parse(source_str, |p| {
|
||||||
p.parse_expr()
|
p.parse_expr_nopanic()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a string, return an item
|
/// Parse a string, return an item
|
||||||
pub fn string_to_item (source_str : String) -> Option<P<ast::Item>> {
|
pub fn string_to_item (source_str : String) -> Option<P<ast::Item>> {
|
||||||
with_error_checking_parse(source_str, |p| {
|
with_error_checking_parse(source_str, |p| {
|
||||||
p.parse_item()
|
p.parse_item_nopanic()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a string, return a stmt
|
/// Parse a string, return a stmt
|
||||||
pub fn string_to_stmt(source_str : String) -> P<ast::Stmt> {
|
pub fn string_to_stmt(source_str : String) -> Option<P<ast::Stmt>> {
|
||||||
with_error_checking_parse(source_str, |p| {
|
with_error_checking_parse(source_str, |p| {
|
||||||
p.parse_stmt().unwrap()
|
p.parse_stmt_nopanic()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Parse a string, return a pat. Uses "irrefutable"... which doesn't
|
/// Parse a string, return a pat. Uses "irrefutable"... which doesn't
|
||||||
/// (currently) affect parsing.
|
/// (currently) affect parsing.
|
||||||
pub fn string_to_pat(source_str: String) -> P<ast::Pat> {
|
pub fn string_to_pat(source_str: String) -> P<ast::Pat> {
|
||||||
// Binding `sess` and `parser` works around dropck-injected
|
with_error_checking_parse(source_str, |p| {
|
||||||
// region-inference issues; see #25212, #22323, #22321.
|
p.parse_pat_nopanic()
|
||||||
let sess = ParseSess::new();
|
})
|
||||||
let mut parser = string_to_parser(&sess, source_str);
|
|
||||||
parser.parse_pat()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Convert a vector of strings to a vector of ast::Ident's
|
/// Convert a vector of strings to a vector of ast::Ident's
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue