mirror of
https://github.com/astral-sh/ruff.git
synced 2025-07-24 13:33:50 +00:00
Remove type parameter from parse_*
methods (#9466)
This commit is contained in:
parent
25bafd2d66
commit
f192c72596
13 changed files with 98 additions and 84 deletions
46
crates/ruff_python_parser/src/token_source.rs
Normal file
46
crates/ruff_python_parser/src/token_source.rs
Normal file
|
@ -0,0 +1,46 @@
|
|||
use crate::lexer::LexResult;
|
||||
use crate::Tok;
|
||||
use std::iter::FusedIterator;
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub(crate) struct TokenSource {
|
||||
tokens: std::vec::IntoIter<LexResult>,
|
||||
}
|
||||
|
||||
impl TokenSource {
|
||||
pub(crate) fn new(tokens: Vec<LexResult>) -> Self {
|
||||
Self {
|
||||
tokens: tokens.into_iter(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FromIterator<LexResult> for TokenSource {
|
||||
#[inline]
|
||||
fn from_iter<T: IntoIterator<Item = LexResult>>(iter: T) -> Self {
|
||||
Self::new(Vec::from_iter(iter))
|
||||
}
|
||||
}
|
||||
|
||||
impl Iterator for TokenSource {
|
||||
type Item = LexResult;
|
||||
|
||||
#[inline]
|
||||
fn next(&mut self) -> Option<Self::Item> {
|
||||
loop {
|
||||
let next = self.tokens.next()?;
|
||||
|
||||
if is_trivia(&next) {
|
||||
continue;
|
||||
}
|
||||
|
||||
break Some(next);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl FusedIterator for TokenSource {}
|
||||
|
||||
const fn is_trivia(result: &LexResult) -> bool {
|
||||
matches!(result, Ok((Tok::Comment(_) | Tok::NonLogicalNewline, _)))
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue