Skip to content

Commit 2293a04

Browse files
committed
libsyntax: Add tests for parse_view_item
1 parent 7ef2007 commit 2293a04

File tree

2 files changed

+33
-1
lines changed

2 files changed

+33
-1
lines changed

src/libsyntax/parse/mod.rs

+26-1
Original file line numberDiff line numberDiff line change
@@ -730,10 +730,11 @@ mod test {
730730
use attr::AttrMetaMethods;
731731
use parse::parser::Parser;
732732
use parse::token::{str_to_ident};
733+
use print::pprust::view_item_to_string;
733734
use ptr::P;
734735
use util::parser_testing::{string_to_tts, string_to_parser};
735736
use util::parser_testing::{string_to_expr, string_to_item};
736-
use util::parser_testing::string_to_stmt;
737+
use util::parser_testing::{string_to_stmt, string_to_view_item};
737738

738739
// produce a codemap::span
739740
fn sp(a: u32, b: u32) -> Span {
@@ -1083,6 +1084,30 @@ mod test {
10831084
span: sp(0,21)})));
10841085
}
10851086

1087+
#[test] fn parse_use() {
1088+
let use_s = "use foo::bar::baz;";
1089+
let vitem = string_to_view_item(use_s.to_string());
1090+
let vitem_s = view_item_to_string(&vitem);
1091+
assert_eq!(vitem_s.as_slice(), use_s);
1092+
1093+
let use_s = "use foo::bar as baz;";
1094+
let vitem = string_to_view_item(use_s.to_string());
1095+
let vitem_s = view_item_to_string(&vitem);
1096+
assert_eq!(vitem_s.as_slice(), use_s);
1097+
}
1098+
1099+
#[test] fn parse_extern_crate() {
1100+
let ex_s = "extern crate foo;";
1101+
let vitem = string_to_view_item(ex_s.to_string());
1102+
let vitem_s = view_item_to_string(&vitem);
1103+
assert_eq!(vitem_s.as_slice(), ex_s);
1104+
1105+
let ex_s = "extern crate \"foo\" as bar;";
1106+
let vitem = string_to_view_item(ex_s.to_string());
1107+
let vitem_s = view_item_to_string(&vitem);
1108+
assert_eq!(vitem_s.as_slice(), ex_s);
1109+
}
1110+
10861111
fn get_spans_of_pat_idents(src: &str) -> Vec<Span> {
10871112
let item = string_to_item(src.to_string()).unwrap();
10881113

src/libsyntax/util/parser_testing.rs

+7
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,13 @@ pub fn string_to_stmt(source_str : String) -> P<ast::Stmt> {
6767
})
6868
}
6969

70+
/// Parse a string, return a view item
71+
pub fn string_to_view_item (source_str : String) -> ast::ViewItem {
72+
with_error_checking_parse(source_str, |p| {
73+
p.parse_view_item(Vec::new())
74+
})
75+
}
76+
7077
/// Parse a string, return a pat. Uses "irrefutable"... which doesn't
7178
/// (currently) affect parsing.
7279
pub fn string_to_pat(source_str: String) -> P<ast::Pat> {

0 commit comments

Comments
 (0)