summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/atom/mod.rs2
-rw-r--r--src/atom/parsers.rs9
2 files changed, 9 insertions, 2 deletions
diff --git a/src/atom/mod.rs b/src/atom/mod.rs
index f5884bc..07ccd0f 100644
--- a/src/atom/mod.rs
+++ b/src/atom/mod.rs
@@ -63,7 +63,7 @@ pub struct SlotName(#[get(method = "name")] String);
#[derive(Clone, Debug, PartialEq, Eq, Get)]
pub struct Slot {
- slot: SlotName,
+ slot: Option<SlotName>,
sub: Option<SlotName>,
operator: Option<SlotOperator>,
}
diff --git a/src/atom/parsers.rs b/src/atom/parsers.rs
index 4bc27ce..65cce04 100644
--- a/src/atom/parsers.rs
+++ b/src/atom/parsers.rs
@@ -112,7 +112,7 @@ pub fn slotname<'a>() -> impl Parser<&'a str, Output = SlotName> {
}
pub fn slot<'a>() -> impl Parser<&'a str, Output = Slot> {
- slotname()
+ opt(slotname())
.and(opt(slotname().preceded_by(tag("/"))))
.and(opt(slot_operator()))
.map(|((slot, sub), operator)| Slot {
@@ -273,4 +273,11 @@ mod test {
assert!(atom().check_finished(it).is_err())
}
+
+ #[test]
+ fn test_empty_slot() {
+ let it = InputIter::new("foo/bar-1.0.0:=");
+
+ atom().check_finished(it).unwrap();
+ }
}