mirror of
https://github.com/martinvonz/jj.git
synced 2024-10-23 23:10:01 +00:00
revset: add generation parameter to descendants node
This is a minimal change to replace Children with Descendants. A generation parameter could be added to RevsetExpression::DagRange, but it's not needed as of now.
This commit is contained in:
parent
f6570486e0
commit
a99b82c634
2 changed files with 19 additions and 4 deletions
|
@ -618,9 +618,14 @@ impl<'index> EvaluationContext<'index> {
|
|||
Ok(Box::new(RevWalkRevset { walk }))
|
||||
}
|
||||
}
|
||||
ResolvedExpression::DagRange { roots, heads } => {
|
||||
ResolvedExpression::DagRange {
|
||||
roots,
|
||||
heads,
|
||||
generation_from_roots,
|
||||
} => {
|
||||
let root_set = self.evaluate(roots)?;
|
||||
let head_set = self.evaluate(heads)?;
|
||||
assert_eq!(generation_from_roots, &GENERATION_RANGE_FULL); // TODO
|
||||
let (dag_range_set, _) = self.collect_dag_range(&*root_set, &*head_set);
|
||||
Ok(Box::new(dag_range_set))
|
||||
}
|
||||
|
|
|
@ -239,6 +239,7 @@ pub enum RevsetExpression {
|
|||
},
|
||||
Descendants {
|
||||
roots: Rc<RevsetExpression>,
|
||||
generation: Range<u64>,
|
||||
},
|
||||
// Commits that are ancestors of "heads" but not ancestors of "roots"
|
||||
Range {
|
||||
|
@ -250,6 +251,7 @@ pub enum RevsetExpression {
|
|||
DagRange {
|
||||
roots: Rc<RevsetExpression>,
|
||||
heads: Rc<RevsetExpression>,
|
||||
// TODO: maybe add generation_from_roots/heads?
|
||||
},
|
||||
Heads(Rc<RevsetExpression>),
|
||||
Roots(Rc<RevsetExpression>),
|
||||
|
@ -365,6 +367,7 @@ impl RevsetExpression {
|
|||
pub fn descendants(self: &Rc<RevsetExpression>) -> Rc<RevsetExpression> {
|
||||
Rc::new(RevsetExpression::Descendants {
|
||||
roots: self.clone(),
|
||||
generation: GENERATION_RANGE_FULL,
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -485,6 +488,7 @@ pub enum ResolvedExpression {
|
|||
DagRange {
|
||||
roots: Box<ResolvedExpression>,
|
||||
heads: Box<ResolvedExpression>,
|
||||
generation_from_roots: Range<u64>,
|
||||
},
|
||||
Heads(Box<ResolvedExpression>),
|
||||
Roots(Box<ResolvedExpression>),
|
||||
|
@ -1248,8 +1252,11 @@ fn try_transform_expression<E>(
|
|||
heads,
|
||||
generation: generation.clone(),
|
||||
}),
|
||||
RevsetExpression::Descendants { roots } => transform_rec(roots, pre, post)?
|
||||
.map(|roots| RevsetExpression::Descendants { roots }),
|
||||
RevsetExpression::Descendants { roots, generation } => transform_rec(roots, pre, post)?
|
||||
.map(|roots| RevsetExpression::Descendants {
|
||||
roots,
|
||||
generation: generation.clone(),
|
||||
}),
|
||||
RevsetExpression::Range {
|
||||
roots,
|
||||
heads,
|
||||
|
@ -1841,9 +1848,10 @@ impl VisibilityResolutionContext<'_> {
|
|||
heads: self.resolve(heads).into(),
|
||||
generation: generation.clone(),
|
||||
},
|
||||
RevsetExpression::Descendants { roots } => ResolvedExpression::DagRange {
|
||||
RevsetExpression::Descendants { roots, generation } => ResolvedExpression::DagRange {
|
||||
roots: self.resolve(roots).into(),
|
||||
heads: self.resolve_visible_heads().into(),
|
||||
generation_from_roots: generation.clone(),
|
||||
},
|
||||
RevsetExpression::Range {
|
||||
roots,
|
||||
|
@ -1857,6 +1865,7 @@ impl VisibilityResolutionContext<'_> {
|
|||
RevsetExpression::DagRange { roots, heads } => ResolvedExpression::DagRange {
|
||||
roots: self.resolve(roots).into(),
|
||||
heads: self.resolve(heads).into(),
|
||||
generation_from_roots: GENERATION_RANGE_FULL,
|
||||
},
|
||||
RevsetExpression::Heads(candidates) => {
|
||||
ResolvedExpression::Heads(self.resolve(candidates).into())
|
||||
|
@ -2199,6 +2208,7 @@ mod tests {
|
|||
foo_symbol.descendants(),
|
||||
Rc::new(RevsetExpression::Descendants {
|
||||
roots: foo_symbol.clone(),
|
||||
generation: GENERATION_RANGE_FULL,
|
||||
})
|
||||
);
|
||||
assert_eq!(
|
||||
|
|
Loading…
Reference in a new issue