mirror of
https://github.com/astral-sh/ruff.git
synced 2025-09-28 12:55:05 +00:00
Remove dependency on ruff_rowan
(#2875)
This PR removes the dependency on `ruff_rowan` (i.e., Rome's fork of rust-analyzer's `rowan`), and in turn, trims out a lot of code in `ruff_formatter` that isn't necessary (or isn't _yet_ necessary) to power the autoformatter. We may end up pulling some of this back in -- TBD. For example, the autoformatter has its own comment representation right now, but we may eventually want to use the `comments.rs` data structures defined in `rome_formatter`.
This commit is contained in:
parent
5a84df293f
commit
f661c90bd7
61 changed files with 39 additions and 17489 deletions
|
@ -4,10 +4,10 @@ pub mod tag;
|
|||
use crate::format_element::tag::{LabelId, Tag};
|
||||
use std::borrow::Cow;
|
||||
|
||||
use crate::{TagKind, TextSize};
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
use ruff_rowan::static_assert;
|
||||
use ruff_rowan::{SyntaxTokenText, TextRange};
|
||||
use crate::static_assert;
|
||||
use crate::{TagKind, TextSize};
|
||||
use ruff_text_size::TextRange;
|
||||
use std::hash::{Hash, Hasher};
|
||||
use std::ops::Deref;
|
||||
use std::rc::Rc;
|
||||
|
@ -41,15 +41,6 @@ pub enum FormatElement {
|
|||
/// Token constructed by slicing a defined range from a static string.
|
||||
StaticTextSlice { text: Rc<str>, range: TextRange },
|
||||
|
||||
/// A token for a text that is taken as is from the source code (input text and formatted representation are identical).
|
||||
/// Implementing by taking a slice from a `SyntaxToken` to avoid allocating a new string.
|
||||
SyntaxTokenTextSlice {
|
||||
/// The start position of the token in the unformatted source code
|
||||
source_position: TextSize,
|
||||
/// The token text
|
||||
slice: SyntaxTokenText,
|
||||
},
|
||||
|
||||
/// Prevents that line suffixes move past this boundary. Forces the printer to print any pending
|
||||
/// line suffixes, potentially by inserting a hard line break.
|
||||
LineSuffixBoundary,
|
||||
|
@ -81,10 +72,6 @@ impl std::fmt::Debug for FormatElement {
|
|||
FormatElement::StaticTextSlice { text, .. } => {
|
||||
fmt.debug_tuple("Text").field(text).finish()
|
||||
}
|
||||
FormatElement::SyntaxTokenTextSlice { slice, .. } => fmt
|
||||
.debug_tuple("SyntaxTokenTextSlice")
|
||||
.field(slice)
|
||||
.finish(),
|
||||
FormatElement::LineSuffixBoundary => write!(fmt, "LineSuffixBoundary"),
|
||||
FormatElement::BestFitting(best_fitting) => {
|
||||
fmt.debug_tuple("BestFitting").field(&best_fitting).finish()
|
||||
|
@ -230,8 +217,7 @@ impl FormatElement {
|
|||
pub const fn is_text(&self) -> bool {
|
||||
matches!(
|
||||
self,
|
||||
FormatElement::SyntaxTokenTextSlice { .. }
|
||||
| FormatElement::StaticTextSlice { .. }
|
||||
FormatElement::StaticTextSlice { .. }
|
||||
| FormatElement::DynamicText { .. }
|
||||
| FormatElement::StaticText { .. }
|
||||
)
|
||||
|
@ -251,7 +237,6 @@ impl FormatElements for FormatElement {
|
|||
FormatElement::StaticText { text } => text.contains('\n'),
|
||||
FormatElement::DynamicText { text, .. } => text.contains('\n'),
|
||||
FormatElement::StaticTextSlice { text, range } => text[*range].contains('\n'),
|
||||
FormatElement::SyntaxTokenTextSlice { slice, .. } => slice.contains('\n'),
|
||||
FormatElement::Interned(interned) => interned.will_break(),
|
||||
// Traverse into the most flat version because the content is guaranteed to expand when even
|
||||
// the most flat version contains some content that forces a break.
|
||||
|
@ -384,7 +369,7 @@ mod tests {
|
|||
}
|
||||
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
static_assert!(std::mem::size_of::<ruff_rowan::TextRange>() == 8usize);
|
||||
static_assert!(std::mem::size_of::<ruff_text_size::TextRange>() == 8usize);
|
||||
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
static_assert!(std::mem::size_of::<crate::format_element::tag::VerbatimKind>() == 8usize);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue