Charlie Tapping
02/17/2023, 2:43 PMinterface SynkAdapter<T : Any> : IDResolver<T>, MapEncoder<T>
An impl like this does not count as the aggregated type (SynkAdapter)
class FooSynkAdapter(
private val fooResolver: IDResolver<Foo> = FooResolver(),
private val fooMapEncoder: MapEncoder<Foo> = FooMapEncoder()
) : IDResolver<Foo> by fooResolver, MapEncoder<Foo> by fooMapEncoder
You have to do this??
class FooSynkAdapter(
private val fooResolver: IDResolver<Foo> = FooResolver(),
private val fooMapEncoder: MapEncoder<Foo> = FooMapEncoder()
) : SynkAdapter<Foo>, IDResolver<Foo> by fooResolver, MapEncoder<Foo> by fooMapEncoder
Surely if an interface is just a union of two other interfaces then implementing those interfaces should make it compatible? I’m sure there must be a good reason for having to be explicit?Sam
02/17/2023, 2:46 PMVampire
02/17/2023, 2:47 PMCharlie Tapping
02/17/2023, 2:51 PMSam
02/17/2023, 2:52 PMCharlie Tapping
02/17/2023, 2:52 PMSam
02/17/2023, 2:53 PMfun <A, B> doSomethingWith(a: A) where A: IDResolver<B>, A: MapEncoder<B>
Charlie Tapping
02/17/2023, 2:59 PMSam
02/17/2023, 3:00 PMVampire
02/17/2023, 3:20 PMSnykAdapter
type with that change either 🙂Sam
02/17/2023, 3:24 PMtypealias SynkAdapter<T> = IDResolver<T> & MapEncoder<T>
Just that SynkAdapter
wouldn’t be an actual type