diff options
author | Philipp Haller <hallerp@gmail.com> | 2014-07-09 14:43:12 +0200 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2014-07-15 14:03:49 +0200 |
commit | 5762110d0dc2cb492e34d5595c473aa0f9ca786a (patch) | |
tree | 974c218830fcab44f386c11be28a82b0ec3acc71 /test/files/run/exprs_serialize.check | |
parent | 87bba9418ca891c436f386207b3b9e70b4a64c71 (diff) | |
download | scala-5762110d0dc2cb492e34d5595c473aa0f9ca786a.tar.gz scala-5762110d0dc2cb492e34d5595c473aa0f9ca786a.tar.bz2 scala-5762110d0dc2cb492e34d5595c473aa0f9ca786a.zip |
SI-5919 TypeTags and Exprs should be serializable
- Make TypeCreator and TreeCreator extend Serializable.
- When replacing a SerializedTypeTag with a TypeTag or WeakTypeTag,
do not use scala.reflect.runtime.universe.rootMirror, since
it is unlikely to find user classes; instead, create a runtime
mirror using the context ClassLoader of the current thread.
Use the same logic for SerializedExpr.
- Remove writeObject/readObject methods from SerializedTypeTag
and SerializedExpr since they are unused.
- Add @throws annotation on writeReplace and readResolve methods.
- Handle SecurityException if the current thread cannot access the
context ClassLoader.
- To make type tags of primitive value classes serializable, make
PredefTypeCreator a top-level class. Otherwise, it would
retain a reference to the enclosing Universe,
rendering the TypeCreator non-serializable.
Binary compatibility:
- Keep nested PredefTypeCreator class to avoid backward binary
incompatible change.
- Keep `var` modifiers on the class parameters of
SerializedTypeTag for backward binary compatibility.
- Adds filter rules to forward binary compatibility whitelist:
- `TypeCreator`, `PredefTypeCreator`, and `TreeCreator` must now
extend from `Serializable`.
- Must have new class `scala.reflect.api.PredefTypeCreator`
to avoid problematic outer reference.
Diffstat (limited to 'test/files/run/exprs_serialize.check')
-rw-r--r-- | test/files/run/exprs_serialize.check | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/test/files/run/exprs_serialize.check b/test/files/run/exprs_serialize.check index 20ad6c110c..551823ccdc 100644 --- a/test/files/run/exprs_serialize.check +++ b/test/files/run/exprs_serialize.check @@ -1,2 +1,19 @@ -java.io.NotSerializableException: Test$$treecreator1$1 -java.io.NotSerializableException: Test$$treecreator2$1 +Expr[Int(2)](2) +Expr[java.lang.String]({ + def foo = "hello"; + foo.$plus("world!") +}) +Expr[Boolean]({ + def foo(x: Int) = { + class Local extends AnyRef { + def <init>() = { + super.<init>(); + () + }; + val f = 2 + }; + val obj = new Local(); + x.$percent(obj.f).$eq$eq(0) + }; + foo(5) +}) |