diff options
author | Martin Odersky <odersky@gmail.com> | 2016-04-07 22:52:34 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-04-07 22:52:41 +0200 |
commit | 88eb98ffc91f2954eb0ed305d19d46845f35ab33 (patch) | |
tree | 07dc45f4327aaf91e72ee50bd6360a86805d8321 | |
parent | 29e5792ad7ea1209f0141000449649e8cb943b65 (diff) | |
download | dotty-88eb98ffc91f2954eb0ed305d19d46845f35ab33.tar.gz dotty-88eb98ffc91f2954eb0ed305d19d46845f35ab33.tar.bz2 dotty-88eb98ffc91f2954eb0ed305d19d46845f35ab33.zip |
Fix flags when unpickling setters of parameter accessors
ParamAccessor is not a pickled flag. This is not a problem for
normal parameter accessors which are pickled as PARAM fields. But setters
of parameter accessors also need to have the flag set (and Deferred reset).
-rw-r--r-- | src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala | 5 | ||||
-rw-r--r-- | tests/pickling/i1202c.scala | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index b547862b4..d7f33c75c 100644 --- a/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -596,6 +596,11 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { vparamss.nestedMap(_.symbol), name == nme.CONSTRUCTOR) val resType = ctx.effectiveResultType(sym, typeParams, tpt.tpe) sym.info = ctx.methodType(typeParams, valueParamss, resType) + if (sym.isSetter && sym.accessedFieldOrGetter.is(ParamAccessor)) { + // reconstitute ParamAccessor flag of setters for var parameters, which is not pickled + sym.setFlag(ParamAccessor) + sym.resetFlag(Deferred) + } DefDef(tparams, vparamss, tpt) case VALDEF => sym.info = readType() diff --git a/tests/pickling/i1202c.scala b/tests/pickling/i1202c.scala new file mode 100644 index 000000000..dde1f3aa6 --- /dev/null +++ b/tests/pickling/i1202c.scala @@ -0,0 +1 @@ +class Fail7(var in: Int) |