@@ -32,6 +32,10 @@ trait Types{ types =>
3232 extends Visitor .Delegate [Any , T ](other) with ReadWriter [T ]
3333
3434 def merge [T ](tagKey : String , rws : ReadWriter [_ <: T ]* ): TaggedReadWriter [T ] = {
35+ assert(
36+ rws.forall(_.isInstanceOf [TaggedReadWriter [_]]),
37+ " Can only merge ReadWriters of case classes, not " + rws.filterNot(_.isInstanceOf [TaggedReadWriter [_]])
38+ )
3539 new TaggedReadWriter .Node (tagKey, rws.asInstanceOf [Seq [TaggedReadWriter [T ]]]:_* )
3640 }
3741
@@ -108,6 +112,10 @@ trait Types{ types =>
108112 override def visitArray (length : Int , index : Int ) = super .visitArray(length, index).asInstanceOf [ArrVisitor [Any , Z ]]
109113 }
110114 def merge [T ](tagKey : String , readers0 : Reader [_ <: T ]* ): TaggedReader .Node [T ] = {
115+ assert(
116+ readers0.forall(_.isInstanceOf [TaggedReader [_]]),
117+ " Can only merge Readers of case classes, not " + readers0.filterNot(_.isInstanceOf [TaggedReader [_]])
118+ )
111119 new TaggedReader .Node (tagKey, readers0.asInstanceOf [Seq [TaggedReader [T ]]]:_* )
112120 }
113121
@@ -147,6 +155,10 @@ trait Types{ types =>
147155 def write0 [R ](out : Visitor [_, R ], v : U ): R = src.write(out, f(v))
148156 }
149157 def merge [T ](writers : Writer [_ <: T ]* ) = {
158+ assert(
159+ writers.forall(_.isInstanceOf [TaggedWriter [_]]),
160+ " Can only merge Writers of case classes, not " + writers.filterNot(_.isInstanceOf [TaggedWriter [_]])
161+ )
150162 new TaggedWriter .Node (writers.asInstanceOf [Seq [TaggedWriter [T ]]]:_* )
151163 }
152164 }
0 commit comments