fix(tvix/eval/versions): preserve the Number string exactly
This is relevant for builtins.splitVersion: nix-repl> builtins.splitVersion "unstable-2022-02-21" [ "unstable" "2022" "02" "21" ] Change-Id: I0a0add178d95d5a82e112b41ed5f3ca5a19608f8 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6710 Reviewed-by: tazjin <tazjin@tvl.su> Tested-by: BuildkiteCI
This commit is contained in:
parent
6e6edcce6a
commit
834fe833e5
2 changed files with 5 additions and 6 deletions
|
@ -220,8 +220,7 @@ fn pure_builtins() -> Vec<Builtin> {
|
|||
let parts = s
|
||||
.map(|s| {
|
||||
Value::String(match s {
|
||||
// TODO(sterni): we should avoid converting back and forth here
|
||||
VersionPart::Number(n) => format!("{n}").into(),
|
||||
VersionPart::Number(n) => n.into(),
|
||||
VersionPart::Word(w) => w.into(),
|
||||
})
|
||||
})
|
||||
|
|
|
@ -6,7 +6,7 @@ use std::ops::RangeInclusive;
|
|||
#[derive(PartialEq, Eq, PartialOrd, Ord, Clone, Debug)]
|
||||
pub enum VersionPart<'a> {
|
||||
Word(&'a str),
|
||||
Number(u64),
|
||||
Number(&'a str),
|
||||
}
|
||||
|
||||
/// Type used to hold information about a VersionPart during creation
|
||||
|
@ -46,7 +46,7 @@ impl<'a> Iterator for VersionPartsIter<'a> {
|
|||
match cached_part {
|
||||
InternalPart::Break => return None,
|
||||
InternalPart::Number { range } => {
|
||||
return Some(VersionPart::Number(self.version[range].parse().unwrap()))
|
||||
return Some(VersionPart::Number(&self.version[range]))
|
||||
}
|
||||
InternalPart::Word { range } => {
|
||||
return Some(VersionPart::Word(&self.version[range]))
|
||||
|
@ -61,7 +61,7 @@ impl<'a> Iterator for VersionPartsIter<'a> {
|
|||
let cached_part = std::mem::replace(&mut self.cached_part, InternalPart::Break);
|
||||
match cached_part {
|
||||
InternalPart::Number { range } => {
|
||||
Some(VersionPart::Number(self.version[range].parse().unwrap()))
|
||||
Some(VersionPart::Number(&self.version[range]))
|
||||
}
|
||||
InternalPart::Word { range } => Some(VersionPart::Word(&self.version[range])),
|
||||
InternalPart::Break => self.next(),
|
||||
|
@ -98,7 +98,7 @@ impl<'a> Iterator for VersionPartsIter<'a> {
|
|||
self.next()
|
||||
}
|
||||
InternalPart::Number { range } => {
|
||||
Some(VersionPart::Number(self.version[range].parse().unwrap()))
|
||||
Some(VersionPart::Number(&self.version[range]))
|
||||
}
|
||||
InternalPart::Break => self.next(),
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue