diff --git a/src/parse.rs b/src/parse.rs
index 57bd9e8..05d7a75 100644
--- a/src/parse.rs
+++ b/src/parse.rs
@@ -491,8 +491,13 @@ where
}
// Parse a code point or character class.
- let Some(first) = self.try_consume_bracket_class_atom()? else {
- continue;
+ let first = match self.try_consume_bracket_class_atom()? {
+ Some((first, None)) => first,
+ Some((first, Some(second))) => {
+ add_class_atom(&mut result, first);
+ second
+ }
+ _ => continue,
};
// Check for a dash; we may have a range.
@@ -501,7 +506,7 @@ where
continue;
}
- let Some(second) = self.try_consume_bracket_class_atom()? else {
+ let Some((second, third)) = self.try_consume_bracket_class_atom()? else {
// No second atom. For example: [a-].
add_class_atom(&mut result, first);
add_class_atom(&mut result, ClassAtom::CodePoint(u32::from('-')));
@@ -520,6 +525,11 @@ where
first: *c1,
last: *c2,
});
+
+ if let Some(third) = third {
+ add_class_atom(&mut result, third);
+ }
+
continue;
}
@@ -534,7 +544,9 @@ where
}
}
- fn try_consume_bracket_class_atom(&mut self) -> Result