[go: up one dir, main page]

aster 0.17.0

A libsyntax ast builder
use syntax::ast;
use syntax::ptr::P;

use aster::AstBuilder;

#[test]
fn test_empty() {
    let builder = AstBuilder::new();
    let generics = builder.generics().build();

    assert_eq!(
        generics,
        ast::Generics {
            lifetimes: vec![],
            ty_params: P::new(),
            where_clause: ast::WhereClause {
                id: ast::DUMMY_NODE_ID,
                predicates: vec![],
            },
        }
    );
}

#[test]
fn test_with_ty_params_and_lifetimes() {
    let builder = AstBuilder::new();
    let generics = builder.generics()
        .lifetime("'a").build()
        .lifetime("'b").bound("'a").build()
        .ty_param("T").lifetime_bound("'a").build()
        .build();

    assert_eq!(
        generics,
        ast::Generics {
            lifetimes: vec![
                builder.lifetime_def("'a").build(),
                builder.lifetime_def("'b").bound("'a").build(),
            ],
            ty_params: P::from_vec(vec![
                builder.ty_param("T").lifetime_bound("'a").build(),
            ]),
            where_clause: ast::WhereClause {
                id: ast::DUMMY_NODE_ID,
                predicates: vec![],
            },
        }
    );
}