[go: up one dir, main page]

aster 0.17.0

A libsyntax ast builder
use syntax::ast;
use syntax::codemap::{DUMMY_SP, Spanned};

use aster::AstBuilder;

#[test]
fn test_unit_variant() {
    let builder = AstBuilder::new();
    let variant = builder.variant("A").unit();

    assert_eq!(
        variant,
        Spanned {
            span: DUMMY_SP,
            node: ast::Variant_ {
                name: builder.id("A"),
                attrs: vec![],
                data: builder.variant_data().unit(),
                disr_expr: None,
            },
        }
    )
}

#[test]
fn test_tuple_variant() {
    let builder = AstBuilder::new();
    let variant = builder.variant("A").tuple()
        .ty().isize()
        .ty().isize()
        .build();

    assert_eq!(
        variant,
        Spanned {
            span: DUMMY_SP,
            node: ast::Variant_ {
                name: builder.id("A"),
                attrs: vec![],
                data: builder.variant_data().tuple()
                    .ty().isize()
                    .ty().isize()
                    .build(),
                disr_expr: None,
            },
        }
    )
}

#[test]
fn test_struct_variant() {
    let builder = AstBuilder::new();
    let variant = builder.variant("A").struct_()
        .field("a").ty().isize()
        .field("b").ty().isize()
        .build();

    assert_eq!(
        variant,
        Spanned {
            span: DUMMY_SP,
            node: ast::Variant_ {
                name: builder.id("A"),
                attrs: vec![],
                data: builder.variant_data().struct_()
                    .field("a").ty().isize()
                    .field("b").ty().isize()
                    .build(),
                disr_expr: None,
            },
        }
    )
}