diff options
author | Martin Odersky <odersky@gmail.com> | 2015-02-10 12:39:15 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-18 11:09:43 +0100 |
commit | 1c5f3b75f7e70e8608d6be442087857bd4a6b2cc (patch) | |
tree | 26a197f56bfbd0a0ffa819cf68a730abd88a6260 /src/dotty/tools/dotc/core/pickling/PickleFormat.scala | |
parent | 41922c14bf1a45a3dcf7afca7719e0be84c2c29a (diff) | |
download | dotty-1c5f3b75f7e70e8608d6be442087857bd4a6b2cc.tar.gz dotty-1c5f3b75f7e70e8608d6be442087857bd4a6b2cc.tar.bz2 dotty-1c5f3b75f7e70e8608d6be442087857bd4a6b2cc.zip |
Add TASTY readers and printers for TASTy info.
So far printing is the only reader, ie. deserializer.
Numerous bugfixes to make first tests work.
Diffstat (limited to 'src/dotty/tools/dotc/core/pickling/PickleFormat.scala')
-rw-r--r-- | src/dotty/tools/dotc/core/pickling/PickleFormat.scala | 176 |
1 files changed, 156 insertions, 20 deletions
diff --git a/src/dotty/tools/dotc/core/pickling/PickleFormat.scala b/src/dotty/tools/dotc/core/pickling/PickleFormat.scala index 16356718c..6769cd016 100644 --- a/src/dotty/tools/dotc/core/pickling/PickleFormat.scala +++ b/src/dotty/tools/dotc/core/pickling/PickleFormat.scala @@ -95,6 +95,7 @@ Standard-Section: "ASTs" Tree* Path = Constant TERMREFdirect sym_ASTRef + TERMREFstatic fullyQualified_NameRef TERMREFsymbol qual_Type sym_ASTRef TERMREF qual_Type possiblySigned_NameRef THIS Length clsRef_Type @@ -123,6 +124,7 @@ Standard-Section: "ASTs" Tree* Type = Path TYPEREFdirect sym_ASTRef + TYPEREFstatic fullyQualified_NameRef TYPEREFsymbol qual_Type sym_ASTRef TYPEREF qual_Type possiblySigned_NameRef SUPERtype Length this_Type underlying_Type @@ -135,9 +137,14 @@ Standard-Section: "ASTs" Tree* ANDtype Length left_Type right_Type ORtype Length left_Type right_Type BYNAMEtype Length underlying_Type + POLYtype Length result_Type NamesTypes // needed for refinements + METHODtype Length result_Type NamesTypes // needed for refinements + PARAMtype Length binder_ASTref paramNum_Nat // needed for refinements NOTYPE NOPREFIX SHARED type_ASTRef + NamesTypes = ParamType* + NameType = paramName_NameRef typeOrBounds_ASTRef Modifier = PRIVATE INTERNAL // package private @@ -189,10 +196,10 @@ object PickleFormat { final val header = "5CA1AB1F" final val MajorVersion = 0 - final val MinorVersion = 1 - + final val MinorVersion = 2 + // Name tags - + final val UTF8 = 1 final val QUALIFIED = 2 final val SIGNED = 3 @@ -200,7 +207,7 @@ object PickleFormat { final val MODULECLASS = 5 final val SUPERACCESSOR = 6 final val DEFAULTGETTER = 7 - + // AST tags final val EMPTYTREE = 0 @@ -241,20 +248,22 @@ object PickleFormat { final val SHARED = 96 final val TERMREFdirect = 97 final val TYPEREFdirect = 98 - final val BYTEconst = 99 - final val BYTEneg = 100 - final val SHORTconst = 101 - final val SHORTneg = 102 - final val CHARconst = 103 - final val INTconst = 104 - final val INTneg = 105 - final val LONGconst = 106 - final val LONGneg = 107 - final val FLOATconst = 108 - final val DOUBLEconst = 109 - final val STRINGconst = 110 - final val PRIVATEqualified = 111 - final val PROTECTEDqualified = 112 + final val TERMREFstatic = 99 + final val TYPEREFstatic = 100 + final val BYTEconst = 101 + final val BYTEneg = 102 + final val SHORTconst = 103 + final val SHORTneg = 104 + final val CHARconst = 105 + final val INTconst = 106 + final val INTneg = 107 + final val LONGconst = 108 + final val LONGneg = 109 + final val FLOATconst = 110 + final val DOUBLEconst = 111 + final val STRINGconst = 112 + final val PRIVATEqualified = 113 + final val PROTECTEDqualified = 114 final val SELECT = 128 final val TERMREFsymbol = 129 @@ -308,10 +317,137 @@ object PickleFormat { final val ANDtype = 203 final val ORtype = 204 final val BYNAMEtype = 205 - final val IMPLICITARG = 206 - + final val METHODtype = 206 + final val POLYtype = 207 + final val PARAMtype = 208 + final val IMPLICITARG = 209 + final val firstSimpleTreeTag = EMPTYTREE final val firstNatTreeTag = SHARED final val firstTreeNatTreeTag = SELECT final val firstLengthTreeTag = PACKAGE + + def nameTagToString(tag: Int): String = tag match { + case UTF8 => "UTF8" + case QUALIFIED => "QUALIFIED" + case SIGNED => "SIGNED" + case EXPANDED => "EXPANDED" + case MODULECLASS => "MODULECLASS" + case SUPERACCESSOR => "SUPERACCESSOR" + case DEFAULTGETTER => "DEFAULTGETTER" + } + + def astTagToString(tag: Int): String = tag match { + case EMPTYTREE => "EMPTYTREE" + case NOTYPE => "NOTYPE" + case NOPREFIX => "NOPREFIX" + case UNITconst => "UNITconst" + case FALSEconst => "FALSEconst" + case TRUEconst => "TRUEconst" + case NULLconst => "NULLconst" + case PRIVATE => "PRIVATE" + case INTERNAL => "INTERNAL" + case PROTECTED => "PROTECTED" + case ABSTRACT => "ABSTRACT" + case FINAL => "FINAL" + case SEALED => "SEALED" + case CASE => "CASE" + case IMPLICIT => "IMPLICIT" + case LAZY => "LAZY" + case OVERRIDE => "OVERRIDE" + case INLINE => "INLINE" + case ABSOVERRIDE => "ABSOVERRIDE" + case STATIC => "STATIC" + case MODULE => "MODULE" + case LOCAL => "LOCAL" + case SYNTHETIC => "SYNTHETIC" + case ARTIFACT => "ARTIFACT" + case MUTABLE => "MUTABLE" + case LABEL => "LABEL" + case FIELDaccessor => "FIELDaccessor" + case PARAMaccessor => "PARAMaccessor" + case CASEaccessor => "CASEaccessor" + case COVARIANT => "COVARIANT" + case CONTRAVARIANT => "CONTRAVARIANT" + case SCALA2X => "SCALA2X" + case DEFAULTparameterized => "DEFAULTparameterized" + case DEFAULTinit => "DEFAULTinit" + + case SHARED => "SHARED" + case TERMREFdirect => "TERMREFdirect" + case TYPEREFdirect => "TYPEREFdirect" + case TERMREFstatic => "TERMREFstatic" + case TYPEREFstatic => "TYPEREFstatic" + case BYTEconst => "BYTEconst" + case BYTEneg => "BYTEneg" + case SHORTconst => "SHORTconst" + case SHORTneg => "SHORTneg" + case CHARconst => "CHARconst" + case INTconst => "INTconst" + case INTneg => "INTneg" + case LONGconst => "LONGconst" + case LONGneg => "LONGneg" + case FLOATconst => "FLOATconst" + case DOUBLEconst => "DOUBLEconst" + case STRINGconst => "STRINGconst" + case PRIVATEqualified => "PRIVATEqualified" + case PROTECTEDqualified => "PROTECTEDqualified" + + case SELECT => "SELECT" + case TERMREFsymbol => "TERMREFsymbol" + case TERMREF => "TERMREF" + case TYPEREFsymbol => "TYPEREFsymbol" + case TYPEREF => "TYPEREF" + + case PACKAGE => "PACKAGE" + case VALDEF => "VALDEF" + case DEFDEF => "DEFDEF" + case TYPEDEF => "TYPEDEF" + case IMPORT => "IMPORT" + case TYPEPARAM => "TYPEPARAM" + case PARAMS => "PARAMS" + case PARAM => "PARAM" + case IMPORTED => "IMPORTED" + case RENAMED => "RENAMED" + case APPLY => "APPLY" + case TYPEAPPLY => "TYPEAPPLY" + case NEW => "NEW" + case PAIR => "PAIR" + case TYPED => "TYPED" + case NAMEDARG => "NAMEDARG" + case ASSIGN => "ASSIGN" + case BLOCK => "BLOCK" + case IF => "IF" + case CLOSURE => "CLOSURE" + case MATCH => "MATCH" + case RETURN => "RETURN" + case TRY => "TRY" + case THROW => "THROW" + case SEQLITERAL => "SEQLITERAL" + case JSEQLITERAL => "JSEQLITERAL" + case BIND => "BIND" + case ALTERNATIVE => "ALTERNATIVE" + case UNAPPLY => "UNAPPLY" + case ANNOTATED => "ANNOTATED" + case CASEDEF => "CASEDEF" + case IMPLICITarg => "IMPLICITarg" + case TEMPLATE => "TEMPLATE" + case THIS => "THIS" + case SUPER => "SUPER" + case CLASSconst => "CLASSconst" + case ENUMconst => "ENUMconst" + case SUPERtype => "SUPERtype" + case SKOLEMtype => "SKOLEMtype" + case REFINEDtype => "REFINEDtype" + case APPLIEDtype => "APPLIEDtype" + case TYPEBOUNDS => "TYPEBOUNDS" + case TYPEALIAS => "TYPEALIAS" + case ANDtype => "ANDtype" + case ORtype => "ORtype" + case BYNAMEtype => "BYNAMEtype" + case POLYtype => "POLYtype" + case METHODtype => "METHODtype" + case PARAMtype => "PARAMtype" + case IMPLICITARG => "IMPLICITARG" + } } |