aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/pickleOK/unapply.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2015-03-04 13:52:44 +0100
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-03-18 11:14:14 +0100
commit96fbd7bfe252026f59d1f5e8aa33f2d8fae65769 (patch)
treec4a53211dbf23913eb8174f74e248c16f1c26bab /tests/pos/pickleOK/unapply.scala
parente926f3167f8d9a1407f131abcb33a02b07477597 (diff)
downloaddotty-96fbd7bfe252026f59d1f5e8aa33f2d8fae65769.tar.gz
dotty-96fbd7bfe252026f59d1f5e8aa33f2d8fae65769.tar.bz2
dotty-96fbd7bfe252026f59d1f5e8aa33f2d8fae65769.zip
Allow several units to be pickle-tested at once.
Also: Make Pickler a plain phase; it is neither a macro transformer nor a miniphase. Add tests to pickleOK that are known to be stable under pickling/unpicking by comparing tree representations via show.
Diffstat (limited to 'tests/pos/pickleOK/unapply.scala')
-rw-r--r--tests/pos/pickleOK/unapply.scala11
1 files changed, 11 insertions, 0 deletions
diff --git a/tests/pos/pickleOK/unapply.scala b/tests/pos/pickleOK/unapply.scala
new file mode 100644
index 000000000..ba885be73
--- /dev/null
+++ b/tests/pos/pickleOK/unapply.scala
@@ -0,0 +1,11 @@
+object test {
+ class Foo[T](val arg : T)
+
+ object Foo {
+ def unapply [a](m : Foo[a]) = Some (m.arg)
+ }
+ def matchAndGetArgFromFoo[b]( e:Foo[b]):b = {e match { case Foo(x) => x }}
+// Unapply node here will have type argument [a] instantiated to scala.Nothing:
+// UnApply(TypeApply(Select(Ident(Foo),unapply),List(TypeTree[TypeVar(PolyParam(a) -> TypeRef(ThisType(TypeRef(NoPrefix,scala)),Nothing))])),List(),List(Bind(x,Ident(_))))
+// but the type of the UnApply node itself is correct: RefinedType(TypeRef(ThisType(TypeRef(ThisType(TypeRef(NoPrefix,<empty>)),test$)),Foo), test$$Foo$$a, TypeAlias(TypeRef(NoPrefix,a)))
+}