blob: 62706b1d59c0aca67c9616f357a7e72c27efcf43 [file]
// ISSUE: KT-83308, fixed in 2.4.0-Beta1
// IGNORE_KLIB_BACKEND_ERRORS_WITH_CUSTOM_SECOND_STAGE: Native:2.3
interface Node
internal class NodeImpl : Node
interface BsonNode : Node {
override fun toString(): String
}
abstract class AbstractBsonNode private constructor(
private val node: NodeImpl,
) : Node by node, BsonNode {
constructor() : this(NodeImpl())
final override fun toString(): String = "OK"
}
interface CompoundNode<N : Node>
interface CompoundBsonNode : BsonNode, CompoundNode<BsonNode>
abstract class AbstractCompoundBsonNode() : AbstractBsonNode(), CompoundBsonNode
//------
interface ValueOperators
interface ValueAccumulators<From : Any, Into : Any> : ValueOperators, CompoundBsonNode
interface ArithmeticValueAccumulators<From : Any, Into : Any> : ValueAccumulators<From, Into>
interface AggregationOperators : ValueOperators
interface AccumulationOperators<From : Any, Into : Any> : ValueAccumulators<From, Into>,
AggregationOperators,
ArithmeticValueAccumulators<From, Into>
internal class AccumulationOperatorsImpl<From : Any, Into : Any>(
) : AbstractCompoundBsonNode(),
AccumulationOperators<From, Into>
//------
internal fun <Document : Any, Out : Any> group() = AccumulationOperatorsImpl<Document, Out>()
fun box(): String {
return group<String, String>().toString()
}