class serializable extends annotation.StaticAnnotation @serializable class C1; @serializable @volatile class C2; @serializable @volatile class C3; @serializable @volatile @serializable class C4; @serializable trait T1; @serializable @volatile trait T2; @serializable @volatile trait T3; @serializable @volatile @serializable trait T4; @serializable object O1 extends C1; @serializable @volatile object O2 extends C2; @serializable @volatile object O3 extends C3; @serializable @volatile @serializable object O4 extends C4; object O5 { final val n = 2; @SerialVersionUID(0) class C1; @SerialVersionUID(n) class C2; @SerialVersionUID(0) @SerialVersionUID(n) class C3; @SerialVersionUID(0) @SerialVersionUID(n) class C4; } abstract class A1 { @serializable var y1: C1; @serializable @volatile var y2: C2; @serializable @volatile var y3: C3; @serializable @volatile @serializable var y4: C4; @serializable def foo1: C1; @serializable @volatile def foo2: C2; @serializable @volatile def foo3: C3; @serializable @volatile @serializable def foo4: C4; } object O6 { @serializable val x1 = new C1; // volatile val sensibly disallowed as of r18645 @serializable val x2 = new C2; @serializable val x3 = new C3; @serializable val x4 = new C4; @serializable var y1: C1 = _; @serializable @volatile var y2: C2 = _; @serializable @volatile var y3: C3 = _; @serializable @volatile @serializable var y4: C4 = _; @serializable private def foo1 = x1; @serializable @volatile private def foo2 = x2; @serializable @volatile protected def foo3 = x3; @serializable @volatile @serializable protected def foo4 = x4; } object myAttrs { class a1 extends scala.annotation.Annotation; class a2(x: Int) extends scala.annotation.Annotation; class a3(x: a1) extends scala.annotation.Annotation; } class a4(ns: Array[Int]) extends scala.annotation.Annotation; object O7 { class a1 extends scala.annotation.Annotation; class a2(x: Int) extends scala.annotation.Annotation; class a3(x: a1) extends scala.annotation.Annotation; final val x = new a1; @a1 class C1; @a1 @a2(77) class C2; @a1 @a2(88) class C3; @a1 @a2(88) @a3(null) class C4; @myAttrs.a1 class A1; @myAttrs.a1 @myAttrs.a2(99) class A2; @myAttrs.a1 @myAttrs.a2(99) class A3; @myAttrs.a1 @myAttrs.a2(99) @myAttrs.a3(null) class A4; @a4(Array(1,2,3)) class A5; @a4(Array()) class A6; val zero = 0 : @myAttrs.a1 }