Permalink
Browse files

Merged revisions 24749-24771,24773-24774,24776-...

Merged revisions 24749-24771,24773-24774,24776-24779 via svnmerge from
https://lampsvn.epfl.ch/svn-repos/scala/scala/trunk

........
  r24749 | odersky | 2011-04-13 17:07:21 +0200 (Wed, 13 Apr 2011) | 1 line

  Fixes my part of #4283 by inserting another cast pre-emptively when an
IllegalAccess error is possible in an erasure-inserted cast. Review by
extempore. ........ r24750 | dragos | 2011-04-13 18:15:37 +0200 (Wed, 13
Apr 2011) | 1 line

  Warn when the jar file cannot be found when loading a plugin. no
review. ........ r24751 | dragos | 2011-04-13 18:15:43 +0200 (Wed, 13
Apr 2011) | 1 line

  Closes #4283. no review.
........
  r24752 | prokopec | 2011-04-13 18:31:42 +0200 (Wed, 13 Apr 2011) | 45 lines

  Refactoring the collections api to support differentiation between
referring to a sequential collection and a parallel collection, and to
support referring to both types of collections.

  New set of traits Gen* are now superclasses of both their * and Par* subclasses. For example, GenIterable is a superclass of both Iterable and ParIterable. Iterable and ParIterable are not in a subclassing relation. The new class hierarchy is illustrated below (simplified, not all relations and classes are shown):

  TraversableOnce --> GenTraversableOnce
    ^                    ^
    |                    |
  Traversable     --> GenTraversable
    ^                    ^
    |                    |
  Iterable        --> GenIterable        <-- ParIterable
    ^                    ^                      ^
    |                    |                      |
  Seq             --> GenSeq             <-- ParSeq

  (the *Like, *View and *ViewLike traits have a similar hierarchy)

  General views extract common view functionality from parallel and
sequential collections.

  This design also allows for more flexible extensions to the
collections framework. It also allows slowly factoring out common
functionality up into Gen* traits.

  From now on, it is possible to write this:

  import collection._

  val p = parallel.ParSeq(1, 2, 3)
  val g: GenSeq[Int] = p // meaning a General Sequence
  val s = g.seq // type of s is Seq[Int]

  for (elem <- g) {
    // do something without guarantees on sequentiality of foreach
    // this foreach may be executed in parallel
  }

  for (elem <- s) {
    // do something with a guarantee that foreach is executed in order, sequentially
  }

  for (elem <- p) {
    // do something concurrently, in parallel
  }

  This also means that some signatures had to be changed. For example,
method `flatMap` now takes `A => GenTraversableOnce[B]`, and `zip` takes
a `GenIterable[B]`.

  Also, there are mutable & immutable Gen* trait variants. They have
generic companion functionality. ........ r24753 | prokopec | 2011-04-13
18:31:58 +0200 (Wed, 13 Apr 2011) | 3 lines

  Fixes and closes #4405.

  No review.
........
  r24754 | prokopec | 2011-04-13 18:32:01 +0200 (Wed, 13 Apr 2011) | 3 lines

  Fixed some tests, renamed from Any to Gen.

  No review.
........
  r24755 | prokopec | 2011-04-13 18:32:04 +0200 (Wed, 13 Apr 2011) | 3 lines

  Further fixes #4405.

  No review.
........
  r24756 | prokopec | 2011-04-13 18:32:09 +0200 (Wed, 13 Apr 2011) | 3 lines

  Added test case for #4459.

  No review.
........
  r24757 | extempore | 2011-04-13 21:00:56 +0200 (Wed, 13 Apr 2011) | 1 line

  New starr based on r24749.  No review.
........
  r24758 | dragos | 2011-04-13 21:12:57 +0200 (Wed, 13 Apr 2011) | 1 line

  Revert "Closes #4283. no review." because of failing tests. ........
r24759 | extempore | 2011-04-14 06:15:50 +0200 (Thu, 14 Apr 2011) | 2
lines

  Tests which run have to be called "Test". Fixes failing test and
renames file to avoid ant's brainlessness, no review. ........ r24760 |
extempore | 2011-04-14 08:38:35 +0200 (Thu, 14 Apr 2011) | 9 lines

  Doing a little polishing on the parallel collections refactor (which
  overall looks like a big improvement.) I went for some simpler wording
  and moved a number of scaladoc tags around because the rug had been
  pulled out from under their feet.

  This leaves a lot undone, but since many of the docs need to be
