//@ known-bug: #118603 //@ compile-flags: -Copt-level=0 // ignore-tidy-linelength #![feature(generic_const_exprs)] #[derive(Copy, Clone, Debug, PartialEq, Eq)] struct FlatTree; #[derive(Copy, Clone)] struct TreeLeaf; #[derive(Copy, Clone)] struct TreeNode(V, W); const fn const_concat(_: [FlatTree; A], _: [FlatTree; B]) -> [FlatTree; A + B] { [FlatTree; A + B] } struct Builder { ops: [FlatTree; N], builder: I, } fn create_node(a: Builder, b: Builder) -> Builder<{ N + M + 1 }, TreeNode> { Builder { ops: const_concat(const_concat::(a.ops, b.ops), [FlatTree]), builder: TreeNode(a.builder, b.builder), } } const LEAF: Builder<1, TreeLeaf> = Builder { ops: [FlatTree], builder: TreeLeaf, }; static INTERNAL_SIMPLE_BOOLEAN_TEMPLATES: &[fn()] = &[{ fn eval() { create_node(LEAF, create_node(LEAF, LEAF)); } eval }]; pub fn main() {}