1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
trait Document {
sealed trait FieldBase
trait StaticFieldBase extends FieldBase with StaticDocument
trait DynamicFieldBase extends FieldBase with DynamicDocument
}
sealed trait StaticDocument extends Document {
abstract class AbstractField extends FieldBase
}
sealed trait DynamicDocument extends Document {
abstract class AbstractField extends FieldBase
}
class Coll extends StaticDocument
// similiar issue with annotations
class ann[T] extends annotation.StaticAnnotation
trait StatDoc extends Doc {
@ann[StatFB]
def foo: Int
}
trait Doc {
@ann[DynDoc#ForceDynDoc]
def bar: Int
trait StatFB
trait DynFB
}
trait DynDoc extends Doc {
@ann[DynFB]
def baz: Int
trait ForceDynDoc
}
|