reworded before they can move from e.g. SeqLike to GenSeqLike, and I'm
not well informed on exactly how these abstractions are being presented,
I stayed in the safe zone. Review by prokopec. ........ r24761 | phaller
| 2011-04-14 11:11:10 +0200 (Thu, 14 Apr 2011) | 1 line

  Closed #4454. Applied patch provided in ticket. No review. ........
r24762 | dragos | 2011-04-14 15:48:00 +0200 (Thu, 14 Apr 2011) | 1 line

  This time, fixed #4283. no review.
........
  r24763 | extempore | 2011-04-14 16:25:46 +0200 (Thu, 14 Apr 2011) | 4 lines

  Of late the test which fires up the window server, which has already
been the source of undue quantities of inconvenience, has taken to
hanging indefinitely when I run the test suite on a remote machine. Rope
at end, goodbye test, no review. ........ r24764 | prokopec | 2011-04-14
18:09:33 +0200 (Thu, 14 Apr 2011) | 4 lines

  Adding some docs refactorings.
  Also, added some docs variables to Gen* traits that were missing.

  No review.
........
  r24765 | extempore | 2011-04-14 21:33:39 +0200 (Thu, 14 Apr 2011) | 2 lines

  Some patches to jline, and new jar. Thanks to Kenji Matsuoka for
improving the keybindings. No review. ........ r24766 | extempore |
2011-04-14 23:05:12 +0200 (Thu, 14 Apr 2011) | 3 lines

  Adds "since" field to @deprecated. Thanks to Simon Ochsenreither
for the patch, as it's a change I've always wanted. Moving up in the
glamorous world of scala commits! No review. ........ r24767 | extempore
| 2011-04-14 23:06:14 +0200 (Thu, 14 Apr 2011) | 3 lines

  Various addenda to soc's patch: regenerating Product/Tuple/Function
classes and AnyVal sources, making versioning consistent, etc. Closes
#4477, no review. ........ r24768 | extempore | 2011-04-15 04:39:32
+0200 (Fri, 15 Apr 2011) | 3 lines

  Some mopping up having to do with deprecated gaining an argument,
which may or may not cure scaladoc of its current assertion failure. No
review. ........ r24769 | extempore | 2011-04-15 07:05:53 +0200 (Fri, 15
Apr 2011) | 1 line

  Fixing a couple more tests, no review.
........
  r24770 | extempore | 2011-04-15 08:55:32 +0200 (Fri, 15 Apr 2011) | 6 lines

  Having been tortured by remorse ever since tiark told me that r23934
had made the hashmap slower, I crushed my previous efforts under the
heel of my boot, threw all the types out the window, poured acid on
them, and turned all the dials to the far other extreme. Pity the man
who will sell his soul for a few CPU cycles. (I am that man.) Review by
rompf. ........ r24771 | prokopec | 2011-04-15 09:54:54 +0200 (Fri, 15
Apr 2011) | 3 lines

  Couple of fixes to the usecases in docs.

  No review.
........
  r24773 | kzys | 2011-04-15 18:12:22 +0200 (Fri, 15 Apr 2011) | 2 lines

  [scaladoc] Strike-through for deprecated symbols on the reference
index. Closes #4471. Review by dubochet. ........ r24774 | extempore |
2011-04-15 23:03:44 +0200 (Fri, 15 Apr 2011) | 3 lines

  Added a script in tools for deploying maven artifacts locally, since
it always takes me an eternity to figure out slash remember how to do
it. No review. ........ r24776 | extempore | 2011-04-17 21:58:15 +0200
(Sun, 17 Apr 2011) | 2 lines

  Added releaseVersion and developmentVersion to Properties so people
don't all have to parse the versionString. No review. ........ r24777 |
extempore | 2011-04-17 23:28:03 +0200 (Sun, 17 Apr 2011) | 1 line

  Revised that last botched commit.  No review.
........
  r24778 | odersky | 2011-04-19 11:52:59 +0200 (Tue, 19 Apr 2011) | 1 line

  Trying to get build times down by refining implicit searches. Implicit
