use crate::syntax::Parsed;
use crate::syntax::SyntaxKind;
use crate::syntax::SyntaxToken;
use crate::text::TextRange;
#[derive(Debug, Clone, Copy)]
pub struct TokenRef<'a> {
parsed: &'a Parsed,
token: &'a SyntaxToken,
}
impl<'a> TokenRef<'a> {
pub fn new(parsed: &'a Parsed, token: &'a SyntaxToken) -> Self {
Self { parsed, token }
}
pub fn syntax(&self) -> &'a SyntaxToken {
self.token
}
pub fn kind(&self) -> SyntaxKind {
self.token.kind()
}
pub fn range(&self) -> TextRange {
self.token.range()
}
pub fn is_missing(&self) -> bool {
self.token.is_missing()
}
pub fn text(&self) -> &'a str {
self.token.text(self.parsed.source())
}
}