diff options
| author | kennytm <kennytm@gmail.com> | 2018-03-22 17:51:25 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-03-22 22:43:37 +0800 |
| commit | 8d3f3f0cac3de7dfbb126db3c48d7499c96d86ec (patch) | |
| tree | 1ea48d9447fff532f6598dee6899a42ec36a687c /src/libsyntax/test.rs | |
| parent | 245f4c4631401c9a25ed62e8f75b97607b3b38bb (diff) | |
| parent | 66d120cd263ea77a44fcde9409a71ac673a5262c (diff) | |
| download | rust-8d3f3f0cac3de7dfbb126db3c48d7499c96d86ec.tar.gz rust-8d3f3f0cac3de7dfbb126db3c48d7499c96d86ec.zip | |
Rollup merge of #49117 - nivkner:fixme_fixup3, r=estebank
address some FIXME whose associated issues were marked as closed part of #44366
Diffstat (limited to 'src/libsyntax/test.rs')
| -rw-r--r-- | src/libsyntax/test.rs | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/src/libsyntax/test.rs b/src/libsyntax/test.rs index 9edfa767d31..5264b627e96 100644 --- a/src/libsyntax/test.rs +++ b/src/libsyntax/test.rs @@ -628,8 +628,15 @@ fn path_node(ids: Vec<Ident>) -> ast::Path { } fn path_name_i(idents: &[Ident]) -> String { - // FIXME: Bad copies (#2543 -- same for everything else that says "bad") - idents.iter().map(|i| i.to_string()).collect::<Vec<String>>().join("::") + let mut path_name = "".to_string(); + let mut idents_iter = idents.iter().peekable(); + while let Some(ident) = idents_iter.next() { + path_name.push_str(&ident.name.as_str()); + if let Some(_) = idents_iter.peek() { + path_name.push_str("::") + } + } + path_name } fn mk_tests(cx: &TestCtxt) -> P<ast::Item> { @@ -682,7 +689,6 @@ fn mk_test_desc_and_fn_rec(cx: &TestCtxt, test: &Test) -> P<ast::Expr> { // gensym information. let span = ignored_span(cx, test.span); - let path = test.path.clone(); let ecx = &cx.ext_cx; let self_id = ecx.ident_of("self"); let test_id = ecx.ident_of("test"); @@ -694,10 +700,11 @@ fn mk_test_desc_and_fn_rec(cx: &TestCtxt, test: &Test) -> P<ast::Expr> { // creates $name: $expr let field = |name, expr| ecx.field_imm(span, ecx.ident_of(name), expr); - debug!("encoding {}", path_name_i(&path[..])); - // path to the #[test] function: "foo::bar::baz" - let path_string = path_name_i(&path[..]); + let path_string = path_name_i(&test.path[..]); + + debug!("encoding {}", path_string); + let name_expr = ecx.expr_str(span, Symbol::intern(&path_string)); // self::test::StaticTestName($name_expr) @@ -744,7 +751,7 @@ fn mk_test_desc_and_fn_rec(cx: &TestCtxt, test: &Test) -> P<ast::Expr> { diag.bug("expected to find top-level re-export name, but found None"); } }; - visible_path.extend(path); + visible_path.extend_from_slice(&test.path[..]); // Rather than directly give the test function to the test // harness, we create a wrapper like one of the following: |
