diff --git a/Cargo.lock b/Cargo.lock index 889af1b55e11..25ca7f0f69be 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -168,7 +168,7 @@ dependencies = [ "crossbeam", "dashmap", "hdrhistogram", - "indexmap 1.9.3", + "indexmap 2.2.6", "insta", "lazy_static", "libc", @@ -209,7 +209,7 @@ dependencies = [ "biome_json_syntax", "biome_rowan", "bpaf", - "indexmap 1.9.3", + "indexmap 2.2.6", "insta", "oxc_resolver", "rustc-hash", @@ -326,7 +326,7 @@ dependencies = [ "biome_json_syntax", "biome_rowan", "bitflags 2.5.0", - "indexmap 1.9.3", + "indexmap 2.2.6", "schemars", "serde", ] @@ -401,7 +401,7 @@ dependencies = [ "cfg-if", "countme", "drop_bomb", - "indexmap 1.9.3", + "indexmap 2.2.6", "insta", "rustc-hash", "schemars", @@ -437,7 +437,7 @@ dependencies = [ "biome_diagnostics", "crossbeam", "directories", - "indexmap 1.9.3", + "indexmap 2.2.6", "oxc_resolver", "parking_lot", "rayon", @@ -654,7 +654,7 @@ dependencies = [ "bitflags 2.5.0", "drop_bomb", "expect-test", - "indexmap 1.9.3", + "indexmap 2.2.6", "quickcheck", "quickcheck_macros", "rustc-hash", @@ -917,7 +917,7 @@ dependencies = [ "dashmap", "getrandom 0.2.14", "ignore", - "indexmap 1.9.3", + "indexmap 2.2.6", "insta", "lazy_static", "oxc_resolver", @@ -1959,9 +1959,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.3" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ "equivalent", "hashbrown 0.14.3", @@ -2384,7 +2384,7 @@ checksum = "47777510a49fc554e7fb33101b67b6dc0bca28ea6d6fa852c113241e433a9e89" dependencies = [ "dashmap", "dunce", - "indexmap 2.2.3", + "indexmap 2.2.6", "json-strip-comments", "once_cell", "rustc-hash", @@ -2950,7 +2950,7 @@ version = "1.0.116" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -2991,7 +2991,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "itoa", "ryu", "serde", @@ -3340,7 +3340,7 @@ version = "0.22.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" dependencies = [ - "indexmap 2.2.3", + "indexmap 2.2.6", "serde", "serde_spanned", "toml_datetime", diff --git a/Cargo.toml b/Cargo.toml index 13121c276fa3..32c1e5ab008e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -158,7 +158,7 @@ crossbeam = "0.8.4" dashmap = "5.4.0" getrandom = "0.2.14" ignore = "0.4.21" -indexmap = "1.9.3" +indexmap = { version = "2.2.6", features = ["serde"] } insta = "1.38.0" lazy_static = "1.4.0" oxc_resolver = "1.4.0" diff --git a/crates/biome_deserialize/src/string_set.rs b/crates/biome_deserialize/src/string_set.rs index 7a99fbc9dee8..069142eb7fbe 100644 --- a/crates/biome_deserialize/src/string_set.rs +++ b/crates/biome_deserialize/src/string_set.rs @@ -2,16 +2,14 @@ use crate::{self as biome_deserialize, Merge}; use biome_deserialize_macros::Deserializable; use indexmap::set::IntoIter; use indexmap::IndexSet; -use serde::de::{SeqAccess, Visitor}; -use serde::ser::SerializeSeq; -use serde::{Deserialize, Serialize}; use std::ops::{Deref, DerefMut}; use std::str::FromStr; -// To implement serde's traits, we encapsulate `IndexSet` in a new type `StringSet`. +// To implement schemars trait, we encapsulate `IndexSet` in a new type `StringSet`. -#[derive(Clone, Default, Debug, Deserializable, Eq, PartialEq)] -#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))] +#[derive( + Clone, Default, Debug, Deserializable, Eq, PartialEq, serde::Deserialize, serde::Serialize, +)] pub struct StringSet(IndexSet); impl StringSet { @@ -35,6 +33,17 @@ impl StringSet { } } +#[cfg(feature = "schema")] +impl schemars::JsonSchema for StringSet { + fn schema_name() -> String { + String::from("StringSet") + } + + fn json_schema(gen: &mut schemars::gen::SchemaGenerator) -> schemars::schema::Schema { + >::json_schema(gen) + } +} + impl Deref for StringSet { type Target = IndexSet; @@ -57,35 +66,6 @@ impl FromStr for StringSet { } } -impl<'de> Deserialize<'de> for StringSet { - fn deserialize(deserializer: D) -> Result - where - D: serde::Deserializer<'de>, - { - struct IndexVisitor; - impl<'de> Visitor<'de> for IndexVisitor { - type Value = IndexSet; - - // Format a message stating what data this Visitor expects to receive. - fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::Result { - formatter.write_str("expecting a sequence") - } - - fn visit_seq(self, mut seq: A) -> Result - where - A: SeqAccess<'de>, - { - let mut index_set = IndexSet::with_capacity(seq.size_hint().unwrap_or(0)); - while let Some(value) = seq.next_element()? { - index_set.insert(value); - } - Ok(index_set) - } - } - deserializer.deserialize_seq(IndexVisitor).map(StringSet) - } -} - impl FromIterator for StringSet { fn from_iter>(iter: T) -> Self { StringSet::new(IndexSet::from_iter(iter)) @@ -106,16 +86,3 @@ impl Merge for StringSet { self.extend(other) } } - -impl Serialize for StringSet { - fn serialize(&self, serializer: S) -> Result - where - S: serde::Serializer, - { - let mut sequence = serializer.serialize_seq(Some(self.len()))?; - for item in self.0.iter() { - sequence.serialize_element(&item)?; - } - sequence.end() - } -} diff --git a/crates/biome_formatter/src/printed_tokens.rs b/crates/biome_formatter/src/printed_tokens.rs index 2acfc5484fb0..6405cc5bcf99 100644 --- a/crates/biome_formatter/src/printed_tokens.rs +++ b/crates/biome_formatter/src/printed_tokens.rs @@ -66,7 +66,7 @@ impl PrintedTokens { let mut offsets = self.offsets.clone(); for token in root.descendants_tokens(Direction::Next) { - if !offsets.remove(&token.text_trimmed_range().start()) { + if !offsets.shift_remove(&token.text_trimmed_range().start()) { panic!("token has not been seen by the formatter: {token:#?}.\ \nUse `format_replaced` if you want to replace a token from the formatted output.\ \nUse `format_removed` if you want to remove a token from the formatted output.\n\