diff options
author | Martin Odersky <odersky@gmail.com> | 2015-02-24 16:55:37 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-18 11:14:10 +0100 |
commit | 5d09a0cea088a193f7e917cbc03187d5b6b7a795 (patch) | |
tree | 86a757ebe6951cba44e4de6eb00c16ab62e662b1 /src/dotty | |
parent | aebc626de6fa762dcd30fd78d0cc2cf3e5a983d4 (diff) | |
download | dotty-5d09a0cea088a193f7e917cbc03187d5b6b7a795.tar.gz dotty-5d09a0cea088a193f7e917cbc03187d5b6b7a795.tar.bz2 dotty-5d09a0cea088a193f7e917cbc03187d5b6b7a795.zip |
Have pkg intsead of static external references
Static does not tell us whether to start the search it in empty package
or in root package.
Diffstat (limited to 'src/dotty')
4 files changed, 23 insertions, 13 deletions
diff --git a/src/dotty/tools/dotc/core/pickling/PickleFormat.scala b/src/dotty/tools/dotc/core/pickling/PickleFormat.scala index 9de471204..aebd53f9a 100644 --- a/src/dotty/tools/dotc/core/pickling/PickleFormat.scala +++ b/src/dotty/tools/dotc/core/pickling/PickleFormat.scala @@ -97,7 +97,7 @@ Standard-Section: "ASTs" TopLevelStat* Path = Constant TERMREFdirect sym_ASTRef TERMREFsymbol sym_ASTRef qual_Type - TERMREFstatic fullyQualified_NameRef + TERMREFpkg fullyQualified_NameRef TERMREF possiblySigned_NameRef qual_Type THIS Length clsRef_Type SKOLEMtype refinedType_ASTref @@ -122,7 +122,7 @@ Standard-Section: "ASTs" TopLevelStat* Type = Path TYPEREFdirect sym_ASTRef TYPEREFsymbol sym_ASTRef qual_Type - TYPEREFstatic fullyQualified_NameRef + TYPEREFpkg fullyQualified_NameRef TYPEREF possiblySigned_NameRef qual_Type SUPERtype Length this_Type underlying_Type REFINEDtype Length underlying_Type refinement_NameRef info_Type @@ -246,8 +246,8 @@ object PickleFormat { final val SHARED = 64 final val TERMREFdirect = 65 final val TYPEREFdirect = 66 - final val TERMREFstatic = 67 - final val TYPEREFstatic = 68 + final val TERMREFpkg = 67 + final val TYPEREFpkg = 68 final val SKOLEMtype = 69 final val BYTEconst = 70 final val SHORTconst = 71 @@ -379,8 +379,8 @@ object PickleFormat { case SHARED => "SHARED" case TERMREFdirect => "TERMREFdirect" case TYPEREFdirect => "TYPEREFdirect" - case TERMREFstatic => "TERMREFstatic" - case TYPEREFstatic => "TYPEREFstatic" + case TERMREFpkg => "TERMREFpkg" + case TYPEREFpkg => "TYPEREFpkg" case SKOLEMtype => "SKOLEMtype" case BYTEconst => "BYTEconst" case SHORTconst => "SHORTconst" diff --git a/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala b/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala index cf531ecac..94d57e081 100644 --- a/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala +++ b/src/dotty/tools/dotc/core/pickling/TastyPrinter.scala @@ -89,7 +89,7 @@ class TastyPrinter(bytes: Array[Byte])(implicit ctx: Context) { } else if (tag >= firstNatTreeTag) tag match { - case TERMREFstatic | TYPEREFstatic | STRINGconst => printName() + case TERMREFpkg | TYPEREFpkg | STRINGconst => printName() case _ => printNat() } indent -= 2 diff --git a/src/dotty/tools/dotc/core/pickling/TreePickler.scala b/src/dotty/tools/dotc/core/pickling/TreePickler.scala index 60b7a55b0..0365c0d7f 100644 --- a/src/dotty/tools/dotc/core/pickling/TreePickler.scala +++ b/src/dotty/tools/dotc/core/pickling/TreePickler.scala @@ -133,8 +133,8 @@ class TreePickler(pickler: TastyPickler) { pickleConstant(value) case tpe: WithFixedSym => val sym = tpe.symbol - if (sym.isStatic && sym.isType || sym.is(Flags.Module)) { - writeByte(if (tpe.isType) TYPEREFstatic else TERMREFstatic) + if (sym.is(Flags.Package)) { + writeByte(if (tpe.isType) TYPEREFpkg else TERMREFpkg) pickleName(qualifiedName(sym)) } else if (tpe.prefix == NoPrefix) { diff --git a/src/dotty/tools/dotc/core/pickling/TreesUnpickler.scala b/src/dotty/tools/dotc/core/pickling/TreesUnpickler.scala index 4bc79964a..c652e1b90 100644 --- a/src/dotty/tools/dotc/core/pickling/TreesUnpickler.scala +++ b/src/dotty/tools/dotc/core/pickling/TreesUnpickler.scala @@ -179,10 +179,20 @@ class TreesUnpickler(reader: TastyReader, tastyName: TastyName.Table, case TYPEREFsymbol | TERMREFsymbol => val sym = readSymRef() NamedType.withFixedSym(readType(), sym) - case TYPEREFstatic => - ctx.requiredClass(readName().toTypeName).typeRef - case TERMREFstatic => - ctx.requiredModule(readName()).termRef + case TYPEREFpkg => + val name = readName() + val pkg = + if (name == nme.ROOT) defn.RootClass + else if (name == nme.EMPTY_PACKAGE) defn.EmptyPackageClass + else ctx.requiredPackage(name).moduleClass + pkg.typeRef + case TERMREFpkg => + val name = readName() + val pkg = + if (name == nme.ROOT) defn.RootPackage + else if (name == nme.EMPTY_PACKAGE) defn.EmptyPackageVal + else ctx.requiredPackage(name) + pkg.termRef case TYPEREF => val name = readName().toTypeName TypeRef(readType(), name) |