infos associated with toplevel classes are cached now. Review by rompf.
........ r24779 | odersky | 2011-04-19 12:56:58 +0200 (Tue, 19 Apr 2011)
| 1 line

  Further optimizations of implicits. Now, improves checks between
static members are cached as well. Review by rompf. ........
  • Loading branch information...
Antonio Cunei
Antonio Cunei committed Apr 19, 2011
1 parent 260a412 commit a387c9fd9b88861e5ca6bfae59c0f4f540fd4133
Showing 305 changed files with 5,398 additions and 3,487 deletions.
@@ -1 +1 @@
32f4eb98f8135b0d565e4e7aa72550f34fc4c133 ?jline.jar
115e0f58e2ffa089c083c466b0161216dd4c916e ?jline.jar
@@ -1 +1 @@
4b2f54712dab89071f1909f07367673635beffda ?scala-compiler.jar
e0382dfa2712e567b49f5826ac50eae59cf03cb3 ?scala-compiler.jar
@@ -1 +1 @@
f015b1389419b997796a3a9814bedac6343f108e ?scala-library-src.jar
5ad90238f4fc57e8147fb69496c68d02ca073ca0 ?scala-library-src.jar
@@ -1 +1 @@
af0438e6911f357a2af0d068482baa1f526dbac0 ?scala-library.jar
678ada3690dd149c2bd302407e315a74de0bfd42 ?scala-library.jar
@@ -43,5 +43,5 @@ private[actors] class Logger(tag: String) {
if (lev > 0) b
}

