From d0899419e74033599e90e50b5053ffdc27e0959e Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Wed, 18 Apr 2012 03:14:59 -0400 Subject: [PATCH] Revert "Revert "Work around scalac issue causing boxing." (ClassNotFoundException)" (Reverted wrong commit.) This reverts commit 7dac90fffe2e579c34be78ac81a8ea0cdd9c1d0f. --- util/classfile/Parser.scala | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/util/classfile/Parser.scala b/util/classfile/Parser.scala index cf33fca2e..92c74d65d 100644 --- a/util/classfile/Parser.scala +++ b/util/classfile/Parser.scala @@ -5,6 +5,7 @@ package sbt package classfile import java.io.{DataInputStream, File, InputStream} +import scala.annotation.switch // Translation of jdepend.framework.ClassFileParser by Mike Clark, Clarkware Consulting, Inc. // BSD Licensed @@ -132,17 +133,18 @@ private[sbt] object Parser pool } - private def getConstant(in: DataInputStream) = - { + private def getConstant(in: DataInputStream): Constant = + { val tag = in.readByte() - tag match - { - case ConstantClass | ConstantString => new Constant(tag, in.readUnsignedShort()) - case ConstantField | ConstantMethod | ConstantInterfaceMethod | ConstantNameAndType => - new Constant(tag, in.readUnsignedShort(), in.readUnsignedShort()) - case ConstantInteger => new Constant(tag, new java.lang.Integer(in.readInt())) - case ConstantFloat => new Constant(tag, new java.lang.Float(in.readFloat())) - case ConstantLong => new Constant(tag, new java.lang.Long(in.readLong())) + + // No switch for byte scrutinees! Stupid compiler. + ((tag: Int): @switch) match { + case ConstantClass | ConstantString => new Constant(tag, in.readUnsignedShort()) + case ConstantField | ConstantMethod | ConstantInterfaceMethod | ConstantNameAndType => + new Constant(tag, in.readUnsignedShort(), in.readUnsignedShort()) + case ConstantInteger => new Constant(tag, new java.lang.Integer(in.readInt())) + case ConstantFloat => new Constant(tag, new java.lang.Float(in.readFloat())) + case ConstantLong => new Constant(tag, new java.lang.Long(in.readLong())) case ConstantDouble => new Constant(tag, new java.lang.Double(in.readDouble())) case ConstantUTF8 => new Constant(tag, in.readUTF()) case _ => error("Unknown constant: " + tag)