summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2012-11-04 05:36:34 -0800
committerPaul Phillips <paulp@improving.org>2012-11-04 05:38:53 -0800
commit477eee3acf0ec9e6f339efb97a213a2a0775495f (patch)
tree6dafcc83501fa0bff5b547070171c083d712a8f1 /src/reflect/scala/reflect/internal/pickling/UnPickler.scala
parent30954277448ea270ea5cf59af6c5760451a81005 (diff)
downloadscala-477eee3acf0ec9e6f339efb97a213a2a0775495f.tar.gz
scala-477eee3acf0ec9e6f339efb97a213a2a0775495f.tar.bz2
scala-477eee3acf0ec9e6f339efb97a213a2a0775495f.zip
Pull request feedback.
Factor out 8x duplicated bit of UnPicklers.
Diffstat (limited to 'src/reflect/scala/reflect/internal/pickling/UnPickler.scala')
-rw-r--r--src/reflect/scala/reflect/internal/pickling/UnPickler.scala18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
index 2cb2c57e32..13e42102cc 100644
--- a/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
+++ b/src/reflect/scala/reflect/internal/pickling/UnPickler.scala
@@ -188,11 +188,12 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
}
protected def readTermName(): TermName = readName().toTermName
protected def readTypeName(): TypeName = readName().toTypeName
+ private def readEnd() = readNat() + readIndex
/** Read a symbol */
protected def readSymbol(): Symbol = {
val tag = readByte()
- val end = readNat() + readIndex
+ val end = readEnd()
def atEnd = readIndex == end
def readExtSymbol(): Symbol = {
@@ -320,7 +321,7 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
*/
protected def readType(forceProperType: Boolean = false): Type = {
val tag = readByte()
- val end = readNat() + readIndex
+ val end = readEnd()
(tag: @switch) match {
case NOtpe =>
NoType
@@ -426,7 +427,7 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
protected def readChildren() {
val tag = readByte()
assert(tag == CHILDREN)
- val end = readNat() + readIndex
+ val end = readEnd()
val target = readSymbolRef()
while (readIndex != end) target addChild readSymbolRef()
}
@@ -445,7 +446,7 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
*/
private def readArrayAnnot() = {
readByte() // skip the `annotargarray` tag
- val end = readNat() + readIndex
+ val end = readEnd()
until(end, () => readClassfileAnnotArg(readNat())).toArray(JavaArgumentTag)
}
protected def readClassfileAnnotArg(i: Int): ClassfileAnnotArg = bytes(index(i)) match {
@@ -481,7 +482,7 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
val tag = readByte()
if (tag != SYMANNOT)
errorBadSignature("symbol annotation expected ("+ tag +")")
- val end = readNat() + readIndex
+ val end = readEnd()
val target = readSymbolRef()
target.addAnnotation(readAnnotationInfo(end))
}
@@ -492,7 +493,7 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
val tag = readByte()
if (tag != ANNOTINFO)
errorBadSignature("annotation expected (" + tag + ")")
- val end = readNat() + readIndex
+ val end = readEnd()
readAnnotationInfo(end)
}
@@ -501,7 +502,7 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
val outerTag = readByte()
if (outerTag != TREE)
errorBadSignature("tree expected (" + outerTag + ")")
- val end = readNat() + readIndex
+ val end = readEnd()
val tag = readByte()
val tpe = if (tag == EMPTYtree) NoType else readTypeRef()
@@ -759,7 +760,8 @@ abstract class UnPickler /*extends scala.reflect.generic.UnPickler*/ {
val tag = readNat()
if (tag != MODIFIERS)
errorBadSignature("expected a modifiers tag (" + tag + ")")
- val _ = readNat() + readIndex
+
+ readEnd()
val pflagsHi = readNat()
val pflagsLo = readNat()
val pflags = (pflagsHi.toLong << 32) + pflagsLo