@deprecated("this class is going to be removed in a future release")
@deprecated("this class is going to be removed in a future release", "2.7.7")
class Debug(tag: String) extends Logger(tag) {}
@@ -27,12 +27,12 @@ abstract class Future[+T] extends Responder[T] with Function0[T] {
private[actors] var fvalue: Option[Any] = None
private[actors] def fvalueTyped = fvalue.get.asInstanceOf[T]

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.8.0")
def ch: InputChannel[Any] = inputChannel

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.8.0")
protected def value: Option[Any] = fvalue
@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.8.0")
protected def value_=(x: Option[Any]) { fvalue = x }

/** Tests whether the future's result is available.
@@ -67,16 +67,16 @@ trait IScheduler {

def managedBlock(blocker: scala.concurrent.ManagedBlocker): Unit

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.7.7")
def tick(a: Actor) {}

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.7.7")
def onLockup(handler: () => Unit) {}

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.7.7")
def onLockup(millis: Int)(handler: () => Unit) {}

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.7.7")
def printActorDump {}

}
@@ -16,7 +16,7 @@ package scala.actors
* @author Philipp Haller
*/
@SerialVersionUID(7124278808020037465L)
@deprecated("this class is going to be removed in a future release")
@deprecated("this class is going to be removed in a future release", "2.7.7")
class MessageQueueElement(msg: Any, session: OutputChannel[Any], next: MessageQueueElement) extends MQueueElement[Any](msg, session, next) with Serializable {
def this() = this(null, null, null)
def this(msg: Any, session: OutputChannel[Any]) = this(msg, session, null)
@@ -36,7 +36,7 @@ private[actors] class MQueueElement[Msg >: Null](val msg: Msg, val session: Outp
* @author Philipp Haller
*/
@SerialVersionUID(2168935872884095767L)
@deprecated("this class is going to be removed in a future release")
@deprecated("this class is going to be removed in a future release", "2.7.7")
class MessageQueue(label: String) extends MQueue[Any](label) with Serializable

private[actors] class MQueue[Msg >: Null](protected val label: String) {
@@ -24,7 +24,7 @@ private[actors] class KillActorControl extends ControlThrowable
*
* @author Philipp Haller
*/
@deprecated("This class will be removed in a future release")
@deprecated("This class will be removed in a future release", "2.7.7")
class Reaction(a: Actor, f: PartialFunction[Any, Any], msg: Any)
extends ActorTask(a, if (f == null) (() => a.act()) else null, f, msg) {

@@ -40,7 +40,7 @@ object Scheduler extends DelegatingScheduler {

/* Only <code>ForkJoinScheduler</code> implements this method.
*/
@deprecated("snapshot will be removed")
@deprecated("snapshot will be removed", "2.8.0")
def snapshot() {
if (sched.isInstanceOf[ForkJoinScheduler]) {
sched.asInstanceOf[ForkJoinScheduler].snapshot()
@@ -20,26 +20,26 @@ package object actors {
// type of Reactors tracked by termination detector
private[actors] type TrackedReactor = Reactor[A] forSome { type A >: Null }

@deprecated("use scheduler.ForkJoinScheduler instead")
@deprecated("use scheduler.ForkJoinScheduler instead", "2.8.0")
type FJTaskScheduler2 = scala.actors.scheduler.ForkJoinScheduler

@deprecated("use scheduler.ForkJoinScheduler instead")
@deprecated("use scheduler.ForkJoinScheduler instead", "2.8.0")
type TickedScheduler = scala.actors.scheduler.ForkJoinScheduler

@deprecated("use scheduler.ForkJoinScheduler instead")
@deprecated("use scheduler.ForkJoinScheduler instead", "2.8.0")
type WorkerThreadScheduler = scala.actors.scheduler.ForkJoinScheduler

@deprecated("this class is going to be removed in a future release")
@deprecated("this class is going to be removed in a future release", "2.8.0")
type WorkerThread = java.lang.Thread

@deprecated("use scheduler.SingleThreadedScheduler instead")
@deprecated("use scheduler.SingleThreadedScheduler instead", "2.8.0")
type SingleThreadedScheduler = scala.actors.scheduler.SingleThreadedScheduler

// This used to do a blind cast and throw a CCE after the package
// object was loaded. I have replaced with a variation that should work
// in whatever cases that was working but fail less exceptionally for
// those not intentionally using it.
@deprecated("this value is going to be removed in a future release")
@deprecated("this value is going to be removed in a future release", "2.8.0")
val ActorGC = scala.actors.Scheduler.impl match {
case x: scala.actors.scheduler.ActorGC => x
case _ => null
@@ -81,7 +81,7 @@ object RemoteActor {
kern
}

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.8.0")
def createKernelOnPort(port: Int): NetKernel =
createNetKernelOnPort(port)

@@ -121,7 +121,7 @@ object RemoteActor {
private[remote] def someNetKernel: NetKernel =
kernels.valuesIterator.next

@deprecated("this member is going to be removed in a future release")
@deprecated("this member is going to be removed in a future release", "2.8.0")
def someKernel: NetKernel =
someNetKernel
}
@@ -99,16 +99,17 @@ class TcpService(port: Int, cl: ClassLoader) extends Thread with Service {
// we are not connected, yet
try {
val newWorker = connect(node)
newWorker transmit data

// any pending sends?
pendingSends.get(node) match {
case None =>
// do nothing
case Some(msgs) =>
msgs foreach {newWorker transmit _}
msgs.reverse foreach {newWorker transmit _}
pendingSends -= node
}

newWorker transmit data
} catch {
case uhe: UnknownHostException =>
bufferMsg(uhe)
@@ -66,7 +66,7 @@ private[scheduler] trait TerminationMonitor {
}

/** Deprecated non-actor-private version */
@deprecated("this method is going to be removed in a future release")
@deprecated("this method is going to be removed in a future release", "2.7.7")
def allTerminated: Boolean = allActorsTerminated

/** Checks for actors that have become garbage. */
@@ -238,7 +238,7 @@ class Function(val i: Int) extends Group("Function") with Arity {
curryComment +
" def curried: %s => R = {\n %s\n }\n".format(
targs mkString " => ", body
) + """ @deprecated("Use 'curried' instead")""" + "\n def curry = curried\n"
) + """ @deprecated("Use 'curried' instead", "2.8.0")""" + "\n def curry = curried\n"
}

override def moreMethods = curryMethod + tupleMethod
@@ -280,7 +280,7 @@ object TupleTwo extends Tuple(2)
*/
def swap: Tuple2[T2,T1] = Tuple2(_2, _1)
@deprecated("Use `zipped` instead.")
@deprecated("Use `zipped` instead.", "2.9.0")
def zip[Repr1, El1, El2, To](implicit w1: T1 => TLike[El1, Repr1],
w2: T2 => Iterable[El2],
cbf1: CBF[Repr1, (El1, El2), To]): To = {
@@ -387,7 +387,7 @@ object TupleThree extends Tuple(3) {
override def imports = Tuple.zipImports
override def moreMethods = """
@deprecated("Use `zipped` instead.")
@deprecated("Use `zipped` instead.", "2.9.0")
def zip[Repr1, El1, El2, El3, To](implicit w1: T1 => TLike[El1, Repr1],
w2: T2 => Iterable[El2],
w3: T3 => Iterable[El3],
@@ -206,7 +206,7 @@ final val NaN = @boxed@.NaN
final val PositiveInfinity = @boxed@.POSITIVE_INFINITY
final val NegativeInfinity = @boxed@.NEGATIVE_INFINITY
@deprecated("use @name@.MinPositiveValue instead")
@deprecated("use @name@.MinPositiveValue instead", "2.9.0")
final val Epsilon = MinPositiveValue
/** The negative number with the greatest (finite) absolute value which is representable
@@ -991,6 +991,7 @@ abstract class GenICode extends SubComponent {
case Select(qualifier, selector) =>
val sym = tree.symbol
generatedType = toTypeKind(sym.info)
val hostClass = qualifier.tpe.typeSymbol.orElse(sym.owner)

if (sym.isModule) {
if (settings.debug.value)
@@ -999,11 +1000,11 @@ abstract class GenICode extends SubComponent {
genLoadModule(ctx, sym, tree.pos)
ctx
} else if (sym.isStaticMember) {
ctx.bb.emit(LOAD_FIELD(sym, true), tree.pos)
ctx.bb.emit(LOAD_FIELD(sym, true) setHostClass hostClass, tree.pos)
ctx
} else {
val ctx1 = genLoadQualifier(tree, ctx)
ctx1.bb.emit(LOAD_FIELD(sym, false), tree.pos)
ctx1.bb.emit(LOAD_FIELD(sym, false) setHostClass hostClass, tree.pos)
ctx1
}

@@ -171,6 +171,11 @@ trait Opcodes { self: ICodes =>

override def consumedTypes = if (isStatic) Nil else List(REFERENCE(field.owner));
override def producedTypes = List(toTypeKind(field.tpe));

// more precise information about how to load this field
// see #4283
var hostClass: Symbol = field.owner
def setHostClass(cls: Symbol): this.type = { hostClass = cls; this }
}

case class LOAD_MODULE(module: Symbol) extends Instruction {
@@ -1172,8 +1172,8 @@ abstract class GenJVM extends SubComponent with GenJVMUtil with GenAndroid {
case LOAD_LOCAL(local) =>
jcode.emitLOAD(indexOf(local), javaType(local.kind))

case LOAD_FIELD(field, isStatic) =>
var owner = javaName(field.owner)
case lf @ LOAD_FIELD(field, isStatic) =>
var owner = javaName(lf.hostClass)
if (settings.debug.value)
log("LOAD_FIELD with owner: " + owner +
" flags: " + Flags.flagsToString(field.owner.flags))
@@ -5,8 +5,8 @@ import scala.collection._

trait Index {

type SymbolMap = SortedMap[String, SortedSet[model.TemplateEntity]]
type SymbolMap = SortedMap[String, SortedSet[model.MemberEntity]]

def firstLetterIndex: Map[Char, SymbolMap]

}
}
@@ -7,7 +7,7 @@ package scala.tools.nsc
package doc
package html
package page

import doc.model._

class ReferenceIndex(letter: Char, index: doc.Index, universe: Universe) extends HtmlPage {

@@ -25,18 +25,34 @@ class ReferenceIndex(letter: Char, index: doc.Index, universe: Universe) extends
<script type="text/javascript" src={ relativeLinkTo{List("jquery.js", "lib")} }></script>
</xml:group>


private def entry(name: String, methods: Iterable[MemberEntity]) = {
val occurrences = methods.map(method => {
val html = templateToHtml(method.inDefinitionTemplates.head)
if (method.deprecation.isDefined) {
<strike>{ html }</strike>
} else {
html
}
})

<div class="entry">
<div class="name">{
if (methods.find { ! _.deprecation.isDefined } != None)
name
else
<strike>{ name }</strike>
}</div>
<div class="occurrences">{
for (owner <- occurrences) yield owner ++ xml.Text(" ")
}</div>
</div>
}

def body =
<body>
{ for(groups <- index.firstLetterIndex(letter)) yield {
<div class="entry">
<div class="name">{ groups._1 }</div>
<div class="occurrences">
{ for(owner <- groups._2.view) yield {
templateToHtml(owner) ++ xml.Text(" ")
} }
</div>
</div>
} }
</body>
<body>{
for(groups <- index.firstLetterIndex(letter)) yield
entry(groups._1, groups._2.view)
}</body>

}
@@ -18,7 +18,7 @@ object IndexModelFactory {
val result = new mutable.HashMap[Char,SymbolMap] {

/* Owner template ordering */
implicit def orderingSet = math.Ordering.String.on { x: TemplateEntity => x.name.toLowerCase }
implicit def orderingSet = math.Ordering.String.on { x: MemberEntity => x.name.toLowerCase }
/* symbol name ordering */
implicit def orderingMap = math.Ordering.String.on { x: String => x.toLowerCase }

@@ -27,14 +27,13 @@ object IndexModelFactory {
val ch = d.name.head.toLower
if(ch.isLetterOrDigit) ch else '#'
}
this(firstLetter) =
if(this.contains(firstLetter)) {
val letter = this(firstLetter)
val value = this(firstLetter).get(d.name).getOrElse(SortedSet.empty[TemplateEntity]) + d.inDefinitionTemplates.head
letter + ((d.name, value))
} else {
immutable.SortedMap( (d.name, SortedSet(d.inDefinitionTemplates.head)) )
val letter = this.get(firstLetter).getOrElse {
immutable.SortedMap[String, SortedSet[MemberEntity]]()
}
val members = letter.get(d.name).getOrElse {
SortedSet.empty[MemberEntity](Ordering.by { _.toString })
} + d
this(firstLetter) = letter + (d.name -> members)
}

}
@@ -63,4 +62,4 @@ object IndexModelFactory {

}

}
}
@@ -111,7 +111,9 @@ object Plugin {
*/
def loadFrom(jarfile: Path, loader: ClassLoader): Option[AnyClass] =
loadDescription(jarfile) match {
case None => None
case None =>
println("Warning: could not load descriptor for plugin %s".format(jarfile))
None
case Some(pdesc) =>
try Some(loader loadClass pdesc.classname) catch {
case _: Exception =>
@@ -408,7 +408,8 @@ trait Symbols extends reflect.generic.Symbols { self: SymbolTable =>
def isStrictFP = hasAnnotation(ScalaStrictFPAttr) || (enclClass hasAnnotation ScalaStrictFPAttr)
def isSerializable = info.baseClasses.exists(p => p == SerializableClass || p == JavaSerializableClass) || hasAnnotation(SerializableAttr) // last part can be removed, @serializable annotation is deprecated
def isDeprecated = hasAnnotation(DeprecatedAttr)
def deprecationMessage = getAnnotation(DeprecatedAttr) flatMap { _.stringArg(0) }
def deprecationMessage = getAnnotation(DeprecatedAttr) flatMap (_ stringArg 0)
def deprecationVersion = getAnnotation(DeprecatedAttr) flatMap (_ stringArg 1)
// !!! when annotation arguments are not literal strings, but any sort of
// assembly of strings, there is a fair chance they will turn up here not as
// Literal(const) but some arbitrary AST. However nothing in the compiler
@@ -895,7 +895,7 @@ abstract class ClassfileParser {
in.skip(attrLen)
case tpnme.DeprecatedATTR =>
val arg = Literal(Constant("see corresponding Javadoc for more information."))
sym.addAnnotation(AnnotationInfo(definitions.DeprecatedAttr.tpe, List(arg), List()))
sym addAnnotation AnnotationInfo(definitions.DeprecatedAttr.tpe, List(arg, Literal(Constant(""))), Nil)
in.skip(attrLen)
case tpnme.ConstantValueATTR =>
val c = pool.getConstant(in.nextChar)
@@ -543,7 +543,7 @@ abstract class CleanUp extends Transform with ast.TreeDSL {
typedWithPos(tree.pos) {
if (isValueClass(tpe.typeSymbol)) {
if (tpe.typeSymbol == UnitClass)
Select(REF(BoxedUnit_TYPE), BoxedUnit_TYPE)
REF(BoxedUnit_TYPE)
else
Select(REF(boxedModule(tpe.typeSymbol)), nme.TYPE_)
}
Oops, something went wrong.

0 comments on commit a387c9f

Please sign in to comment.