pijul nest
guest [sign in]

Fixing a bug in alternatives parsing

pmeunier
Jun 8, 2025, 11:12 PM
SZR4KJ4GRMVLZT6655XVJCHG4TEP7QRHOZ4DJFAEKB5K7U7N33GAC

Dependencies

  • [2] ODUDDQRY Adding the OCaml interface
  • [3] SI454P2V Documentation and cleanup
  • [4] UWQB743K First working shell (with ocaml code)

Change contents

  • edit in src/deb.rs at line 240
    [3.43469]
    [3.43469]
    let mut alt_is_open = false;
  • edit in src/deb.rs at line 242
    [3.43513][3.43513:43551]()
    debug!("parse_dep {:?}", d_);
  • replacement in src/deb.rs at line 246
    [3.43707][3.43707:43796]()
    match d.pop() {
    Some(Dep::Alternatives { ref mut alt }) => {
    [3.43707]
    [3.43796]
    alt_is_open = true;
    if let Dep::Simple(d_) = d_ {
    if let Some(Dep::Alternatives { ref mut alt }) = d.last_mut() {
    alt.push(d_)
    } else {
    d.push(Dep::Alternatives { alt: vec![d_] })
    }
    } else {
    panic!("{:?}", s);
    }
    } else if let Ok((s_, _)) = tag::<_, _, ()>(",").parse(s_) {
    if alt_is_open {
    if let Some(Dep::Alternatives { ref mut alt }) = d.last_mut() {
  • edit in src/deb.rs at line 261
    [3.43883]
    [3.43883]
    } else {
    panic!("{:?}", s);
  • replacement in src/deb.rs at line 265
    [3.43923][2.39364:39484]()
    p => {
    if let Some(p) = p {
    d.push(p)
    }
    [3.43923]
    [3.43946]
    } else {
    d.push(d_)
    }
    alt_is_open = false;
    s = s_;
    } else {
    if alt_is_open {
    if let Some(Dep::Alternatives { ref mut alt }) = d.last_mut() {
  • replacement in src/deb.rs at line 274
    [3.43996][3.43996:44064]()
    d.push(Dep::Alternatives { alt: vec![d_] })
    [3.43996]
    [2.39485]
    alt.push(d_)
  • replacement in src/deb.rs at line 276
    [2.39514][2.39514:39569]()
    panic!("Alternatives {:?}", s)
    [2.39514]
    [3.44064]
    panic!("{:?}", s);
  • edit in src/deb.rs at line 279
    [3.44104]
    [3.44104]
    } else {
    d.push(d_)
  • edit in src/deb.rs at line 282
    [3.44118][3.44118:44211]()
    } else if let Ok((s_, _)) = tag::<_, _, ()>(",").parse(s_) {
    d.push(d_);
  • edit in src/deb.rs at line 283
    [3.44231][3.44231:44292]()
    } else {
    d.push(d_);
    s = s_;