]> git.lizzy.rs Git - rust.git/blob - src/librustc_ast_pretty/pprust/tests.rs
Add comment about the lack of `ExpnData` serialization for proc-macro crates
[rust.git] / src / librustc_ast_pretty / pprust / tests.rs
1 use super::*;
2
3 use rustc_ast::ast;
4 use rustc_ast::with_default_session_globals;
5 use rustc_span::source_map::respan;
6 use rustc_span::symbol::Ident;
7
8 fn fun_to_string(
9     decl: &ast::FnDecl,
10     header: ast::FnHeader,
11     name: Ident,
12     generics: &ast::Generics,
13 ) -> String {
14     to_string(|s| {
15         s.head("");
16         s.print_fn(decl, header, Some(name), generics);
17         s.end(); // Close the head box.
18         s.end(); // Close the outer box.
19     })
20 }
21
22 fn variant_to_string(var: &ast::Variant) -> String {
23     to_string(|s| s.print_variant(var))
24 }
25
26 #[test]
27 fn test_fun_to_string() {
28     with_default_session_globals(|| {
29         let abba_ident = Ident::from_str("abba");
30
31         let decl =
32             ast::FnDecl { inputs: Vec::new(), output: ast::FnRetTy::Default(rustc_span::DUMMY_SP) };
33         let generics = ast::Generics::default();
34         assert_eq!(
35             fun_to_string(&decl, ast::FnHeader::default(), abba_ident, &generics),
36             "fn abba()"
37         );
38     })
39 }
40
41 #[test]
42 fn test_variant_to_string() {
43     with_default_session_globals(|| {
44         let ident = Ident::from_str("principal_skinner");
45
46         let var = ast::Variant {
47             ident,
48             vis: respan(rustc_span::DUMMY_SP, ast::VisibilityKind::Inherited),
49             attrs: Vec::new(),
50             id: ast::DUMMY_NODE_ID,
51             data: ast::VariantData::Unit(ast::DUMMY_NODE_ID),
52             disr_expr: None,
53             span: rustc_span::DUMMY_SP,
54             is_placeholder: false,
55         };
56
57         let varstr = variant_to_string(&var);
58         assert_eq!(varstr, "principal_skinner");
59     })
60 }