swc/crates/swc_visit/tests/arc.rs
Donny/강동윤 e48263b2f3
refactor(visit): Remove &dyn Node from Visit (#2984)
swc_visit_macros:
 - Remove `&dyn Node` from `Visit`.
 - Implement `VisitWith<V>` for `[T]`.
2021-12-07 14:34:16 +09:00

45 lines
817 B
Rust

use std::sync::Arc;
use swc_visit::define;
pub struct Item {
pub item: Option<Arc<Item>>,
pub ref_to_enum: Option<Arc<Enum>>,
}
pub enum Enum {
Item(Arc<Item>),
Items(Arc<Vec<Item>>),
Enum(Arc<Enum>),
Enums(Arc<Vec<Enum>>),
}
define!({
pub struct Item {
pub item: Option<Arc<Item>>,
pub ref_to_enum: Option<Arc<Enum>>,
}
pub enum Enum {
Item(Arc<Item>),
Items(Arc<Vec<Item>>),
Enum(Arc<Enum>),
Enums(Arc<Vec<Enum>>),
}
});
struct Panic;
impl Visit for Panic {
fn visit_item(&mut self, _: &Item) {
panic!("Success")
}
}
#[test]
#[should_panic(expected = "Success")]
fn test_panic() {
Enum::Item(Arc::new(Item {
item: None,
ref_to_enum: None,
}))
.visit_children_with(&mut Panic)
}