From d75266f9677121d2d92065204aaae400fecd3e2b Mon Sep 17 00:00:00 2001 From: John Turner Date: Fri, 24 Oct 2025 21:32:41 -0400 Subject: [PATCH] support atoms with empty slot --- src/atom/mod.rs | 2 +- src/atom/parsers.rs | 9 ++++++++- 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, sub: Option, operator: Option, } 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(); + } }