Skip to content

Commit b15f709

Browse files
NavidQarfacebook-github-bot
authored andcommitted
buck2: tsets: expose children
Summary: TSIA. Reviewed By: cjhopman Differential Revision: D62312933 fbshipit-source-id: 9affe99c6379d476e45c123dcd3a8a4b95f94bef
1 parent 9069798 commit b15f709

File tree

2 files changed

+21
-1
lines changed
  • app
    • buck2_build_api_tests/src/interpreter/transitive_set
    • buck2_build_api/src/interpreter/rule_defs/transitive_set

2 files changed

+21
-1
lines changed

app/buck2_build_api/src/interpreter/rule_defs/transitive_set/transitive_set.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -578,4 +578,8 @@ fn transitive_set_methods(builder: &mut MethodsBuilder) {
578578
None => Value::new_none(),
579579
})
580580
}
581+
#[starlark(attribute)]
582+
fn children<'v>(this: ValueOf<'v, &'v TransitiveSet<'v>>) -> anyhow::Result<Vec<Value<'v>>> {
583+
Ok(this.typed.children.to_vec())
584+
}
581585
}

app/buck2_build_api_tests/src/interpreter/transitive_set/tests.rs

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -687,7 +687,23 @@ fn test_accessors() -> anyhow::Result<()> {
687687
688688
s2 = make_tset(FooSet, value = 1)
689689
assert_eq(s2.value, 1)
690-
"#
690+
691+
f4 = make_tset(FooSet, value = "baz")
692+
assert_eq([], f4.children)
693+
assert_eq([], [x.value for x in f4.children])
694+
695+
f3 = make_tset(FooSet, value = "bar", children = [f4])
696+
assert_eq([f4], f3.children)
697+
assert_eq(["baz"], [x.value for x in f3.children])
698+
699+
f2 = make_tset(FooSet, children = [f4, f3])
700+
assert_eq([f4, f3], f2.children)
701+
assert_eq(["baz", "bar"], [x.value for x in f2.children])
702+
703+
f1 = make_tset(FooSet, children = [f4, f3, f2])
704+
assert_eq([f4, f3, f2], f1.children)
705+
assert_eq(["baz", "bar"], filter(None, [x.value for x in f1.children]))
706+
"#
691707
))?;
692708

693709
Ok(())

0 commit comments

Comments
 (0)