mod element;
pub use element::{SyntaxElement, SyntaxElementRef};
mod node;
pub use node::SyntaxNode;
mod token;
pub use token::SyntaxToken;
mod resolved;
pub use resolved::{ResolvedElement, ResolvedElementRef, ResolvedNode, ResolvedToken};
mod iter;
pub use iter::{SyntaxElementChildren, SyntaxNodeChildren};
mod text;
pub use text::SyntaxText;
#[cfg(test)]
mod tests {
use super::*;
use crate::testing::*;
#[test]
#[cfg_attr(miri, ignore)]
fn assert_send_sync() {
fn f<T: Send + Sync>() {}
f::<SyntaxNode<TestSyntaxKind>>();
f::<SyntaxToken<TestSyntaxKind>>();
f::<SyntaxElement<TestSyntaxKind>>();
f::<SyntaxElementRef<'static, TestSyntaxKind>>();
f::<ResolvedNode<TestSyntaxKind>>();
f::<ResolvedToken<TestSyntaxKind>>();
f::<ResolvedElement<TestSyntaxKind>>();
f::<ResolvedElementRef<'static, TestSyntaxKind>>();
}
#[test]
#[cfg_attr(miri, ignore)]
#[rustfmt::skip]
fn assert_syntax_sizes() {
use std::mem::size_of;
assert_eq!(size_of::<SyntaxNode<TestSyntaxKind>>(), size_of::<*const u8>());
assert_eq!(size_of::<Option<SyntaxNode<TestSyntaxKind>>>(), size_of::<*const u8>());
assert_eq!(size_of::<SyntaxToken<TestSyntaxKind>>(), size_of::<SyntaxNode<TestSyntaxKind>>() + size_of::<u32>() * 2);
}
}