From 2617235fdb1b569bc4069f51b1cc9fa2557d10c4 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 6 Nov 2013 17:29:23 +0100 Subject: Adding a Scala2x flag. A new flag to help us distinguish classes unpickled from Scala from classes defined in Dotty. Concrete use case: We need to use relaxed (and unsound) rules for pattern matching Scala2x case classes. --- src/dotty/tools/dotc/core/Flags.scala | 3 +++ src/dotty/tools/dotc/core/pickling/UnPickler.scala | 1 + 2 files changed, 4 insertions(+) (limited to 'src/dotty/tools/dotc') diff --git a/src/dotty/tools/dotc/core/Flags.scala b/src/dotty/tools/dotc/core/Flags.scala index f9dae08e8..956b67ffb 100644 --- a/src/dotty/tools/dotc/core/Flags.scala +++ b/src/dotty/tools/dotc/core/Flags.scala @@ -302,6 +302,9 @@ object Flags { /** A super accessor */ final val SuperAccessor = termFlag(27, "") + /** An unpickled Scala 2.x class */ + final val Scala2x = typeFlag(27, "") + /** A method that has default params */ // TODO: drop final val DefaultParameterized = termFlag(28, "") diff --git a/src/dotty/tools/dotc/core/pickling/UnPickler.scala b/src/dotty/tools/dotc/core/pickling/UnPickler.scala index cc777ce9b..465e4a060 100644 --- a/src/dotty/tools/dotc/core/pickling/UnPickler.scala +++ b/src/dotty/tools/dotc/core/pickling/UnPickler.scala @@ -499,6 +499,7 @@ class UnPickler(bytes: Array[Byte], classRoot: ClassDenotation, moduleClassRoot: case denot: ClassDenotation => val selfInfo = if (atEnd) NoType else readTypeRef() setClassInfo(denot, tp, selfInfo) + denot setFlag Scala2x case denot => val tp1 = depoly(tp, denot) denot.info = if (tag == ALIASsym) TypeAlias(tp1) else tp1 -- cgit v1.2.3